MyBatis从入门到精通:第一章测试代码
package tk.mybatis.simple.mapper;
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;
import org.junit.Test;
import tk.mybatis.simple.model.Country;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
public class CountryMapperTest{
private static SqlSessionFactory sqlSessionFactory;
@BeforeClass
public static void init(){
try{
/*
通过Resources工具类将配置文件读入Reader,再通过SqlSessionFactoryBuilder
建造类对象使用Reader对象创造SqlSessionFactory工厂对象。在SqlSession的创建
过程中,首先解析mybatis-config.xml配置文件,读取配置文件中的mappers配置后
会去读全部的Mapper.xml进行具体的方法的解析。这些解析完成后,SqlSessionFactory
就包含了所有的属性配置和执行SQL的信息。
*/
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void testSelectAll(){
/*
使用时,通过SqlSessionFactory工厂对象获取一个SqlSession。通过
SqlSession的selectList方法查找到CountryMapper.xml中id="selectAll"
的方法,执行SQL查询。
*/
SqlSession sqlSession=getSqlSession();
try{
/*
MyBatis底层使用JDBC执行SQL,获得查询过结果集ResultSet后,根据ResultType
的配置,将结果集映射为Country类型的集合,返回查询结果。这样就得到了最后的查询
结果countryList。
*/
List<Country> countryList = sqlSession.selectList("tk.mybatis.simple.mapper.CountryMapper.selectAll");
printCountryList(countryList);
}finally {
/*
完成所有工作后,一定需要将SqlSession关闭,否则会因为连接没有
关闭,导致数据库连接数过多,造成系统崩溃。
*/
sqlSession.close();
}
}
private void printCountryList(List<Country> countryList){
for(Country country:countryList){
try {
System.out.printf("%-4d%4s%4s\n",
country.getId(),
//new String(country.getCountryname().getBytes("utf-8")),
new String(country.getCountryname().getBytes()),
country.getCountrycode());
} catch (Exception e) {
e.printStackTrace();
}finally {
System.out.println("test");
}
}
}
public SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
}
}
MyBatis从入门到精通:第一章测试代码的更多相关文章
- MyBatis3.2从入门到精通第一章
第一章一.引言mybatis是一个持久层框架,是apache下的顶级项目.mybatis托管到goolecode下,再后来托管到github下.(百度百科有解释)二.概述mybatis让程序将主要精力 ...
- MyBatis从入门到精通(第5章):5.4 Example 介绍
jdk1.8.MyBatis3.4.6.MySQL数据库5.6.45.Eclipse Version: 2019-12 M2 (4.14.0) MyBatis从入门到精通(第5章):MyBatis代码 ...
- MyBatis从入门到精通(第9章):Spring集成MyBatis(上)
MyBatis从入门到精通(第9章):Spring集成MyBatis(上) Spring是一个为了解决企业级Web应用开发过程中面临的复杂性,而被创建的一个非常流行的轻量级框架. mybatis-sp ...
- MyBatis从入门到精通(第5章):MyBatis代码生成器
jdk1.8.MyBatis3.4.6.MySQL数据库5.6.45.Eclipse Version: 2019-12 M2 (4.14.0) MyBatis从入门到精通(第5章):MyBatis代码 ...
- MyBatis从入门到精通(第9章):Spring集成MyBatis(下)
MyBatis从入门到精通(第9章):Spring集成MyBatis(下) springmvc执行流程原理 mybatis-spring 可以帮助我们将MyBatis代码无缝整合到Spring中.使 ...
- MyBatis从入门到精通(第9章):Spring集成MyBatis(中)
MyBatis从入门到精通(第9章):Spring集成MyBatis(中) 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法.应该将应用自身的设计和具体 ...
- MyBatis从入门到精通(九):MyBatis高级结果映射之一对一映射
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解MyBatis中实现查 ...
- MyBatis从入门到精通(十):使用association标签实现嵌套查询
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解使用associati ...
- MyBatis从入门到精通(十一):MyBatis高级结果映射之一对多映射
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解MyBatis中如何使 ...
随机推荐
- SQL 修改主键约束
原文:SQL 修改主键约束 今天在学习数据库的时候遇到一个关于如何修改主键约束的问题,抄录下来以供备用. --修改主键约束用SQL --获取主键约束名字 declare @csname varchar ...
- HTTP RFC7230
https://tools.ietf.org/html/rfc7230 https://tools.ietf.org/html/rfc7231#section-4
- Android零基础入门第77节:Activity任务栈和启动模式
通过前面的学习,Activity的基本使用都已掌握,接下来一起来学习更高级的一些内容. Android采用任务栈(Task)的方式来管理Activity的实例.当启动一个应用时,Android就会为之 ...
- 一定要在commit之前做RAR备份,这样在出问题的时候,可以排除别人代码的干扰
否则找错实在是太痛苦了,根本不知道来自哪里...而这样上面那样做,可以节省时间.
- 我的第一个Chrome插件:天气预报应用
1.Chrome插件开发基础 开发Chrome插件很简单,只要会基本的前台技术HTML.CSS.JS就可以开发了. Chrome插件一般包括两个HTML页面background和popup. ...
- 使用BCP批量导入数据
本文原创,转载请标明出处 BCP 工具的使用 The bulk copy program utility (bcp) bulk copies data between an instance of M ...
- Google地图下载工具代码
// // Google Map Tiles Downloader in C# by coolypf // No rights reserved, neither warranty nor guara ...
- admin组件的使用
导进来的模板不能直接放到static里,要从其他的地方移动到static里,否则pycharm不能自动改变路径2.自关联class Userunfo(models.Model): title=m ...
- python下SQLAlchemy的使用
SQLAlchemy是python中orm常用的框架.支持各种主流的数据库,如SQLite.MySQL.Postgres.Oracle.MS-SQL.SQLServer 和 Firebird. 在安装 ...
- 5个现在就该使用的数组Array方法: indexOf/filter/forEach/map/reduce详解(转)
ECMAScript5标准发布于2009年12月3日,它带来了一些新的,改善现有的Array数组操作的方法.然而,这些新奇的数组方法并没有真正流行起来的,因为当时市场上缺乏支持ES5的浏览器. ...