spring-mybatis整合测试
2016-05-21 11:15
459 查看
写这篇文章思考很久,网上有各种资料提供了这些基础的知识讲解,但是总是在应用的时候存在各种各样小问题。今天开始对目前软件市场比较流行的一些技术进行整理,希望对大家能有所帮助
文章的编写思路会陆续讲解spring、springMVC、apache shiro、mybatis、druid等目前主流的一些技术及整合。
今天主要说的是spring框架和mybatis框架的整合及单元测试方式。
mybatis是一个非常好用的轻量级的持久层框架,主要分三层架构完成持久层的功能开发
> 基础支持层:和数据库交互进行实际的数据操作
> 数据操作层:API调用数据操作进行数据的CRUD操作
> API接口层:提供给应用程序调用的API
spring是一个容器框架,作为托盘容器,是目前软件开发市场最常用也是最流行的框架。
spring和mybatis的整合在网上有各种各样的资源和资料,但是整合大部分存在多多少少的问题。这里进行一些简单的整合和测试,主要以功能的单元测试为案例进行整合说明
1. 创建java项目_Java Project
2. 导入需要的jar包
> spring相关jar包[spring-aop/spring-aspectj/spring-beans/spring-context/spring-core/spring-expression/spring-intrument/spring-jdbc/spring-orm/spring-test/spring-tx]
> aop相关jar包[aopalliance/aspectjrt/aspectweaver]
> commons-logging
> druid连接池jar包[druid]
> 数据库驱动[mysql-connect-java]
> mybatis相关jar包[mybatis/mybatis-spring]
3.创建spring-mybatis.xml配置文件
User.java【com.laomu.mybatis.model】
接口文件UserMapper.java【com.laomu.mybatis.mapper】
定义SQL映射文件userMapper.xml
经过测试,数据正常被插入到数据库中。希望能对大家有所帮助,后续陆续更新新的内容添加进去。另外如果大家有什么需要的话,可以单独给我留言,我会陆续更新技术性的东西。
文章的编写思路会陆续讲解spring、springMVC、apache shiro、mybatis、druid等目前主流的一些技术及整合。
今天主要说的是spring框架和mybatis框架的整合及单元测试方式。
mybatis是一个非常好用的轻量级的持久层框架,主要分三层架构完成持久层的功能开发
> 基础支持层:和数据库交互进行实际的数据操作
> 数据操作层:API调用数据操作进行数据的CRUD操作
> API接口层:提供给应用程序调用的API
spring是一个容器框架,作为托盘容器,是目前软件开发市场最常用也是最流行的框架。
spring和mybatis的整合在网上有各种各样的资源和资料,但是整合大部分存在多多少少的问题。这里进行一些简单的整合和测试,主要以功能的单元测试为案例进行整合说明
一 创建测试数据库
# 创建数据库 CREATE DATABASE mybatis; USE mybatis; # 创建用户表 CREATE TABLE user( userId INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户编号,主键', username VARCHAR(100) COMMENT '用户账号', password VARCHAR(100) COMMENT '用户密码', salt VARCHAR(100) COMMENT '盐值', nickname VARCHAR(100) COMMENT '用户昵称', available BOOL COMMENT '是否有效' ); # 创建角色表 CREATE TABLE role( roleId INT AUTO_INCREMENT PRIMARY KEY COMMENT '角色编号,主键', rname VARCHAR(50) COMMENT '角色名称', rdesc VARCHAR(100) COMMENT '角色描述', available BOOL COMMENT '是否有效' ); # 创建资源表 CREATE TABLE resource( resourceId INT AUTO_INCREMENT PRIMARY KEY COMMENT '资源编号,主键', url VARCHAR(200) COMMENT '资源请求地址', permission VARCHAR(100) COMMENT '权限名称', permdesc VARCHAR(100) COMMENT '权限描述', available BOOLEAN COMMENT '是否有效' ); # 创建用户-角色关联表 CREATE TABLE user_role( urId INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户-角色关联编号', u_id INT COMMENT '用户编号', r_id INT COMMENT '角色编号' ); # 创建角色-权限关联表 CREATE TABLE role_permission ( rpId INT AUTO_INCREMENT PRIMARY KEY COMMENT '角色-权限关联编号', r_id INT COMMENT '角色编号', permission VARCHAR(100) COMMENT '权限名称' );
二 项目搭建
1. 创建java项目_Java Project2. 导入需要的jar包
> spring相关jar包[spring-aop/spring-aspectj/spring-beans/spring-context/spring-core/spring-expression/spring-intrument/spring-jdbc/spring-orm/spring-test/spring-tx]
> aop相关jar包[aopalliance/aspectjrt/aspectweaver]
> commons-logging
> druid连接池jar包[druid]
> 数据库驱动[mysql-connect-java]
> mybatis相关jar包[mybatis/mybatis-spring]
3.创建spring-mybatis.xml配置文件
三 编辑spring-mybatis.xml配置文件信息
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd"> <!-- 1.配置数据源 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 基本属性 url、user、password --> <property name="url" value="jdbc:mysql://localhost:3306/mybatis" /> <property name="username" value="root" /> <property name="password" value="root" /> <property name="connectionProperties" value="com.mysql.jdbc.Driver"></property> <!-- 配置初始化大小、最小、最大 --> <property name="initialSize" value="1" /> <property name="minIdle" value="1" /> <property name="maxActive" value="20" /> <!-- 配置获取连接等待超时的时间 --> <property name="maxWait" value="60000" /> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="60000" /> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="300000" /> <property name="validationQuery" value="SELECT 'x'" /> <property name="testWhileIdle" value="true" /> <property name="testOnBorrow" value="false" /> <property name="testOnReturn" value="false" /> <!-- 打开PSCache,并且指定每个连接上PSCache的大小 --> <!-- 如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。分库分表较多的数据库,建议配置为false。 --> <property name="poolPreparedStatements" value="false" /> <property name="maxPoolPreparedStatementPerConnectionSize" value="20" /> <!-- 配置监控统计拦截的filters,去掉后监控界面sql无法统计 --> <property name="filters" value="stat" /> </bean> <!-- 2.配置SqlSessionFactry --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="typeAliasesPackage" value="com.laomu.mybatis.model"></property> </bean> <!-- 3.配置自动扫描映射—— --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.laomu.mybatis.mapper"></property> <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> </bean> <!-- 4.配置事务管理 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <tx:annotation-driven transaction-manager="transactionManager"/> </beans>
四 创建实体测试类及映射文件
User.java【com.laomu.mybatis.model】package com.laomu.mybatis.model; /** * @author IT老牟 * @version V1.00 * @time 2016年5月21日-上午10:52:57 * @see qq:1007821300 * @see qq交流群:185745030 * @see 用户实体类 * @see copyright */ public class User { private int userId;// 用户编号 private String username;// 用户账号 private String password;// 用户密码 private String salt;// 盐值 private String nickname;// 昵称 private Boolean available;// 是否有效 public User(String username, String password, String salt, String nickname, Boolean available) { super(); this.username = username; this.password = password; this.salt = salt; this.nickname = nickname; this.available = available; } public User(int userId, String username, String password, String salt, String nickname, Boolean available) { super(); this.userId = userId; this.username = username; this.password = password; this.salt = salt; this.nickname = nickname; this.available = available; } public User() { super(); // TODO Auto-generated constructor stub } public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getSalt() { return salt; } public void setSalt(String salt) { this.salt = salt; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public Boolean getAvailable() { return available; } public void setAvailable(Boolean available) { this.available = available; } }
接口文件UserMapper.java【com.laomu.mybatis.mapper】
package com.laomu.mybatis.mapper; import java.util.List; import com.laomu.mybatis.model.User; /** * @author IT老牟 * @version V1.00 * @time 2016年5月21日-上午10:53:58 * @see qq:1007821300 * @see qq交流群:185745030 * @see 映射接口文件 * @see copyright */ public interface UserMapper { public int add(User user); public int delete(int id); public int update(User user); public User findById(int id); public List<User> findAll(); }
定义SQL映射文件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="com.laomu.mybatis.mapper.UserMapper"> <!-- 增加数据 注意:这里的id必须和映射接口中对应的方法名称一致 --> <insert id="add"> INSERT INTO user(username, password, salt, nickname, available) VALUES (#{username},#{password},#{salt},#{nickname},#{available}); </insert> <delete id="delete"> DELETE FROM users WHERE userId = #{userId} </delete> <update id="update"> UPDATE users SET username = #{username} , password = #{password}, salt = #{salt}, nickname = #{nickname}, available = #{available} WHERE userId = #{userId} </update> <select id="findById" resultType="com.laomu.mybatis.model.User"> SELECT * FROM users WHERE userId = #{userId} </select> <select id="findAll"> SELECT * FROM users </select> </mapper>
五 使用Spring测试方案进行单元测试
创建测试类:MyBatisTest.java【com.laomu.mybatis.test】package com.laomu.mybatis.test; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.laomu.mybatis.mapper.UserMapper; import com.laomu.mybatis.model.User; @RunWith(SpringJUnit4ClassRunner.class)// 添加spring测试方案 @ContextConfiguration("/spring-mybatis.xml")// 指定spring配置文件位置 public class MyBatisTest { @Autowired private UserMapper userMapper; @Test public void testInsert() { User user = new User("admin", "admin", "saltstr", "老牟", true); userMapper.add(user); } }
经过测试,数据正常被插入到数据库中。希望能对大家有所帮助,后续陆续更新新的内容添加进去。另外如果大家有什么需要的话,可以单独给我留言,我会陆续更新技术性的东西。
相关文章推荐
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring和ThreadLocal
- Spring Boot 开发微服务
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- 模拟Spring的简单实现
- Spring整合WebSocket应用示例(上)
- spring+html5实现安全传输随机数字密码键盘
- Spring中属性注入详解
- 深入浅析mybatis oracle BLOB类型字段保存与读取
- springmvc 发送ajax出现中文乱码的解决方法汇总
- MyBatis MapperProvider MessageFormat拼接批量SQL语句执行报错的原因分析及解决办法
- SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
- struts2 spring整合fieldError问题
- spring的jdbctemplate的crud的基类dao
- 读取spring配置文件的方法(spring读取资源文件)
- SpringMVC整合mybatis实例代码