上一节通过mybatis-generator自动生成了CategoryMapper接口,pojo等类,接下来我们写几个简单的测试来进行调用。

一、添加依赖

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>

二、测试SqlSessionFactroy

首先我们看下怎样实例化sqlSessionFactory,然后获取CategoryMapper。

1.新建文件resources/properties/config.property,用来保存数据库连接串和账号。

data_source_url=jdbc:mysql://localhost:3306/store
data_source_username=root
data_source_password=root

2.在resources/spring目录新建spring的配置文件applicationContext.xml

3.配置数据连接。 在applicationContext.xml中添加bean节点dataSource,详细配置参考:http://www.oschina.net/p/druid

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="url" value="${data_source_url}"/>
<property name="username" value="${data_source_username}"/>
<property name="password" value="${data_source_password}"/>
<!-- 初始化连接大小 -->
<property name="initialSize" value="1"/>
<!-- 初始化连接池最大使用连接数量 -->
<property name="maxActive" value="20"/>
<!-- 初始化连接池最小空闲 -->
<property name="minIdle" value="1"/>
<!-- 获取连接最大等待时间,单位毫秒-->
<property name="maxWait" value="60000"/>
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000"/>
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="25200000"/>
<!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
<!--如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。分库分表较多的数据库,建议配置为false。-->
<property name="poolPreparedStatements" value="false"/>
<property name="maxPoolPreparedStatementPerConnectionSize" value="20"/>
<property name="validationQuery" value="SELECT 1"/>
<property name="testWhileIdle" value="true"/>
<property name="testOnBorrow" value="false"/>
<property name="testOnReturn" value="false"/>
<!-- 打开removeAbandoned功能 -->
<property name="removeAbandoned" value="true"/>
<!-- 1800秒,也就是30分钟 -->
<property name="removeAbandonedTimeout" value="1800"/>
<!-- 关闭abanded连接时输出错误日志 -->
<property name="logAbandoned" value="true"/>
</bean>

4.然后配置bean sqlSessionFactory和sqlSession。

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" scope="prototype">
<constructor-arg index="0" ref="sqlSessionFactory"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="com.data.pojo"/>
<property name="mapperLocations" value="classpath*:mapper/CategoryMapper.xml"></property>
<property name="configLocation" value="classpath:config/mybatis-config.xml"></property>
</bean>

4.测试

有了上面的配置,就可以直接以注解的方式实例化SqlSessionFactory.

@ContextConfiguration(locations = "classpath:spring/applicationContext.xml")
@RunWith(SpringJUnit4ClassRunner.class)
public class SqlSessionTests {
@Autowired
private SqlSession sqlSession; @Test
public void testSqlSession(){
CategoryMapper categoryMapper= sqlSession.getMapper(CategoryMapper.class);
Category category= categoryMapper.selectByPrimaryKey(1);
if(category==null){
System.out.println("Do not exist");
}
else{
System.out.println(category.getName());
}
}
}

三、测试直接实例化CategoryMapper

更加简洁的方式是直接通过注解实例化CategoryMapper

1.在applicationContext.xml新增bean节点

<!-- scan for mappers and let them be autowired -->
<mybatis:scan base-package="com.data.mapper"/>
<!-- mapper 接口所在包名,Spring会自动查找其下的类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.data.mapper"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>

2.直接给CategoryMapper添加@Resource注解,来进行实例化。

@ContextConfiguration(locations = "classpath:spring/applicationContext.xml")
@RunWith(SpringJUnit4ClassRunner.class)
public class CategoryDaoTests {
@Resource
CategoryMapper categoryMapper; @Test
public void test_selectById(){
Category category=categoryMapper.selectByPrimaryKey(1);
System.out.println(category.getName());//Fish
} @Test
public void test_count(){
CategoryExample example=new CategoryExample();
long result=categoryMapper.countByExample(example);
System.out.println(result);
} @Test
public void test_insert(){
System.out.println("before insert:count "+categoryMapper.countByExample(new CategoryExample())); Category category=new Category();
category.setName("Test");
categoryMapper.insert(category); System.out.println("after insert:count "+categoryMapper.countByExample(new CategoryExample())); } @Test
public void test_delete(){
System.out.println("before insert:count "+categoryMapper.countByExample(new CategoryExample())); CategoryExample example=new CategoryExample();
example.createCriteria().andNameEqualTo("Test");
int result=categoryMapper.deleteByExample(example);
System.out.println("删除条数:"+result); System.out.println("after insert:count "+categoryMapper.countByExample(new CategoryExample())); }
}

