MyBatis - Spring框架整合

目的:

使用 Spring 容器用单例模式管理 MyBatis 的 sqlSessionFactory ;
使用 Spring 管理连接池、数据源等;
将 Dao / Mapper 动态代理对象注入到 Spring 容器中,使用时直接获取;

整合的三种方式:链接??

https://www.jianshu.com/p/412051d41d73

实例

● 导入所需的Jar包

MyBatis+Spring整合包:mybatis-spring-1.3.2.jar
MyBatis核心包:mybatis-3.4.6.jarSpring三方及依赖:下载数据库连接驱动:mysql-connector-java-5.1.46-bin.jar、ojdbc7.jarC3P0连接池:c3p0-0.9.5.2.jar、mchange-commons-java-0.2.11.jar

创建Mybatissql主配置文件 - MapConfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <!-- 配置别名 -->
    <typeAliases>
        <package name="com.sikiedu.bean" />
    </typeAliases>

    <mappers>
        <package name="com.sikiedu.mapper" />
    </mappers>

</configuration>

● 创建Spring主配置文件 - applicationContext.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
 3     xmlns:util="http://www.springframework.org/schema/util"
 4     xsi:schemaLocation="http://www.springframework.org/schema/beans
 5     http://www.springframework.org/schema/beans/spring-beans.xsd
 6     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
 7     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
 8     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
 9     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd ">
10
11
12     <!-- 读取properties文件 -->
13     <context:property-placeholder location="db.properties" />
14
15     <!-- 配置C3P0数据源 -->
16     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
17         <property name="driverClass" value="${jdbc.driverClass}"></property>
18         <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
19         <property name="user" value="${jdbc.user}"></property>
20         <property name="password" value="${jdbc.password}"></property>
21     </bean>
22
23     <!-- 配置MyBatis sqlSessionFactory -->
24     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
25         <!-- 引用数据源组件 -->
26         <property name="dataSource" ref="dataSource" />
27         <!-- 引用mybatis配置文件中的配置 -->
28         <property name="configLocation" value="classpath:sqlMapConfig.xml" />
29         <!-- 配置SQL映射文件信息 -->
30     </bean>
31
32     <!-- UserDao -->
33     <bean id="userDaoImpl" class="com.sikiedu.dao.UserDaoImpl">
34         <!-- 将工厂注入到dao的父类 SQLSessionFactory -->
35         <property name="sqlSessionFactory" ref="sqlSessionFactory" />
36     </bean>
37
38     <!-- Mapper动态代理开发 -->
39     <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
40         <!-- 注入 SQLSessionFactory -->
41         <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
42         <!-- 配置接口 -->
43         <property name="mapperInterface" value="com.sikiedu.mapper.UserMapper" />
44     </bean>
45
46     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
47         <property name="basePackage" value="com.sikiedu.mapper" />
48     </bean>
49
50 </beans>

applicationContext.xml

① 读取db.properties

1 jdbc.driverClass=com.mysql.jdbc.Driver
2 jdbc.jdbcUrl=jdbc:mysql://localhost:3306/games_db?useUnicode=true&characterEncoding=UTF-8&useSSL=true
3 jdbc.user=root
4 jdbc.password=123456

db.properties

<context:property-placeholder location="db.properties" />

② 配置C3P0连接池

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="${jdbc.driverClass}"></property>
    <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
    <property name="user" value="${jdbc.user}"></property>
    <property name="password" value="${jdbc.password}"></property>
</bean>

③ 配置sqlSessionFactory

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!-- 引用数据源组件 -->
    <property name="dataSource" ref="dataSource" />
    <!-- 引用mybatis配置文件中的配置 -->
    <property name="configLocation" value="classpath:sqlMapConfig.xml" />
    <!-- 配置SQL映射文件信息 -->
</bean>

