首页 > 代码库 > 初识mybatis
初识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="http://www.mamicode.com/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="http://www.mamicode.com/${jdbc.driver}"/>
<property name="url" value="http://www.mamicode.com/${jdbc.url}"/>
<property name="username" value="http://www.mamicode.com/${jdbc.username}"/>
<property name="password" value="http://www.mamicode.com/${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="http://www.mamicode.com/LOG4J"/>
<!--懒加载 默认为true -->
<setting name="lazyloadingEnabled" value="http://www.mamicode.com/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="http://www.mamicode.com/${jdbc.driver}"/>
<property name="url" value="http://www.mamicode.com/${jdbc.url}"/>
<property name="username" value="http://www.mamicode.com/${jdbc.username}"/>
<property name="password" value="http://www.mamicode.com/${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="http://www.mamicode.com/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="http://www.mamicode.com/${jdbc.driver}"/>
<property name="url" value="http://www.mamicode.com/${jdbc.url}"/>
<property name="username" value="http://www.mamicode.com/${jdbc.username}"/>
<property name="password" value="http://www.mamicode.com/${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="http://www.mamicode.com/LOG4J"/>
<!--懒加载 默认为true -->
<setting name="lazyloadingEnabled" value="http://www.mamicode.com/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="http://www.mamicode.com/${jdbc.driver}"/>
<property name="url" value="http://www.mamicode.com/${jdbc.url}"/>
<property name="username" value="http://www.mamicode.com/${jdbc.username}"/>
<property name="password" value="http://www.mamicode.com/${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