JAVA入门[8]-测试mybatis的更多相关文章

  1. JAVA入门--目录

    在此记录自己的JAVA入门笔记,备忘 JAVA入门[1]--安装JDK JAVA入门[2]-安装Maven JAVA入门[3]—Spring依赖注入 JAVA入门[4]-IntelliJ IDEA配置 ...

  2. JAVA入门[9]-mybatis多表关联查询

    概要 本节要实现的是多表关联查询的简单demo.场景是根据id查询某商品分类信息,并展示该分类下的商品列表. 一.Mysql测试数据 新建表Category(商品分类)和Product(商品),并插入 ...

  3. Java基础-SSM之mybatis快速入门篇

    Java基础-SSM之mybatis快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 其实你可能会问什么是SSM,简单的说就是spring mvc + Spring + m ...

  4. java web开发入门七(mybatis)基于intellig idea

    mybatis 一. 入门开发步骤 1.导入相关jar包 mybatis3.4.2核心开发包 asm-5.1.jarcglib-3.2.4.jarcommons-logging-1.1.3.jarlo ...

  5. 测试人员学Java入门指南

    目标读者 本指南特别适合有Python基础的同学学习Java入门,对于没有任何编程经验的同学可能会存在困难. 为什么测试人员要学Java 选择Java,应该不错.TesterHome测试论坛知名大佬基 ...

  6. java入门到秃路线导航,元芳你怎么看?【教学视频+博客+书籍整理】

    目录 一.Java基础 二.关于JavaWeb基础 三.关于数据库 四.关于ssm框架 五.关于数据结构与算法 六.关于开发工具idea 七.关于项目管理工具Mawen.Git.SVN.Gradle. ...

  7. [刘阳Java]_快速搭建MyBatis环境_第2讲

    1.MyBatis的环境配置 导入MyBatis包, mybatis-3.2.8.jar 导入MySQL驱动包, mysql-connector-java-5.1.24-bin.jar 创建表的实体类 ...

  8. Java入门-浅析Java学习从入门到精通【转】

    一. JDK (Java Development Kit)  JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库 ...

  9. Java入门——(1)Java编程基础

    Java入门--(1)Java编程基础 第二章 Java编程基础   JAVA 代码的基本格式: 修饰符 class 类名{ 程序代码 }   2.1关键字:赋予了特殊含义的单词.   2.2标识符: ...

随机推荐

  1. UDP和TCP的区别

    UDP(User Datagram Protocol 用户数据报协议) TCP(Transmission Control Protocol 传输控制协议) UDP是一种非面向连接的传输协议,它的实现是 ...

  2. 数据结构看书笔记(二)--算法(Algorithm)简介

    算法:是解决问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作. 算法的特性:算法具有五个特性:输入.输出.有穷性.确定性.可行性 输入输出:算法具有零个或多个输入:至 ...

  3. QA:java.lang.RuntimeException:java.io.FileNotFoundException:Resource nexus-maven-repository-index.properties does not exist.

    QA:java.lang.RuntimeException:java.io.FileNotFoundException:Resource nexus-maven-repository-index.pr ...

  4. 战胜忧虑&lt;2&gt;——忙碌可以消除忧虑

    忙碌可以消除忧虑 当你的脑筋空出来时,也会有东西进去补充,是什么呢?通常都是你的感觉.为什么?因为忧虑.恐惧.憎恨.嫉妒.和羡慕等等情绪,都是由我们的思想所控制的,这种情绪都非常猛烈.会把我们思想中所 ...

  5. C#中修改Dll文件 (反编译后重新编译)

    Dll文件生成后,如没有源代码,又要修改其中内容 可以用微软自带的ildasm和ilasm程序 先用ildasm将dll文件反编译成il文件 ildasm Test.dll /out=Test.il  ...

  6. (6)s3c2440用I2C接口访问EEPROM

    在前面阅读理解了I2C的官方协议文档后,就拿s3c2440和EEPROM来验证一下. 本来是想用s3c2440的SDA和SCL管脚复用为GPIO来模拟的,但在没有示波器的情况下搞了一周,怎么都出不来, ...

  7. DataBase First创建数据库

    Entity Framework:ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,并提供了三种模式,分 ...

  8. Linux ldconfig 查看动态库连接

    /usr/lib64/tls: (hwcap: 0x8000000000000000) [root@wx02 ~]# ldconfig -v | grep keep libzookeeper_mt.s ...

  9. Windows Phone开发(3):棋子未动,先观全局

    原文:Windows Phone开发(3):棋子未动,先观全局 在进行WP开发之前,与其它开发技术一样,我们需要简单了解一个WP应用序的生命周期,我们不一定要深入了解,但至少要知道在应用程序生命周期内 ...

  10. 고서--做完A之后做B, B受A影响

    1. 합격 소식을 듣고서 매우 기뻤어요.. 2. 친구하고 심하게 다투고서 마음이 안 좋았어요. 3. 급한 일을 먼저 끝내고서 이야기합시다.' 4. 창문을 열고서 상쾌한 공기를 마서 ...