初识mybatis
MyBatis简介
	1.MyBatis的前身是iBatis,本是Apache的一个开源的项目  后来加入谷歌  之后改名MyBatis
	2.MyBatis是一个数据库持久层(ORM)框架,把实体类和SQL语句之间建立了映射关系,是一种半自动的ORM实现。
搭建MyBatis开发环境
	使用MyBatis的开发步骤:
		1.载需要的MyBatis jar包----》2.部署MyBatis jar包----》3.编写MyBatis配置文件----》4创建实体类和DAO接口
		-----》5.创建SQL映射文件----6.创建DAO接口的实现类--->7.创建测试类
搭建MyBatis开发环境,实现用户表记录数的查询
		1.在MyEclipse中创建工程,导入MyBatis的jar包
		2.创建MyBatis配置文件mybatis-config.xml,配置数据库信息
		3编写实体类User和UserMapper接口
		4.配置映射文件UserMapper.xml
		5.实现UserImpl
		
mybatis的第一个小例子
1.mybatis-config.xml配置
<?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">
<!-- 通过这个配置文件,完成mybatis与数据库的连接      注意节点位置-->
<configuration>
	<!-- 引入jdbc.properties -->
	<properties resource="jdbc.properties"/>
	<!-- 配置mybatis的log实现为LOG4J -->
	<settings>
		<setting name="logImpl" value="LOG4J"/>
	</settings>
	
	<typeAliases>
		<!-- <typeAlias alias="User" type="cn.bdqn.pojo.User"/> -->
		<package name="cn.bdqn.pojo"/>
	</typeAliases>
	<!-- 配置开发环境 default="development"-->
	<environments default="development">
		<environment id="development">
			<!-- 配置事务管理采用JDBC commit rollerback-->
			<transactionManager type="JDBC"/>
			<!-- POOLED:mybatis的数据源,JNDI:基于tomcat的数据源 -->
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}"/>
				<property name="url" value="${jdbc.url}"/>
				<property name="username" value="${jdbc.username}"/>
				<property name="password" value="${jdbc.password}"/>
			</dataSource>
		</environment>
	</environments>
	<!--映射文件  -->
	<mappers>
		<mapper resource="cn/bdqn/dao/UserMapper.xml"/>
	</mappers>
</configuration>
2.jdbc.properties配置
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/testdb
jdbc.username=root
jdbc.password=
3.UserMapper.xml配置
<?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="cn.bdqn.dao.UserMapper">
	<!-- 查询总记录数     通过namespace与id找到对应的sql语句-->
	<select id="count" resultType="int">
		select count(1) from user
	</select>
</mapper>
4测试
package cn.bdqn.test;
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.apache.log4j.Logger;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class UserTest {
	private SqlSession session;
	private Logger logger = Logger.getLogger(UserTest.class);
	@Before
	public void setUp() throws Exception {
		InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
		// 2.创建sqlSessionFactory对象,完成对配置文件读取
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
		// 3.创建sqlSession
		session = factory.openSession();
	}
	@Test
	public void test() {
		int count = 0;// 返回的条数 默认为0
		// 4.调用mapper文件进行数据库操作(调用之前,必须要把mapper文件加入到mybatis-config.xml中)
		count = session.selectOne("cn.bdqn.dao.UserMapper.count");
		logger.debug("test()----->" + count);
		session.close();
		Assert.assertEquals(6, count);
	}
}
				MyBatis               hibernate
		
1.是一个SQL语句映射的框架(工具)		1.主流的ORM框架、提供了从POJO到数据库表的全套映射机制
2.注重POJO与SQL之间的映射关系。		2.会自动生成全套SQL语句
不会为程序员在运行期自动生成SQL
3.自动化程度低、手工映射SQL,3.因为自动化程度高、映射配置复杂,API也相对复杂,灵活性低
灵活性程度高
4.需要开发人员熟练掌握SQL语句 4.开发人员不必关注SQL底层语句开发
MyBatis基本要素
	1.MyBatis的核心对象 sqlSession(作用域request) SqlSessionFactory(作用域application 应该设置成单例)  SqlSessionFactoryBuilder()
	2.configuration.xml全局配置文件
	3.mapper.xml核心映射文件
	sqlSession线程不安全
