博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring——Spring整合MyBatis详解、代码实现
阅读量:3940 次
发布时间:2019-05-24

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

Spring——Spring整合MyBatis

一、回忆MyBatis

MyBatis的实现步骤:

  • 导包:mybatis的包,mysql驱动包,junit包
  • 编写实体类
  • 编写配置mybatis-config.xml配置文件
  • 编写Dao层接口
  • 编写接口对应的映射文件userMapper.xml
  • 在mybatis-config.xml配置文件中注册映射文件
  • 编写MyBatis工具类
  • 测试

二、MyBatis和Spring整合详解

1.导包:mybatis-spring

mybatis-spring这个包会帮助我们将MyBatis代码无缝地整合到Spring中。

在开始使用MyBatis-Sprring之前,你需要先熟悉Spring和MyBatis这两个框架和有关它们的术语。

MyBatis-Spring需要以下版本

MyBatis-Spring MyBatis Spring 框架 Spring Batch Java
2.0 3.5+ 5.0+ 4.0+ Java 8+
1.3 3.4+ 3.2.2+ 2.1+ Java 6+

导入版本对应的jar包

org.mybatis
mybatis-spring
1.3.2
2.SqlSessionFactory和DataSource

要在Spring中使用MyBatis,需要在Spring应用上下文中定义两个东西:

  • SqlSessionFactory
  • 数据映射器

在 MyBatis-Spring 中,可以使用SqlSessionFactoryBean来创建SqlSessionFactory。

要配置这个工厂bean,只需要将以下代码放在Spring的xml配置文件中:

注意:

  • SqlSessionFactory需要一个 DataSource(数据源)。这可以是任意的 DataSource,只需要和配置其它 Spring 数据库连接一样配置它就可以了。

  • 在基础的 MyBatis 用法中,是通过 SqlSessionFactoryBuilder 来创建 SqlSessionFactory的。 而在 MyBatis-Spring 中,则使用 SqlSessionFactoryBean 来创建。

  • 除了dataSource属性还有一个mapperLocations属性,这个属性接受多个资源位置,可以用来指定 MyBatis 的映射器 XML 配置文件的位置。

  • 这个配置文件并不是一个完整的MyBatis配置。确切地说,任何环境配置(environments),数据源(DataSource)和MyBatis的事务管理(transactionManager)都会被忽略。

  • SqlSessionFactoryBean会创建它自有的 MyBatis 环境配置(Environment),并按要求设置自定义环境的值。

在MyBatis中,你可以使用SqlSessionFactory来创建sqlSession。一旦获得一个session之后,就可以使用它来执行影射了的语句,提交或者回滚等。最后当不再需要它的时候,就可以关闭session。使用MyBatyis-Spring之后,就不再需要直接使用SqlSessionFactory了,因为bean可以被注入到一个线程安全的SqlSession,他能基于Spring的事务配置来自动提交、回滚、关闭session

3.MyBatis-Spring 的核心:SqlSessionTemplate

作为SqlSession的一个实现,意味着可以使用它无缝代替代码中已经在使用的SqlSession。SqlSessionTemplate是线程安全的,可以被多个DAO或映射器所共享使用的。

可以使用SqlSessionFactory作为构造方法的参数创建SqlSessionTemplate对象。(因为没有对用的set方法所以使用构造)

三、Spring整合MyBatis实现

1.导包
  • mybatis包
  • mysql驱动包
  • junit包
  • spring一系列的包:sqpring-webmvc
  • spring-jdbc【数据源】
  • spring-tx【事务】
  • log4j包【日志】
  • aop织入包:aspectjweaver
  • mybatis-spring整合包【最最最重要】

pom.xml

4.0.0
com.muhan
mybatis-spring
1.0-SNAPSHOT
junit
junit
4.11
org.mybatis
mybatis
3.5.1
mysql
mysql-connector-java
5.1.47
log4j
log4j
1.2.17
org.mybatis
mybatis-spring
2.0.2
org.springframework
spring-webmvc
4.3.9.RELEASE
org.springframework
spring-jdbc
4.3.9.RELEASE
org.aspectj
aspectjweaver
1.8.3
src/main/java
**/*.properties
**/*.xml
false
src/main/resources
**/*.properties
**/*.xml
false
2.编写Dao接口及接口映射文件

dao接口

package com.muhan.dao;import com.muhan.pojo.User;import java.util.List;public interface UserDao {
List
getUserList();}

接口映射文件userMapper.xml

3.编写mybatis-config.xml配置文件

4.编写Spring配置文件

数据源配置:

sqlSessionFactory配置

sqlSession配置

编写接口实现类

package com.muhan.dao;import com.muhan.pojo.User;import org.mybatis.spring.SqlSessionTemplate;import java.util.List;public class UserDaoImpl implements UserDao {
//将sqlSession组合进接口实现类 private SqlSessionTemplate sqlSession; public void setSqlSession(SqlSessionTemplate sqlSession) {
this.sqlSession = sqlSession; } public List
getUserList() {
UserDao mapper = sqlSession.getMapper(UserDao.class); List
users = mapper.getUserList(); return users; }}

将接口的实现类交给spring管理

5.测试

import com.muhan.dao.UserDao;import com.muhan.pojo.User;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.List;public class SpringMyBatis {
@Test public void test(){
ApplicationContext context = new ClassPathXmlApplicationContext("spring-mybatis.xml"); UserDao userDaoImpl = (UserDao) context.getBean("userDaoImpl"); List
users = userDaoImpl.getUserList(); for (User user : users) {
System.out.println(user); } }}

结果展示:

在这里插入图片描述

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

你可能感兴趣的文章
path变量备份
查看>>
Lesson2.2 & 2.3 Maya command reference & quick help
查看>>
lesson 2.4 - Converting MEL Commands to Python
查看>>
Lesson3.2 variables
查看>>
3.4.2 - Operators & 3.4.3 division and truncation
查看>>
3.7.1 - Strings
查看>>
3.7.4 - Indexing and Slicing Strings
查看>>
3.7.5 - Modifying Strings
查看>>
3.7.6 - String Methods
查看>>
3.8 - Using the Print Function
查看>>
3.9.1 - Lists in Python
查看>>
3.9.2 - Lists - Adding and Removing Objects
查看>>
3.9.3 - Sorting Lists
查看>>
3.10 - Maya Commands: ls
查看>>
3.11 - Dictionaries in Python
查看>>
3.12 - Tuples in Python
查看>>
4.4 - For Loops
查看>>
4.2.2 - Logical and/or Operators
查看>>
Lesson 4 Part 2 Softmax Regression
查看>>
文章中运用到的数学公式
查看>>