定义bean,对应数据库中的表
package com.atChina.bean;
public class Employee {
private Integer deptno;
private String dname;
private String loc;
public int getDeptno() {
return deptno;
}
public void setDeptno(int deptno) {
this.deptno = deptno;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public String getLoc() {
return loc;
}
@Override
public String toString() {
return "Employee [deptno=" + deptno + ", dname=" + dname + ", loc="
+ loc + "]";
}
public void setLoc(String loc) {
this.loc = loc;
}
}
sql映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace是一个名称空间,要自定义 -->
<mapper namespace="com.atChina.mybatis.EmployeeMapper">
<!-- id:唯一标识
resultType: 返回值类型
#{deptno}:参数 -->
<select
id="selectEmp"
resultType="com.atChina.bean.Employee">
select * from DEPTTEST where deptno = #{deptno}
</select>
</mapper>
全局配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property
name="driver"
value="oracle.jdbc.OracleDriver" />
<property
name="url"
value="jdbc:oracle:thin:@localhost:1521:orcl" />
<property
name="username"
value="scott" />
<property
name="password"
value="123456" />
</dataSource>
</environment>
</environments>
<!-- 把sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中 -->
<mappers>
<mapper resource="EmployeeMapper.xml" />
</mappers>
</configuration>
执行sql,测试代码:
package com.atChina.test;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import com.atChina.bean.Employee;
public class MyBatisTest {
/*
* 1.根据xml配置文件(全局配置文件),创建一个SqlSessionFactory对象
* 有数据源一些运行环境信息
* 2.sql映射文件:配置了每一个sql,以及sql的封装规则等
* 3.将sql映射文件注册到全局文件中
* 4.写代码
* 1).根据全局配置文件得到 SqlSessionFactory
* 2).使用sqlSession工厂,获取到sqlSession对象,使用他来执行增删改查
* 一个sqlSession就是代表和数据库的一次会话,使用完要关闭sqlSession
* 3).使用sql的唯一标识来告诉mybatis来执行哪个sql,sql都是保存在sql映射文件中的.
*/
@Test
public void test() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession openSession = sqlSessionFactory.openSession();
try{
// 命名空间.id,这样别的配置文件里有同名的id,程序也不报错
Employee em = openSession.selectOne("com.atChina.mybatis.EmployeeMapper.selectEmp", 10);
System.out.println(em);
}finally{
// 关闭
openSession.close();
}
}
}
执行结果如下:
[CateringLog] 2019-03-25 17:16:07,227 DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource - Created connection 1304140376.
[CateringLog] 2019-03-25 17:16:07,229 DEBUG com.atChina.mybatis.EmployeeMapper.selectEmp - ooo Using Connection [oracle.jdbc.driver.T4CConnection@4dbb9a58]
[CateringLog] 2019-03-25 17:16:07,229 DEBUG com.atChina.mybatis.EmployeeMapper.selectEmp - ==> Preparing: select * from DEPTTEST where deptno = ?
[CateringLog] 2019-03-25 17:16:07,306 DEBUG com.atChina.mybatis.EmployeeMapper.selectEmp - ==> Parameters: 10(Integer)
[CateringLog] 2019-03-25 17:16:07,338 DEBUG com.atChina.mybatis.EmployeeMapper.selectEmp - <== Columns: DEPTNO, DNAME, LOC
[CateringLog] 2019-03-25 17:16:07,342 DEBUG com.atChina.mybatis.EmployeeMapper.selectEmp - <== Row: 10, ACCOUNTING, NEW YORK
Employee [deptno=10, dname=ACCOUNTING, loc=NEW YORK]