核心接口和类的结构
SqlSessionFactoryBuilder-------(build)---->SqlSessionFactory----(openSession())--->SqlSession
1.SqlSessionFactoryBuilder
	1.用过即丢,其生命周期只存在于方法体内
	2.可重用SqlSessionFactoryBuilder来创建多个SqlSessionFactory实例
	3.SqlSessionFactoryBuilder类负责构建SqlSessionFactory,并且提供了多个build的重载方法
	
	配置信息以三种形式提供给SqlSessionFactory的build方法:
	InputStream(字节流)、Reader(字符流)、Configuration(类)
	4.构建一个SqlSessionFactory的两种方式:
		1.读取XML文件构造方式
		2.编程构造方式
	SqlSessionFactory
		1.SqlSessionFactory是每个MyBatis应用的核心
		2.单例,存在于整合应用运行时,并且同时只存在一个对象实例
	SqlSession
		1.包含了执行sql所需的所有方法,可以通过SqlSession实例直接运行映射的sql语句
		2.SqlSession对应着一次数据库会话,它的生命周期不是永久的,在每次访问数据库时都需要创建它
		3.每个线程都有自己的SqlSession实例,SqlSession实例是不能被共享,也不是线程安全的
		
		
		注意:关闭SqlSession是非常重要,你必须要确保SqlSession在finally方法体中正常关闭
		
	configuration.xml-系统核心配置文件
		包含数据源和事务管理器等设置和属性信息
		configuration配置
			>properties 可以配置在Java属性文件中
			>settings 修改MyBatis在运行时的行为方式
			>typeAliases 为Java类型命名一个别名(简称)
			>typeHandlers 类型处理器
			>objectFactory 对象工厂
			>plugins 插件
			>environments 环境
			>environment 环境变量
				>transactionManager 事务管理器
				>dataSource 数据源
			>mappers 映射器
			
	MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久化层框架
		
		
		
	mybatis小例子
		mybatis-config.xml:
		<?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">
<!-- 通过这个配置文件,完成mybatis与数据库的连接      注意节点位置-->
<configuration>
	<!-- 引入jdbc.properties -->
	<properties resource="jdbc.properties"/>
	<!-- 配置mybatis的log实现为LOG4J -->
	<settings><!--用来修改MyBatis在运行时的行为方式,主要是Mybatis的一些全局配置属性的设置  -->
		<setting name="logImpl" value="LOG4J"/>
		<!--懒加载  默认为true  -->
		<setting name="lazyloadingEnabled" value="false"/>
	</settings>
	<!--别名设置  -->
	<typeAliases>
		<!-- <typeAlias alias="User" type="cn.bdqn.pojo.User"/> -->
		<package name="cn.bdqn.pojo"/><!--所有的cn.bdqn.pojo都可以取别名  别名就是类名  -->
	</typeAliases>
	<!-- 配置开发环境 default="development" mybatis 可以配置多套运行环境,将sql运行到多个数据库上-->
	<environments default="development"><!--默认的运行环境  -->
		<environment id="development"><!-- 运行环境ID -->
			<!-- 配置事务管理采用JDBC MANAGED(托管) commit rollerback-->
			<transactionManager type="JDBC"/>
			<!-- UNPOOLED POOLED:mybatis的数据源,JNDI:基于tomcat的数据源 -->
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}"/>
				<property name="url" value="${jdbc.url}"/>
				<property name="username" value="${jdbc.username}"/>
				<property name="password" value="${jdbc.password}"/>
			</dataSource>
		</environment>
	</environments>
	<!--引入映射文件  -->
	<mappers>
		<mapper resource="cn/bdqn/dao/UserMapper.xml"/>
	</mappers>
