温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-08-07 11:09:52 来源:ITPUB博客 阅读:160 作者:好程序员IT 栏目:编程语言

  好程序员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=123456

接下来在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.  /**

2.   * 用户 DAO 接口

3.   */

4.  public interface UserDAO {

5.        /**

6.       * 查询所有用户

7.       */

8.      List<User> selectAll();

9.  }

编写Mapper 映射文件

编写Mapper 接口的映射,实现查询功能

代码示例:

1.  <?xml version="1.0" encoding="UTF-8"?>

2.  <!DOCTYPE mapper

3.          PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

4.          "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

5.  <!--mapper 是映射, namespace 是设置对应的 DAO 接口 -->

6.  <mapper namespace="com.qianfeng.ssm.dao.UserDAO">

7.      <!-- 配置数据库返回结果映射 -->

8.      <resultMap id="userMap" type="User">

9.          <!--id 用于配置主键, property 是实体类的属性名, column 是表中的字段名 -->

10.          <id property="id" column="u_id"></id>

11.          <!--result 配置主键外其他列 -->

12.          <result property="name" column="u_name"></result>

13.          <result property="password" column="u_password"></result>

14.          <result property="realname" column="u_realname"></result>

15.          <result property="age" column="u_age"></result>

16.          <result property="gender" column="u_gender"></result>

17.          <result property="img" column="u_img"></result>

18.      </resultMap>

19.      <!-- 配置查询语句 -->

20.      <select id="selectAll" resultMap="userMap">

21.          select * from tb_user

22.      </select>

23.    

24.  </mapper>

Spring 整合 JUnit 进行单元测试

使用Spring 整合 JUnit ,测试 Mapper 接口是否能用 SpringIOC 实现注入:

代码示例

1.  @ContextConfiguration(locations = "classpath:applicationContext.xml")

2.  @RunWith(SpringJUnit4ClassRunner.class)

3.  public class TestDAO {

4. 

5.      @Resource

6.      UserDAO userDAO;

7. 

8.      @Test

9.      public void testUserDAO(){

10.           List<User> users = userDAO.selectAll();

11.          users.forEach((user)->System.out.println(user));

12.      }

13.  }

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

总结

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI