好程序员Java学习路线分享MyBatis之Spring整合

  好程序员Java学习路线分享MyBatis之Spring整合,Spring、SpringMVC和MyBatis是目前企业开发的三大框架。本章咱们将学习将Spring和MyBatis整合到一块儿,成为咱们项目开发的技术骨架。
引入依赖
首先咱们须要在Maven项目中添加依赖,Spring框架和MyBatis框架须要的依赖有:
mybatis MyBatis
mybatis-spring MyBatis的Spring兼容包,用于整合MyBatis
spring-jdbc Spring的JDBC包,配置数据源时须要
spring-test Spring单元测试
spring-context Spring上下文,提供IOC和AOP服务
Junit 单元测试框架
mysql-connector-java MySQL数据库驱动
c3p0 链接池
添加配置文件
首先咱们用properties文件配置JDBC的参数:
示例代码:jdbc.properties
1.driver=com.mysql.cj.jdbc.Driver
2.url=jdbc:mysql://localhost/java1903?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&useSSL=false
3.user=root
4.password=123456java

接下来在Spring配置文件中整合MyBatis
1.<!--1 引入属性文件,在配置中占位使用 -->
2.<context:property-placeholder location="classpath:jdbc.properties" />
3.<!--2 配置C3P0数据源 -->
4.<bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
5.<!--驱动类名 -->
6.<property name="driverClass" value="${driver}" />
7.<!-- url -->
8.<property name="jdbcUrl" value="${url}" />
9.<!-- 用户名 -->
10.<property name="user" value="${user}" />
11.<!-- 密码 -->
12.<property name="password" value="${password}" />
13.<!-- 当链接池中的链接耗尽的时候c3p0一次同时获取的链接数 -->
14.<property name="acquireIncrement" value="5"></property>
15.<!-- 初始链接池大小 -->
16.<property name="initialPoolSize" value="10"></property>
17.<!-- 链接池中链接最小个数 -->
18.<property name="minPoolSize" value="5"></property>
19.<!-- 链接池中链接最大个数 -->
20.<property name="maxPoolSize" value="20"></property>
21.</bean>
22.<!--3 配置MyBatis会话工厂bean -->
23.<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
24.<!-- 数据源 -->
25.<property name="dataSource" ref="datasource"/>
26.<!-- 别名 -->
27.<property name="typeAliasesPackage" value="com.qianfeng.mybatis.entity"/>
28.<!-- sql映射文件路径 -->
29.<property name="mapperLocations" value="classpath:mappers/*Mapper.xml"/>
30.</bean>
31.<!--4 自动扫描对象关系映射 -->
32.<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
33.<!--指定会话工厂,若是当前上下文中只定义了一个则该属性可省去 -->
34.<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
35.<!-- 指定要自动扫描接口的基础包,实现接口 -->
36.<property name="basePackage" value="com.qianfeng.mybatis.dao"/>
37.</bean>
38.<!--5 容器自动扫描IOC组件 -->
39.<context:component-scan base-package="com.qianfeng.mybatis"/>
编写Mapper接口
以一个基本的查询功能为例
代码示例:
1./**mysql

    • 用户DAO接口
  1. */

4.public interface UserDAO {程序员

  1. /**
    • 查询全部用户
  2. */
  3. List<User> selectAll();

9.}spring

编写Mapper 映射文件
编写Mapper接口的映射,实现查询功能
代码示例:
1.<?xml version="1.0" encoding="UTF-8"?>
2.<!DOCTYPE mappersql

  1. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  2. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

5.<!--mapper是映射,namespace是设置对应的DAO接口-->
6.<mapper namespace="com.qianfeng.ssm.dao.UserDAO">数据库

  1. <!--配置数据库返回结果映射-->
  2. <resultMap id="userMap" type="User">
  3. <!--id用于配置主键,property是实体类的属性名,column是表中的字段名-->
  4. <id property="id" column="u_id"></id>
  5. <!--result配置主键外其余列-->
  6. <result property="name" column="u_name"></result>
  7. <result property="password" column="u_password"></result>
  8. <result property="realname" column="u_realname"></result>
  9. <result property="age" column="u_age"></result>
  10. <result property="gender" column="u_gender"></result>
  11. <result property="img" column="u_img"></result>
  12. </resultMap>
  13. <!--配置查询语句-->
  14. <select id="selectAll" resultMap="userMap">
  15. select * from tb_user
  16. </select>

24.</mapper>安全

Spring整合JUnit进行单元测试
使用Spring整合JUnit,测试Mapper接口是否能用SpringIOC实现注入:
代码示例
1.@ContextConfiguration(locations = "classpath:applicationContext.xml")
2.@RunWith(SpringJUnit4ClassRunner.class)
3.public class TestDAO {
4.mybatis

  1. @Resource
  2. UserDAO userDAO;

7.app

  1. @Test
  2. public void testUserDAO(){
  3. List<User> users = userDAO.selectAll();
  4. users.forEach((user)->System.out.println(user));
  5. }

13.}
图片描述框架

总结使用Spring整合MyBatis后,可以利用Spring强大的IOC机制,将Mapper接口的代理对象注入进来,从而避免了手动建立SqlSessionFactory和SqlSession对象的麻烦,同时Spring对SqlSession的访问方式进行了优化,解决了SQLSession的线程安全问题。

相关文章
相关标签/搜索