④ 测试

 1 package com.sikiedu.bean;
 2
 3 import java.util.Date;
 4 import java.util.List;
 5
 6 public class User {
 7     private Integer id;
 8
 9     private String username;
10
11     private String userpassword;
12
13     private Long balance;
14
15     private Date grgisterdate;
16
17     public Integer getId() {
18         return id;
19     }
20
21     public void setId(Integer id) {
22         this.id = id;
23     }
24
25     public String getUsername() {
26         return username;
27     }
28
29     public void setUsername(String username) {
30         this.username = username == null ? null : username.trim();
31     }
32
33     public String getUserpassword() {
34         return userpassword;
35     }
36
37     public void setUserpassword(String userpassword) {
38         this.userpassword = userpassword == null ? null : userpassword.trim();
39     }
40
41     public Long getBalance() {
42         return balance;
43     }
44
45     public void setBalance(Long balance) {
46         this.balance = balance;
47     }
48
49     public Date getGrgisterdate() {
50         return grgisterdate;
51     }
52
53     public void setGrgisterdate(Date grgisterdate) {
54         this.grgisterdate = grgisterdate;
55     }
56
57     @Override
58     public String toString() {
59         return "User [id=" + id + ", username=" + username + ", userpassword=" + userpassword + ", balance=" + balance
60                 + ", grgisterdate=" + grgisterdate + "]";
61     }
62
63 }

User.java

1 package com.sikiedu.dao;
2
3 import com.sikiedu.bean.User;
4
5 public interface UserDao {
6
7     public User selectByPrimaryKey(Integer id);
8
9 }

UserDao.java

 1 package com.sikiedu.dao;
 2
 3 import org.apache.ibatis.session.SqlSession;
 4 import org.mybatis.spring.support.SqlSessionDaoSupport;
 5
 6 import com.sikiedu.bean.User;
 7
 8 public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {
 9
10     @Override
11     public User selectByPrimaryKey(Integer id) {
12         SqlSession session = getSqlSession();
13         return session.selectOne("com.sikiedu.mapper.UserMapper.selectByPrimaryKey", id);
14     }
15
16 }

UserDaoImpl.java

<bean id="userDaoImpl" class="com.sikiedu.dao.UserDaoImpl">
    <!-- 将工厂注入到dao的父类 SQLSessionFactory -->
    <property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
// 传递ID  -  ac.getBean("userDaoImpl");
UserDaoImpl userDao = ac.getBean(UserDaoImpl.class);// 传递接口
User user = userDao.selectByPrimaryKey(1);
System.out.println(user);

Mapper动态代理开发

- Mapper接口与Mapper.xml映射文件必须放在同一目录中,Mapper.xml的namespace必须为全路径包名。

- sqlMapConfig.xml配置 - 以包的形式扫描映射器的位置

<mappers>
    <package name="com.sikiedu.mapper" />
</mappers>

- spring主配置文件 - 将MapperFactoryBean交给Spring管理

<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
    <!-- 注入 SQLSessionFactory -->
    <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
    <!-- 配置接口 -->
    <property name="mapperInterface" value="com.sikiedu.mapper.UserMapper" />
</bean>

- 测试

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
// 传递ID  -  ac.getBean("userMapper");
UserMapper userMapper = ac.getBean(UserMapper.class);// 传递接口
User user = userMapper.selectByPrimaryKey(2);
System.out.println(user);

Mapper动态扫描开发

- Mapper接口与Mapper.xml映射文件必须放在同一目录中,Mapper.xml的namespace必须为全路径包名。

- sqlMapConfig.xml配置 - 以包的形式扫描映射器的位置

<mappers>
    <package name="com.sikiedu.mapper" />
</mappers>

- applicationContext.xml配置 - 使用MapperScannerConfigurer进行扫描

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.sikiedu.mapper" />
</bean>

- 测试

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
UserMapper userMapper = ac.getBean(UserMapper.class);
User user = userMapper.selectByPrimaryKey(3);
System.out.println(user);

原文地址:https://www.cnblogs.com/Dm920/p/12053796.html

时间: 2024-10-07 22:27:53

MyBatis - Spring框架整合的相关文章

Spring+SpringMVC+MyBatis+Maven框架整合

本文记录了Spring+SpringMVC+MyBatis+Maven框架整合的记录,主要记录以下几点 一.Maven需要引入的jar包 二.Spring与SpringMVC的配置分离 三.Spring与MyBatis的整合 一.Maven需要引入的jar包 本文默认读者已经掌握Maven的使用,Maven配置片段如下 Xml代码   <!-- 引入spring-webmvc与spring-jdbc --> <dependency> <groupId>org.sprin

Spring框架整合Struts2使用Validation框架验证表单用户输入数据的详细教程

原创整理不易,转载请注明出处:Spring框架整合Struts2使用Validation框架验证表单用户输入数据的详细教程 代码下载地址:http://www.zuidaima.com/share/1778685765291008.htm 在<Struts2教程4:使用validate方法验证数据>中曾讲到使用validate方法来验证客户端提交的数据,但如果使用validate方法就会将验证代码和正常的逻辑代码混在一起,但这样做并不利于代码维护,而且也很难将过些代码用于其他程序的验证.在St

spring框架整合使用定时任务框架java quartz的示例代码配置

原创整理不易,转载请注明出处:spring框架整合使用定时任务框架java quartz的示例代码配置 代码下载地址:http://www.zuidaima.com/share/1775583461723136.htm 有时候我们的任务(Job)需要再某些任务完成之后才能进行:例如从旧的数据库批量导数据的时候:需要现将被其他数据依赖的数据导入新的数据库:然后再进行关系的导入..在这种情况下我们就可以使用Quartz的listener来做文章了. 首先我们写一个主任务的类,命名为MainJob:她

spring框架整合ibatis的项目实例代码

原创整理不易,转载请注明出处:spring框架整合ibatis的项目实例代码 代码下载地址:http://www.zuidaima.com/share/1780211932679168.htm 这两天一直在研究ibatis与spring的整合 一个小小的demo搞的我头晕目眩的,但程序一旦跑起来了,突然有一种豁然开朗,重见天日,感觉生活很美好的感觉!,也许,这就是那一行行的代码带给我们的不同享受吧.呵呵,废话就不多说了. 在此先引用几句别人的资料... Spring通过DAO模式,提供了对iBA

MyBatis+Spring轻量级整合(Maven)

Mybatis: 前身是ibatis,但由于种种原因,去年五月时改名为Mybatis,绝大多数API与机制没有变化,只是少数配置文件变动了.但是官网上有一个自动转换的工具,可以方便的将Ibatis系统转换为Mybatis. Spring: 采用3.x,这是因为Mybatis和Spring3.x有一个较好的结合体验,Maven库上有一个Mybatis-Spring结合包. 所需要采用的JAR包:(POM.xml) <dependency> <groupid>org.springfra

Spring+mybatis+struts框架整合的配置具体解释

学了非常久的spring+mybatis+struts.一直都是单个的用他们,或者是两两组合用过,今天总算整合到一起了,配置起来有点麻烦.可是配置完一次之后.就轻松多了,那么框架整合配置具体解释例如以下. 1.导入对应的jar包 由于我们建造的是maven的web项目,全部我们在pom.xml中须要导入这些包. pom.xml 具体凝视 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&q

SSM(spring mvc+spring+Mybatis)框架整合

最近用Idea开发,idea是一款综合的相对较新的Java IDE.Idea支持很多整合功能,我觉得挺好用的.Idea可以校正xml,支持jsp的调试.最让我喜欢的是,写spring配置文件的时候,写的一些路径都可以自己找到.classpath自己有代码的提示,超级的智能. 环境配置 在整合框架之前,先配置一下JER运行环境,配置maven仓库. 1.File--ProjectStructure--Project--New- 选择jdk的安装环境 2.File--Settings--Maven-

Spring MVC入门第2天--Spring、SpringMVC与MyBatis三大框架整合

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.07.01 lutianfei none springmvc和mybatis整合 需求: 使用springmvc和mybatis完成商品列表查询. 整合思路 spring+springmvc+mybaits的系统架构: 第一步:整合dao层 mybatis和spring整合,通过spring管理mapper接口. 使用mapper的扫描器自动扫描mapper接口在spring中进行注册. 第二步:整合service层

【Java】MyBatis与Spring框架整合(二)

本文讲解 Spring 注入映射器及事务功能的实现. 注入映射器实现 MyBatis 可以使用 SqlSession 的 getMapper ( Class<T> type ) 方法,根据指定的映射器和映射文件直接生成实现类.这样不必自行编写映射器的实现类,就可以调用映射器的方法进行功能实现. SqlSessionTemplate 也有对应的 getMapper()方法,利用 MyBatis-Spring 提供的组件,可以不必每次调用 getMapper()方法,而是通过配置的方式直接为业务对