Mybatis和Spring框架整合

Mybatis和Spring框架整合

步骤

添加所需的jar包

一、jar包

maven依赖pom.xml

<mybatis.version>3.2.8</mybatis.version>
<spring.version>4.0.2.RELEASE</spring.version>


<!-- c3p0连接池 -->
<dependency>
    <groupId>com.mchange</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.5.5</version>
</dependency>
<!-- spring和mybatis整合框架包(如果mybatis版本3.多则整合包不能用2.多,版本不兼容) -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.1</version>
</dependency>
<!-- spring框架包 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-oxm</artifactId>
    <version>${spring.version}</version>
</dependency>
<!-- spring事务 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${spring.version}</version>
</dependency>
<!-- spring-AOP -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-expression</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>${spring.version}</version>
</dependency>

<!-- mybatis框架包 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>${mybatis.version}</version>
</dependency>
<!--mysql驱动-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.35</version>
</dependency>
<!-- lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.8</version>
</dependency>
<!-- log4j -->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.12</version>
</dependency>

二、配置文件

在resource下

1、创建database.properties(jdbc.properties)用于连接数据库

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:端口号/数据库名?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false
jdbc.username=数据库用户名
jdbc.password=数据库用户密码
jdbc.maxPoolSize=20	最大连接数(非必须)

2、创建mybatis.xml用于配置mybatis(如果不用打印mybatis日志也可以不创建,非必须)

<?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>
    <settings>
        <!-- 打印日志 STDOUT_LOGGING为输出SQL语句到控制台 -->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
</configuration>

3、创建整合配置文件spring-mybatis.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 读取数据库配置文件jdbc.properties -->
    <context:property-placeholder location="classpath:database.properties"/>

    <!-- 数据库c3p0连接池 value按properties的key名来 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="maxPoolSize" value="${jdbc.maxPoolSize}"/>
    </bean>

    <!-- 配置SqlSessionFactory对象 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 注入数据库连接池 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 扫描pojo包 使用别名 -->
        <property name="typeAliasesPackage" value="com.XXXXXXXXXXXXXXXXXXX.pojo"/>
        <!-- 扫描sql配置文件:mapper需要的xml文件,不要忘记在resource下创建对应mappers文件夹!!! -->
        <property name="mapperLocations" value="classpath:mappers/*.xml"/>
        <!--读取mybatis主配置文件-->
        <property name="configLocation" value="classpath:mybatis.xml"/>
    </bean>

    <!-- 配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 注入sqlSessionFactory(可写可不写,相当于@Recource注解,有就按名字,名字没有就按数据类型,所以即使不写这个还是能找到) -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <!-- 给出需要扫描Dao接口包 -->
        <property name="basePackage" value="com.XXXXXXXXXXXXXX.dao"/>
    </bean>

    <!-- 扫描service包下所有使用注解的类型 -->
    <context:component-scan base-package="com.XXXXXXXXXXXX.service"/>
</beans>

tips:XXXXXXXX部分记得改成自己的

至此,配置文件部分完成

三、代码

进行测试

实体类User

@Data
public class User {
	private Integer id; //id 
	private String userCode; //用户编码
	private String userName; //用户名称
	private String userPassword; //用户密码
}

UserDao接口

/**
 * @Author Tuerlechat,
 * @Date 2022/11/3
 */
public interface UserDao {
    /**
     * 根据id查询用户信息
     * @param id
     * @return
     */
    public User findUserById(Integer id);
}

UserDao.xml

<?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="com.r.dao.UserDao">
    <!--方法名与ID必须一致-->
    <!--parameterType 传入参数类型-->
    <!--resultType 返回值类型-->
    <select id="findUserById" resultType="User">
        select * from jntm_user where id = #{id}
    </select>

</mapper>

UserService接口

/**
 * @Author Tuerlechat,
 * @Date 2022/11/3
 */
public interface UserService {
    /**
     * 根据id查询用户信息
     * @param id
     * @return
     */
    public User findUserById(Integer id);
}

UserServiceImpl实现

/**
 * @Author Tuerlechat,
 * @Date 2022/11/3
 */
@Service    //注解记得写
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;

    @Override
    public User findUserById(Integer id) {
        return userDao.findUserById(id);
    }
}

测试类

/**
 * @Author Tuerlechat,
 * @Date 2022/11/3
 */
public class UserDaoTest extends TestCase {

    @Test
    public void testFindUserById() {
        //读取配置文件
        ApplicationContext applicationContext =  new ClassPathXmlApplicationContext("spring-mybatis.xml");
        //获取Service实现bean
        UserService userService = (UserService) applicationContext.getBean("userServiceImpl");
        User user = userService.findUserById(17);
        System.out.println(user.toString());
    }
}

能成功运行就说明整合成功了

请添加图片描述

整合的本质就相当于把mybatis中的配置都汇合到了spring中

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Tuerlechat,

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

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

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

打赏作者

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

抵扣说明:

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

余额充值