Spring整合Mybatis

14 篇文章 0 订阅
10 篇文章 0 订阅

Spring 整合 mybatis

将 MyBatis与 Spring 进行整合,主要解决的问题就是将 SqlSessionFactory 对象交由 Spring来管理。所以,该整合,只需要将 SqlSessionFactory 的对象生成器 SqlSessionFactoryBean 注册在 Spring 容器中,再将其注入给 Dao 的实现类即可完成整合

实现 Spring 与 MyBatis 的整合常用的方式:扫描的 Mapper 动态代理

建立数据库表

pom.xml

添加相关依赖:

 
<dependencies>
     <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>4.13.2</version>
     </dependency>
 ​
     <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <version>8.0.28</version>
     </dependency>
 ​
     <dependency>
         <groupId>org.mybatis</groupId>
         <artifactId>mybatis</artifactId>
         <version>3.5.9</version>
     </dependency>
 ​
     <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-core</artifactId>
         <version>5.3.18</version>
     </dependency>
 ​
     <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-beans</artifactId>
         <version>5.3.18</version>
     </dependency>
     <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-context</artifactId>
         <version>5.3.18</version>
     </dependency>
 ​
     <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-jdbc</artifactId>
         <version>5.3.18</version>
     </dependency> ​
 ​
     <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-tx</artifactId>
         <version>5.3.18</version>
     </dependency>
 ​  
     <dependency>
         <groupId>org.mybatis</groupId>
         <artifactId>mybatis-spring</artifactId>
         <version>2.0.6</version>
     </dependency>
     
     <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>druid</artifactId>
         <version>1.2.8</version>
     </dependency>
     
        <!-- 日志 采用log4j2 -->
       <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-api</artifactId>
             <version>2.17.1</version>
         </dependency>
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-core</artifactId>
             <version>2.17.1</version>
         </dependency>
 </dependencies>
 ​
 ​
 

创建实体类

 package entity;
 ​
 public class Dept {
     private int id;
     private String name;
     //省略 get/set  构造方法
  }

创建mapper

 package mapper;
 ​
 import entity.Dept;
 ​
 import java.util.List;
 public interface DeptMapper {
 ​
     /**
      * 查询 所有 的部门信息
      * @return  部门的集合
      */
     List<Dept> findAll();
     
 }
 <?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="mapper.DeptMapper">
     
     <select id="findAll" resultType="Dept" >
         select * from dept
     </select>
 ​
 </mapper>

service

 package service.impl;
 ​
 import entity.Dept;
 import mapper.DeptMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import service.DeptService;
 ​
 import java.util.List;
 ​
 @Service
 public class DeptServiceImpl implements DeptService {
     @Autowired
     private DeptMapper mapper;
 ​
     public List<Dept> findAll() {
         return mapper.findAll();
     }
 }
 ​
 ​
 ​
 ​
 package service;
 ​
 import entity.Dept;
 import java.util.List;
 ​
 ​
 public interface DeptService {
     List<Dept> findAll();
 }
 ​
数据库配置文件
 jdbc.url=jdbc:mysql://localhost:3306/jdbc02
 jdbc.username=root
 jdbc.password=root
 jdbc.driver=com.mysql.cj.jdbc.Driver

日志文件 ---log4j2.properties

 status = info
 name = PropertiesConfig
 ​
 appenders = console
 ​
 appender.console.type = Console
 appender.console.name = STDOUT
 appender.console.layout.type = PatternLayout
 appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
 ​
 rootLogger.level = debug
 rootLogger.appenderRefs = stdout
 rootLogger.appenderRef.stdout.ref = STDOUT

spring 配置文件

在基础的 MyBatis 用法中,是通过 SqlSessionFactoryBuilder 来创建 SqlSessionFactory 的。而在 MyBatis-Spring 中,则使用 SqlSessionFactoryBean 来创建。

 <?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"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                            http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd
                            http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd">
 ​
 ​
     <context:component-scan base-package="service"/>
 ​
     <!--利用 cotext 命名空间 引入 数据库 配置文件 db.properties-->
     <context:property-placeholder location="db.properties"/>
 ​
     <!-- 配置 数据源 -->
     <bean id="ds" class="com.alibaba.druid.pool.DruidDataSource">
          <property name="username" value="${jdbc.username}"/>
          <property name="password" value="${jdbc.password}" />
         <property name="url" value="${jdbc.url}"/>
         <property name="driverClassName" value="${jdbc.driver}"/>
     </bean>
 ​
 ​
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
          <property name="dataSource" ref="ds"/>
          <property name="typeAliasesPackage" value="entity"/>
          <property name="mapperLocations" value="classpath:mapper/*.xml"/>
           <property name="configuration">
               <bean class="org.apache.ibatis.session.Configuration">
                   <!-- log4j -->
                    <!--<property name="logImpl" value="org.apache.ibatis.logging.log4j.Log4jImpl"/> -->
                     <!-- log4j2 -->
                   <!-- <property name="logImpl" value="org.apache.ibatis.logging.log4j2.Log4j2Impl"/>-->
                   <!-- 控制台 -->
                   <property name="logImpl" value="org.apache.ibatis.logging.stdout.StdOutImpl"/>
               </bean>
           </property>
         <!--加载 mybatis 配置-->
          <!--<property name="configLocation" value="classpath:mybatis-config.xml"/>-->
      </bean>
 ​
     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
         <property name="basePackage" value="mapper" />
          <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
     </bean>
 </beans>

测试类

 import entity.Dept;
 import org.junit.Test;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 import service.DeptService;
 import service.impl.DeptServiceImpl;
 ​
 import java.util.List;
 ​
 public class TestA {
 ​
     @Test
     public void test1(){
         ApplicationContext ac = new ClassPathXmlApplicationContext("application.xml");
         DeptService service = ac.getBean("deptServiceImpl", DeptServiceImpl.class);
         List<Dept> list = service.findAll();
         for(Dept de:list){
             System.out.println(de.getId()+"----"+de.getName());
         }
 ​
     }
 ​
 }

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

射手座的程序媛

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

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

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

打赏作者

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

抵扣说明:

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

余额充值