博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mybatis-Spring简单的配置和使用,配置事务
阅读量:3891 次
发布时间:2019-05-23

本文共 7052 字,大约阅读时间需要 23 分钟。

Mybatis-Spring

什么是Mybatis-Spring?

  1. MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中,它将允许 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和 SqlSession 并注入到 bean 中,以及将 Mybatis 的异常转换为 Spring 的 DataAccessException。最终,可以做到应用代码不依赖于 MyBatis,Spring 或 MyBatis-Spring。
  2. 在开始学习Mybatis之前,我觉得需要先熟悉 Mybatis 和 Spring 这两个框架和基础的语法。
    在这里插入图片描述

Mybatis-Spring的配置和简单使用

  1. 首先要想使用Mybatis-Spring模块,要在pom.xml配置文件中导入依赖的jar包.
org.mybatis
mybatis-spring
2.0.2
  1. 连接你需要的数据库,我的是mybatis;
    在这里插入图片描述
  2. 创建实体类;
public class User {
private int id; private String name; private String pwd; public User() {
} public User(int id, String name, String pwd) {
this.id = id; this.name = name; this.pwd = pwd; } @Override public String toString() {
return "User{" + "id=" + id + ", name='" + name + '\'' + ", pwd='" + pwd + '\'' + '}'; } public int getId() {
return id; } public void setId(int id) {
this.id = id; } public String getName() {
return name; } public void setName(String name) {
this.name = name; } public String getPwd() {
return pwd; } public void setPwd(String pwd) {
this.pwd = pwd; }}
  1. 创建dao层接口;
import java.util.List;public interface UserDao {
List
getUserList();}
  1. 创建接口的映射文件,UserMapper.xml
  1. 编写mybatis 配置文件
  1. 编写bean.xml文件
  1. 编写接口实现类,并且注入sqlSession属性;
import org.mybatis.spring.SqlSessionTemplate;import java.util.List;public class UserDaoImpl implements UserDao {
private SqlSessionTemplate sqlSession; public void setSqlSession(SqlSessionTemplate sqlSession) {
this.sqlSession = sqlSession; } public List
getUserList() {
//得到UserDao接口的对象 UserDao mapper = sqlSession.getMapper(UserDao.class); return mapper.getUserList(); }}
  1. 编写pom.xml配置文件,主要用来注入很多包依赖
spring-study
com.baidu
1.0-SNAPSHOT
4.0.0
mybatis-spring整合
junit
junit
4.11
test
org.mybatis
mybatis
3.5.1
org.mybatis
mybatis-spring
2.0.2
org.springframework
spring-jdbc
4.3.9.RELEASE
mysql
mysql-connector-java
5.1.47
src/main/java
**/*.xml
false
  1. 测试
import com.baidu.dao.UserDaoImpl;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.List;public class UserDaoTest {
@Test public void test(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserDaoImpl userImpl = (UserDaoImpl) context.getBean("user"); List
userList = userImpl.getUserList(); System.out.println(userList); }}

在这里插入图片描述

声明式事务

  • 说到事务,码农们一定都能记得事务的四大特性(ACID):一致性,原子性,隔离性,持久性。
  • 我们在刚才的代码的基础之上,在UserDao这个类加上两个方法,add()和delete();
import java.util.List;public interface UserDao {
List
getUserList(); int add(User user); int delete(int id);}
  • 接着写它的实现类
import org.mybatis.spring.SqlSessionTemplate;import java.util.List;public class UserDaoImpl implements UserDao {
private SqlSessionTemplate sqlSession; public void setSqlSession(SqlSessionTemplate sqlSession) {
this.sqlSession = sqlSession; } public List
getUserList() {
//这个方法在被调用的时候,就是一件事务 UserDao mapper = sqlSession.getMapper(UserDao.class); mapper.add(new User(9,"喜洋洋","111111")); mapper.delete(4); return mapper.getUserList(); } public int add(User user) {
return 0; } public int delete(int id) {
return 0; }}
  • 编写映射文件,我故意写出一个错误,看一下事务能不能回滚(删除的sql语句写错了,看一下,添加成功了没有)
insert into mybatis.user(id, name, pwd) values (#{id},#{name},#{pwd})
deletse from mybatis.user where id = #{id}
  • 测试
import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.List;public class UserDaoTest {
@Test public void test(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserDaoImpl userImpl = (UserDaoImpl) context.getBean("user"); List
userList = userImpl.getUserList(); System.out.println(userList); }}
  • 运行结果,出错了
    在这里插入图片描述
  • 再来看一下,数据表却添加成功了,这说明我们的事务出错了!
    在这里插入图片描述

解决方法:配置事务

  1. 需要aspectj包,导入这个织入包
org.aspectj
aspectjweaver
1.8.13
  1. 开启Spring的事务功能
  1. 配置声明事务通知
    name:哪些方法要使用事务【方法】
    propagation:配置事务的传播特性
    REQUIRED:如果没有事务,就新建一个事务。
  1. 配置aop织入事务,需要导入aop织入包,还有aop约束
  1. 此时再来测试一下
import org.mybatis.spring.SqlSessionTemplate;import java.util.List;public class UserDaoImpl implements UserDao {
private SqlSessionTemplate sqlSession; public void setSqlSession(SqlSessionTemplate sqlSession) {
this.sqlSession = sqlSession; } public List
getUserList() {
UserDao mapper = sqlSession.getMapper(UserDao.class); mapper.add(new User(10,"灰太狼","111111")); mapper.delete(4); return mapper.getUserList(); } public int add(User user) {
return 0; } public int delete(int id) {
return 0; }}
  1. 看一下数据表,没有添加进去,说明我们的事务就配置好了。
    在这里插入图片描述

转载地址:http://ahohn.baihongyu.com/

你可能感兴趣的文章
Padding也要小心
查看>>
linux异步IO编程实例分析
查看>>
小组开发环境搭建: apache+ftp+cvs+samba
查看>>
Learning C with gdb
查看>>
不可不知的json库
查看>>
JSON格式解析和libjson使用简介
查看>>
关于Json格式的理解
查看>>
c语言解析json数据
查看>>
json-c API总结
查看>>
freeBSD queue.c--定时器
查看>>
一个C实现的记日志的函数库
查看>>
C语言简单实现日志功能的的题目
查看>>
C 实现的 日志模块
查看>>
C语言实现简单的分级别写日志程序
查看>>
深入理解HTTP Session
查看>>
理解TCP中的三次握手
查看>>
linux session 浅谈
查看>>
Session
查看>>
Emacs 中文学习手册-1
查看>>
Emacs学习笔记(1):初学者的学习计划
查看>>