mybaits一:初步认识mybatis

 定义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;
	}
}

 

mybaits一:初步认识mybatis

 

 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 [[email protected]]
[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]