MyBatis之Spring整合

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

driver=com.mysql.cj.jdbc.Driver

url=jdbc:mysql://localhost/java1903?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&useSSL=false

user=root

password=123456

接下来在Spring配置文件中整合MyBatis

<!-1 引入属性文件,在配置中占位使用 ->

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

<!-2 配置C3P0数据源 ->

<bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">

<!-驱动类名 ->

<property name="driverClass" value="${driver}" />

<!- url ->

<property name="jdbcUrl" value="${url}" />

<!- 用户名 ->

<property name="user" value="${user}" />

<!- 密码 ->

<property name="password" value="${password}" />

<!- 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数 ->

<property name="acquireIncrement" value="5"></property>

<!- 初始连接池大小 ->

<property name="initialPoolSize" value="10"></property>

<!- 连接池中连接最小个数 ->

<property name="minPoolSize" value="5"></property>

<!- 连接池中连接最大个数 ->

<property name="maxPoolSize" value="20"></property>

</bean>

<!-3 配置MyBatis会话工厂bean ->

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<!- 数据源 ->

<property name="dataSource" ref="datasource"/>

<!- 别名 ->

<property name="typeAliasesPackage" value="com.qianfeng.mybatis.entity"/>

<!- sql映射文件路径 ->

<property name="mapperLocations" value="classpath:mappers/*Mapper.xml"/>

</bean>

<!-4 自动扫描对象关系映射 ->

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

<!-指定会话工厂,如果当前上下文中只定义了一个则该属性可省去 ->

<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>

<!- 指定要自动扫描接口的基础包,实现接口 ->

<property name="basePackage" value="com.qianfeng.mybatis.dao"/>

</bean>

<!-5 容器自动扫描IOC组件 ->

<context:component-scan base-package="com.qianfeng.mybatis"/>

编写Mapper接口

以一个基本的查询功能为例



代码示例:

/**用户DAO接口*/

public interface UserDAO {

/**查询所有用户*/

List<User> selectAll();

}

编写Mapper 映射文件

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

代码示例:



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

<!DOCTYPE mapper

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

</resultMap>

<!-配置查询语句->

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

select * from tb_user

</select>

</mapper>

Spring整合JUnit进行单元测试

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

代码示例



@ContextConfiguration(locations = "classpath:applicationContext.xml")
@RunWith(SpringJUnit4ClassRunner.class)
public class TestDAO {
@Resource
UserDAO userDAO;
@Test
public void testUserDAO(){
List<User> users = userDAO.selectAll();
users.forEach((user)->System.out.println(user));
}
}

总结

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我要做那最靓的仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值