</configuration>
UserMapper.xml:
<?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="cn.bdqn.dao.UserMapper">
	<!-- 查询总记录数     通过namespace与id找到对应的sql语句    resultType:返回类型    parameterType:参数类型 -->
	<select id="count" resultType="int">
		select count(1) from user
	</select>
	<!--增加  -->
	<insert id="add" parameterType="User">
		insert into user(userCode,userName,userPassword) 
		values(#{userCode},#{userName},#{userPassword})
	</insert>
	
	<!-- 修改 -->
	<update id="update" parameterType="User">
		update user set(userCode=#{userCode},userName=#{userName},userPassword=#{userPassword})
		where id=#{id}
	</update>
	<!--删除  -->
	<delete id="delete" parameterType="User">
		delete from user where id=#{id}
	</delete>
	<!--查询  -->
	<select id="getUserList" resultType="User">
		select * from user
	</select>
</mapper>
测试类:
package cn.bdqn.test;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.Before;
import org.junit.Test;
import cn.bdqn.pojo.User;
import cn.bdqn.util.MyBatisUtil;
public class UserTest {
	// private SqlSession session;
	private Logger logger = Logger.getLogger(UserTest.class);
	@Before
	public void setUp() throws Exception {
		// InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
		// 2.创建sqlSessionFactory对象,完成对配置文件读取
		// SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
		// 3.创建sqlSession
		// session = factory.openSession();
	}
	// @Test
	// public void test() {
	// int count = 0;// 返回的条数 默认为0
	// // 4.调用mapper文件进行数据库操作(调用之前,必须要把mapper文件加入到mybatis-config.xml中)
	// count = session.selectOne("cn.bdqn.dao.UserMapper.count");
	// logger.debug("test()----->" + count);
	// session.close();
	// Assert.assertEquals(6, count);
	// }
	@Test
	public void add() {
		SqlSession session = null;
		try {
			User user = new User();
			user.setUserCode("123");
			user.setUserName("haha");
			user.setUserPassword("haha");
			// 获取SqlSession
			session = MyBatisUtil.createSqlSession();
			session.insert("cn.bdqn.dao.UserMapper.add", user);
			session.commit();// 提交
		} catch (Exception e) {
			session.rollback();// 抛异常 回滚
		} finally {
			// 释放资源
			MyBatisUtil.closeSqlSession(session);
}
}
	@Test
	public void getUserListTest() {
		SqlSession session = null;
		try {
			List<User> list = null;
			// 获取SqlSession
			session = MyBatisUtil.createSqlSession();
			list = session.selectList("cn.bdqn.dao.UserMapper.getUserList");
			for (User user : list) {
				logger.debug(user.getUserName());
			}
		} catch (Exception e) {
		} finally {
			MyBatisUtil.closeSqlSession(session);
		}
	}
}
用接口:
package cn.bdqn.dao;
import java.util.List;
import cn.bdqn.pojo.User;
/**
 * 
 * @author dll
 *
 */
public interface UserMapper {
	// 查询总记录数
	public int count();
	// 增加
	public void add(User user);
	// 修改
	public void update(User user);
	// 删除
	public void delete(User user);
	// 查询
	public List<User> getUserList();
}
mapper的测试类:
package cn.bdqn.test;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.Before;
import org.junit.Test;
import cn.bdqn.dao.UserMapper;
import cn.bdqn.pojo.User;
import cn.bdqn.util.MyBatisUtil;
public class MapperTest {
	// private SqlSession session;
	private Logger logger = Logger.getLogger(UserTest.class);
	@Before
	public void setUp() throws Exception {
		// InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
		// 2.创建sqlSessionFactory对象,完成对配置文件读取
		// SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
		// 3.创建sqlSession
		// session = factory.openSession();
	}
	// @Test
	// public void test() {
	// int count = 0;// 返回的条数 默认为0
	// // 4.调用mapper文件进行数据库操作(调用之前,必须要把mapper文件加入到mybatis-config.xml中)
	// count = session.selectOne("cn.bdqn.dao.UserMapper.count");
	// logger.debug("test()----->" + count);
	// session.close();
	// Assert.assertEquals(6, count);
	// }
	@Test
	public void add() {
		SqlSession session = null;
		try {
			User user = new User();
			user.setUserCode("12345");
			user.setUserName("hehe");
			user.setUserPassword("hehe");
			// 获取SqlSession
			session = MyBatisUtil.createSqlSession();
			session.getMapper(UserMapper.class).add(user);
			session.commit();// 提交
		} catch (Exception e) {
			session.rollback();// 抛异常 回滚
		} finally {
			// 释放资源
			MyBatisUtil.closeSqlSession(session);
}
}
	@Test
	public void getUserListTest() {
		SqlSession session = null;
		try {
			List<User> list = null;
			// 获取SqlSession
			session = MyBatisUtil.createSqlSession();
			list = session.getMapper(UserMapper.class).getUserList();
			for (User user : list) {
				logger.debug(user.getUserName());
			}
		} catch (Exception e) {
		} finally {
			MyBatisUtil.closeSqlSession(session);
		}
}
}
		
		
		
		
		
		
		
		
		
		
		
		
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
MyBatis简介
	1.MyBatis的前身是iBatis,本是Apache的一个开源的项目  后来加入谷歌  之后改名MyBatis
	2.MyBatis是一个数据库持久层(ORM)框架,把实体类和SQL语句之间建立了映射关系,是一种半自动的ORM实现。
搭建MyBatis开发环境
	使用MyBatis的开发步骤:
		1.载需要的MyBatis jar包----》2.部署MyBatis jar包----》3.编写MyBatis配置文件----》4创建实体类和DAO接口
		-----》5.创建SQL映射文件----6.创建DAO接口的实现类--->7.创建测试类
搭建MyBatis开发环境,实现用户表记录数的查询
		1.在MyEclipse中创建工程,导入MyBatis的jar包
		2.创建MyBatis配置文件mybatis-config.xml,配置数据库信息
		3编写实体类User和UserMapper接口
		4.配置映射文件UserMapper.xml
		5.实现UserImpl
		
mybatis的第一个小例子
1.mybatis-config.xml配置
<?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">
<!-- 通过这个配置文件,完成mybatis与数据库的连接      注意节点位置-->
<configuration>
	<!-- 引入jdbc.properties -->
	<properties resource="jdbc.properties"/>
	<!-- 配置mybatis的log实现为LOG4J -->
	<settings>
		<setting name="logImpl" value="LOG4J"/>
	</settings>
	
	<typeAliases>
		<!-- <typeAlias alias="User" type="cn.bdqn.pojo.User"/> -->
		<package name="cn.bdqn.pojo"/>
	</typeAliases>
	<!-- 配置开发环境 default="development"-->
	<environments default="development">
		<environment id="development">
			<!-- 配置事务管理采用JDBC commit rollerback-->
			<transactionManager type="JDBC"/>
			<!-- POOLED:mybatis的数据源,JNDI:基于tomcat的数据源 -->
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}"/>
				<property name="url" value="${jdbc.url}"/>
				<property name="username" value="${jdbc.username}"/>
				<property name="password" value="${jdbc.password}"/>
			</dataSource>
		</environment>
	</environments>
	<!--映射文件  -->
	<mappers>
		<mapper resource="cn/bdqn/dao/UserMapper.xml"/>
	</mappers>
</configuration>
2.jdbc.properties配置
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/testdb
jdbc.username=root
jdbc.password=
3.UserMapper.xml配置
<?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="cn.bdqn.dao.UserMapper">
	<!-- 查询总记录数     通过namespace与id找到对应的sql语句-->
	<select id="count" resultType="int">
		select count(1) from user
	</select>
</mapper>
4测试
package cn.bdqn.test;
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.apache.log4j.Logger;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class UserTest {
	private SqlSession session;
	private Logger logger = Logger.getLogger(UserTest.class);
	@Before
	public void setUp() throws Exception {
		InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
		// 2.创建sqlSessionFactory对象,完成对配置文件读取
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
		// 3.创建sqlSession
		session = factory.openSession();
	}
	@Test
	public void test() {
		int count = 0;// 返回的条数 默认为0
		// 4.调用mapper文件进行数据库操作(调用之前,必须要把mapper文件加入到mybatis-config.xml中)
		count = session.selectOne("cn.bdqn.dao.UserMapper.count");
		logger.debug("test()----->" + count);
		session.close();
		Assert.assertEquals(6, count);
	}
}
				MyBatis               hibernate
		
1.是一个SQL语句映射的框架(工具)		1.主流的ORM框架、提供了从POJO到数据库表的全套映射机制
2.注重POJO与SQL之间的映射关系。		2.会自动生成全套SQL语句
不会为程序员在运行期自动生成SQL
3.自动化程度低、手工映射SQL,3.因为自动化程度高、映射配置复杂,API也相对复杂,灵活性低
灵活性程度高
4.需要开发人员熟练掌握SQL语句 4.开发人员不必关注SQL底层语句开发
MyBatis基本要素
	1.MyBatis的核心对象 sqlSession(作用域request) SqlSessionFactory(作用域application 应该设置成单例)  SqlSessionFactoryBuilder()
	2.configuration.xml全局配置文件
	3.mapper.xml核心映射文件
	sqlSession线程不安全
核心接口和类的结构
SqlSessionFactoryBuilder-------(build)---->SqlSessionFactory----(openSession())--->SqlSession
1.SqlSessionFactoryBuilder
	1.用过即丢,其生命周期只存在于方法体内
	2.可重用SqlSessionFactoryBuilder来创建多个SqlSessionFactory实例
	3.SqlSessionFactoryBuilder类负责构建SqlSessionFactory,并且提供了多个build的重载方法
	
	配置信息以三种形式提供给SqlSessionFactory的build方法:
	InputStream(字节流)、Reader(字符流)、Configuration(类)
	4.构建一个SqlSessionFactory的两种方式:
		1.读取XML文件构造方式
		2.编程构造方式
	SqlSessionFactory
		1.SqlSessionFactory是每个MyBatis应用的核心
		2.单例,存在于整合应用运行时,并且同时只存在一个对象实例
	SqlSession
		1.包含了执行sql所需的所有方法,可以通过SqlSession实例直接运行映射的sql语句
		2.SqlSession对应着一次数据库会话,它的生命周期不是永久的,在每次访问数据库时都需要创建它
		3.每个线程都有自己的SqlSession实例,SqlSession实例是不能被共享,也不是线程安全的
		
		
		注意:关闭SqlSession是非常重要,你必须要确保SqlSession在finally方法体中正常关闭
		
	configuration.xml-系统核心配置文件
		包含数据源和事务管理器等设置和属性信息
		configuration配置
			>properties 可以配置在Java属性文件中
			>settings 修改MyBatis在运行时的行为方式
			>typeAliases 为Java类型命名一个别名(简称)
			>typeHandlers 类型处理器
			>objectFactory 对象工厂
			>plugins 插件
			>environments 环境
			>environment 环境变量
				>transactionManager 事务管理器
				>dataSource 数据源
			>mappers 映射器
			
	MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久化层框架
		
		
		
	mybatis小例子
		mybatis-config.xml:
		<?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">
<!-- 通过这个配置文件,完成mybatis与数据库的连接      注意节点位置-->
<configuration>
	<!-- 引入jdbc.properties -->
	<properties resource="jdbc.properties"/>
	<!-- 配置mybatis的log实现为LOG4J -->
	<settings><!--用来修改MyBatis在运行时的行为方式,主要是Mybatis的一些全局配置属性的设置  -->
		<setting name="logImpl" value="LOG4J"/>
		<!--懒加载  默认为true  -->
		<setting name="lazyloadingEnabled" value="false"/>
	</settings>
	<!--别名设置  -->
	<typeAliases>
		<!-- <typeAlias alias="User" type="cn.bdqn.pojo.User"/> -->
		<package name="cn.bdqn.pojo"/><!--所有的cn.bdqn.pojo都可以取别名  别名就是类名  -->
	</typeAliases>
	<!-- 配置开发环境 default="development" mybatis 可以配置多套运行环境,将sql运行到多个数据库上-->
	<environments default="development"><!--默认的运行环境  -->
		<environment id="development"><!-- 运行环境ID -->
			<!-- 配置事务管理采用JDBC MANAGED(托管) commit rollerback-->
			<transactionManager type="JDBC"/>
			<!-- UNPOOLED POOLED:mybatis的数据源,JNDI:基于tomcat的数据源 -->
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}"/>
				<property name="url" value="${jdbc.url}"/>
				<property name="username" value="${jdbc.username}"/>
				<property name="password" value="${jdbc.password}"/>
			</dataSource>
		</environment>
	</environments>
	<!--引入映射文件  -->
	<mappers>
		<mapper resource="cn/bdqn/dao/UserMapper.xml"/>
	</mappers>
</configuration>
UserMapper.xml:
<?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="cn.bdqn.dao.UserMapper">
	<!-- 查询总记录数     通过namespace与id找到对应的sql语句    resultType:返回类型    parameterType:参数类型 -->
	<select id="count" resultType="int">
		select count(1) from user
	</select>
	<!--增加  -->
	<insert id="add" parameterType="User">
		insert into user(userCode,userName,userPassword) 
		values(#{userCode},#{userName},#{userPassword})
	</insert>
	
	<!-- 修改 -->
	<update id="update" parameterType="User">
		update user set(userCode=#{userCode},userName=#{userName},userPassword=#{userPassword})
		where id=#{id}
	</update>
	<!--删除  -->
	<delete id="delete" parameterType="User">
		delete from user where id=#{id}
	</delete>
	<!--查询  -->
	<select id="getUserList" resultType="User">
		select * from user
	</select>
</mapper>
测试类:
package cn.bdqn.test;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.Before;
import org.junit.Test;
import cn.bdqn.pojo.User;
import cn.bdqn.util.MyBatisUtil;
public class UserTest {
	// private SqlSession session;
	private Logger logger = Logger.getLogger(UserTest.class);
	@Before
	public void setUp() throws Exception {
		// InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
		// 2.创建sqlSessionFactory对象,完成对配置文件读取
		// SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
		// 3.创建sqlSession
		// session = factory.openSession();
	}
	// @Test
	// public void test() {
	// int count = 0;// 返回的条数 默认为0
	// // 4.调用mapper文件进行数据库操作(调用之前,必须要把mapper文件加入到mybatis-config.xml中)
	// count = session.selectOne("cn.bdqn.dao.UserMapper.count");
	// logger.debug("test()----->" + count);
	// session.close();
	// Assert.assertEquals(6, count);
	// }
	@Test
	public void add() {
		SqlSession session = null;
		try {
			User user = new User();
			user.setUserCode("123");
			user.setUserName("haha");
			user.setUserPassword("haha");
			// 获取SqlSession
			session = MyBatisUtil.createSqlSession();
			session.insert("cn.bdqn.dao.UserMapper.add", user);
			session.commit();// 提交
		} catch (Exception e) {
			session.rollback();// 抛异常 回滚
		} finally {
			// 释放资源
			MyBatisUtil.closeSqlSession(session);
}
}
	@Test
	public void getUserListTest() {
		SqlSession session = null;
		try {
			List<User> list = null;
			// 获取SqlSession
			session = MyBatisUtil.createSqlSession();
			list = session.selectList("cn.bdqn.dao.UserMapper.getUserList");
			for (User user : list) {
				logger.debug(user.getUserName());
			}
		} catch (Exception e) {
		} finally {
			MyBatisUtil.closeSqlSession(session);
		}
	}
}
用接口:
package cn.bdqn.dao;
import java.util.List;
import cn.bdqn.pojo.User;
/**
 * 
 * @author dll
 *
 */
public interface UserMapper {
	// 查询总记录数
	public int count();
	// 增加
	public void add(User user);
	// 修改
	public void update(User user);
	// 删除
	public void delete(User user);
	// 查询
	public List<User> getUserList();
}
mapper的测试类:
package cn.bdqn.test;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.Before;
import org.junit.Test;
import cn.bdqn.dao.UserMapper;
import cn.bdqn.pojo.User;
import cn.bdqn.util.MyBatisUtil;
public class MapperTest {
	// private SqlSession session;
	private Logger logger = Logger.getLogger(UserTest.class);
	@Before
	public void setUp() throws Exception {
		// InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
		// 2.创建sqlSessionFactory对象,完成对配置文件读取
		// SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
		// 3.创建sqlSession
		// session = factory.openSession();
	}
	// @Test
	// public void test() {
	// int count = 0;// 返回的条数 默认为0
	// // 4.调用mapper文件进行数据库操作(调用之前,必须要把mapper文件加入到mybatis-config.xml中)
	// count = session.selectOne("cn.bdqn.dao.UserMapper.count");
	// logger.debug("test()----->" + count);
	// session.close();
	// Assert.assertEquals(6, count);
	// }
	@Test
	public void add() {
		SqlSession session = null;
		try {
			User user = new User();
			user.setUserCode("12345");
			user.setUserName("hehe");
			user.setUserPassword("hehe");
			// 获取SqlSession
			session = MyBatisUtil.createSqlSession();
			session.getMapper(UserMapper.class).add(user);
			session.commit();// 提交
		} catch (Exception e) {
			session.rollback();// 抛异常 回滚
		} finally {
			// 释放资源
			MyBatisUtil.closeSqlSession(session);
}
}
	@Test
	public void getUserListTest() {
		SqlSession session = null;
		try {
			List<User> list = null;
			// 获取SqlSession
			session = MyBatisUtil.createSqlSession();
			list = session.getMapper(UserMapper.class).getUserList();
			for (User user : list) {
				logger.debug(user.getUserName());
			}
		} catch (Exception e) {
		} finally {
			MyBatisUtil.closeSqlSession(session);
		}
}
}
		
		
		
		
		
		
		
		
		
		
		
		
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号