mybatis 通过配置父类数据源连接和关闭数据,进行junit单元测试
来源:https://blog.csdn.net/Bigbig_lyx/article/details/80646005
解决问题,单元测试没经过单独配置,每个测试方法中要添加配置数据源
一:配置父类
import java.io.IOException;
import java.io.Reader; 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.BeforeClass; /**
* 提供配置数据源连接和关闭数据连接
*/
public class BaseMapper { private static SqlSessionFactory sqlSessionFactory;
@BeforeClass
public static void init(){
try{
Reader reader=Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
reader.close();
}catch(IOException ignore){
ignore.printStackTrace();
}
} public SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
} }
一:新建单元测试类UserMapperTestEx.java,继承自测试基类BaseMapperTest.java
package tk.mybatis.simple.mapper; import java.lang.reflect.Proxy;
import java.util.Date;
import java.util.List; import org.apache.ibatis.session.SqlSession;
import org.junit.Test; import junit.framework.Assert;
import tk.mybatis.simple.model.SysRole;
import tk.mybatis.simple.model.SysUser; public class UserMapperTestEx extends BaseMapperTest{ @Test
public void testSelectById(){ SqlSession sqlSession=getSqlSession();
try {
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
SysUser user = userMapper.selectById(1l);
printCountryList(user);
} finally {
// TODO: handle finally clause
sqlSession.close();
}
} private void printCountryList(SysUser user){
System.out.printf("%-4d%4s%4s\n",
user.getId(),
user.getUserEmail(),
user.getUserPassword(),
user.getUserEmail(),
user.getUserInfo(),
user.getHeadImg(),
user.getCreateTime()
);
} @Test
public void selectById(){ SqlSession sqlSession=getSqlSession();
try {
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
SysUser user = userMapper.selectById(1l);
Assert.assertNotNull(user);
Assert.assertEquals("admin", user.getUserName());
} finally {
// TODO: handle finally clause
sqlSession.close();
}
} @Test
public void selectByAll(){ SqlSession sqlSession=getSqlSession();
try {
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
List<SysUser> userList = userMapper.selectAll();
Assert.assertNotNull(userList);
Assert.assertTrue(userList.size()>0);
} finally {
// TODO: handle finally clause
sqlSession.close();
}
} @Test
public void selectRolesByUserId1(){ SqlSession sqlSession=getSqlSession();
try {
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
List<SysRole> roleList = userMapper.selectRolesByUserId1(1l);
Assert.assertNotNull(roleList);
for(SysRole role:roleList){
System.out.println(role.toString1());
}
} finally {
// TODO: handle finally clause
sqlSession.close();
}
} @Test
public void selectRolesByUserId2(){ SqlSession sqlSession=getSqlSession();
try {
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
List<SysRole> roleList = userMapper.selectRolesByUserId2(1l);
for(SysRole role:roleList){
System.out.println(role.toString2());
}
} finally {
// TODO: handle finally clause
sqlSession.close();
}
} @Test
public void insert(){ SqlSession sqlSession=getSqlSession();
try {
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
SysUser user=new SysUser();
user.setUserName("liuyx");
user.setUserPassword("eazytec@123");
user.setUserEmail("liuyexiang@byosoft.com.cn");
user.setUserInfo("liuyx info");
user.setHeadImg(new byte[]{1,2,3,4,5,6,7,8,9,0});
user.setCreateTime(new Date());
int result=userMapper.insert(user);
Assert.assertEquals(1, result);
Assert.assertNull(user.getId());
} finally {
// TODO: handle finally clause
//为了不影响其他操作,设置为回滚,数据库自增长序列仍在进行,
//默认的sqlSessionFactory.openSession()是不自动提交的
//不手动执行commit就不会提交到数据库中
//sqlSession.rollback();
sqlSession.commit();
sqlSession.close();
}
} @Test
public void insert2(){ SqlSession sqlSession=getSqlSession();
try {
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
SysUser user=new SysUser();
user.setUserName("liuyx");
user.setUserPassword("eazytec@123");
user.setUserEmail("liuyexiang@byosoft.com.cn");
user.setUserInfo("liuyx info");
user.setHeadImg(new byte[]{1,2,3,4,5,6,7,8,9,0});
user.setCreateTime(new Date());
int result=userMapper.insert2(user);
Assert.assertEquals(1, result);
Assert.assertNotNull(user.getId());
} finally {
// TODO: handle finally clause
//sqlSession.rollback();
sqlSession.commit();
sqlSession.close();
}
} @Test
public void update(){
SqlSession sqlSession=getSqlSession(); try {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
SysUser user = userMapper.selectById(1001l);
System.out.println("获取id为1001的用户userName,更新前为:" + user.getUserName());
user.setUserName("test" + new Date().toString());
user.setUserEmail("test@byosoft.com.cn");
int result = userMapper.updateById(user);
user = userMapper.selectById(user.getId());
System.out.println("获取id为1001的用户userName为,更新后为:" + user.getUserName());
} finally {
// TODO: handle finally clause
sqlSession.commit();
sqlSession.close();
}
} @Test
public void delete(){
SqlSession sqlSession=getSqlSession(); try {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//int result = userMapper.deleteById(1003l);
int result2=userMapper.deleteByUser(userMapper.selectById(1004l));
} finally {
// TODO: handle finally clause
sqlSession.commit();
sqlSession.close();
}
} /**
* 多参数sql
*/
@Test
public void selectRolesByUserIdAndRoleEnabled(){ SqlSession sqlSession=getSqlSession();
try {
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
List<SysRole> roleList = userMapper.selectRolesByUserIdAndRoleEnabled(1l, 1,"admin","test");
for(SysRole role:roleList){
System.out.println(role.toString1());
}
} finally {
// TODO: handle finally clause
sqlSession.close();
}
} /**
* 简单实现动态代理
*/
@Test
public void testProxy(){
SqlSession sqlSession=getSqlSession();
MyMapperProxy userMapperProxy=new MyMapperProxy(UserMapper.class, sqlSession);
UserMapper userMapper=(UserMapper) Proxy.newProxyInstance(
Thread.currentThread().getContextClassLoader(),
new Class[] {UserMapper.class},
userMapperProxy
);
System.out.println("testProxy");
List<SysUser> user=userMapper.selectAll();
}
}
mybatis 通过配置父类数据源连接和关闭数据,进行junit单元测试的更多相关文章
- springboot入门系列(四):SpringBoot和Mybatis配置多数据源连接多个数据库
SpringBoot和Mybatis配置多数据源连接多个数据库 目前业界操作数据库的框架一般是 Mybatis,但在很多业务场景下,我们需要在一个工程里配置多个数据源来实现业务逻辑.在SpringBo ...
- 【Mybatis】MyBatis之配置自定义数据源(十一)
本例是在[Mybatis]MyBatis之配置多数据源(十)的基础上进行拓展,查看本例请先学习第十章 实现原理 1.扩展Spring的AbstractRoutingDataSource抽象类(该类充当 ...
- [教程] Spring+Mybatis环境配置多数据源
一.简要概述 在做项目的时候遇到需要从两个数据源获取数据,项目使用的Spring + Mybatis环境,看到网上有一些关于多数据源的配置,自己也整理学习一下,然后自动切换实现从不同的数据源获取数据功 ...
- springboot 2.1.3 + mybatis + druid配置多数据源
在一些大型的项目中,通常会选择多数据库来满足一些业务需求,此处讲解使用springboot.mybatis和druid来配置多数据源 1.依赖配置 pom文件引入相关依赖 <dependency ...
- SpringBoot系列七:SpringBoot 整合 MyBatis(配置 druid 数据源、配置 MyBatis、事务控制、druid 监控)
1.概念:SpringBoot 整合 MyBatis 2.背景 SpringBoot 得到最终效果是一个简化到极致的 WEB 开发,但是只要牵扯到 WEB 开发,就绝对不可能缺少数据层操作,所有的开发 ...
- 【Mybatis】MyBatis之配置多数据源(十)
在做项目的过程中,有时候一个数据源是不够,那么就需要配置多个数据源.本例介绍mybatis多数据源配置 前言 一般项目单数据源,使用流程如下: 单个数据源绑定给sessionFactory,再在Dao ...
- Spring系列 之数据源的配置 数据库 数据源 连接池的区别
Spring系列之数据源的配置 数据源,连接池,数据库三者的区别 连接池:这个应该都学习过,比如c3p0,druid等等,连接池的作用是为了提高程序的效率,因为频繁的去创建,关闭数据库连接,会对性能有 ...
- Confluence 6 新 Confluence 安装配置一个数据源连接
如果在你的 Tomcat 中配置了数据源,并且Confluence 设置指南在安装的时候检测到这个配置的时候,配置数据源的选项将会提供给你进行配置.入股你希望使用数据源,请参考下面的配置. 1. 停止 ...
- Spring Boot + MyBatis + Pagehelper 配置多数据源
前言: 本文为springboot结合mybatis配置多数据源,在项目当中很多情况是使用主从数据源来读写分离,还有就是操作多库,本文介绍如何一个项目同时使用2个数据源. 也希望大家带着思考去学习!博 ...
随机推荐
- LeetCode 858 镜面反射
题目 有一个特殊的正方形房间,每面墙上都有一面镜子.除西南角以外,每个角落都放有一个接受器,编号为 0, 1,以及 2. 正方形房间的墙壁长度为 p,一束激光从西南角射出,首先会与东墙相遇,入射点到接 ...
- ubuntu 18.04.1安装hadoop3.1.2
前提,虚拟机安装 见https://www.cnblogs.com/cxl-blog/p/11363183.html 一.按照https://blog.csdn.net/MastetHuang/art ...
- Maven的学习之路1
对于下列这段Maven的命令行有不懂之处,在zgmzyr的博客上得到了解释.非常感谢这位博友,写在自己的随笔上以便查看和修改. 1. 创建项目 $ mvn archetype:generate -Dg ...
- 机器学习-TensorFlow应用之classification和ROC curve
概述 前面几节讲的是linear regression的内容,这里咱们再讲一个非常常用的一种模型那就是classification,classification顾名思义就是分类的意思,在实际的情况是非 ...
- Redis(八):zset/zadd/zrange/zrembyscore 命令源码解析
前面几篇文章,我们完全领略了redis的string,hash,list,set数据类型的实现方法,相信对redis已经不再神秘. 本篇我们将介绍redis的最后一种数据类型: zset 的相关实现. ...
- Linux 常用工具openssh之ssh-add
前言 ssh-add命令是把专用密钥添加到ssh-agent的高速缓存中,从而提高ssh的认证速度 语法 ssh-add [-cDdLlXx] [-t life] [file ...] 选项 -D:删 ...
- Typora常用快捷键
目录 无序列表:输入-之后输入空格 有序列表:输入数字+"."之后输入空格 任务列表:-[空格]空格 文字 标题:ctrl+数字 表格:ctrl+t 生成目录:按回车 选中一整行: ...
- ElasticSearch入门篇Ⅰ --- ES核心知识概括
C01.什么是Elasticsearch 1.什么是搜索 垂直搜索(站内搜索) 互联网的搜索:电商网站,招聘网站,各种app IT系统的搜索:OA软件,办公自动化软件,会议管理,员工管理,后台管理系 ...
- 从App.config中读取数据库连接字符串
1.首先在App.config文件中添加如下代码注意<connectionStrings>插入位置. <connectionStrings> <add name=&quo ...
- Ubuntu 入门笔记(1)
在阿里云上申请了一个云服务器,开始学习Linux.我选择的是Ubuntu 14.04 ,在登录时就绕了我好长时间,输入用户名是有显示的,但是输入密码就没有反应了,查找了之后才发现原来这是Ubuntu ...