spring纯注解整合mybatis

266 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。
本文讲述一下spring如何纯注解整合mybatis!很多同学应该就是想看这种的吧@CV工程师
纯干货!不废话!直接带你写!

spring整合mybatis

坐标引入

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <!--这个依赖中已经写了bean和core,所以不需要在单独引入依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.10.RELEASE</version>
    </dependency>
    <!--mybatis-spring依赖-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>2.0.7</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.2.10.RELEASE</version>
    </dependency>
    <!-- 数据区驱动-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.26</version>
    </dependency>
    <!-- 数据源-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.2.8</version>
    </dependency>
    <!-- mybatis-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.5</version>
    </dependency>
  </dependencies>

写一下propertise数据库连接的配置文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_db
jdbc.username=root
jdbc.password=root

根据数据库生成一个POJOs.groovy,就是写一个对应的类来接收你的数据。

package com.yldclass.pojo;


public class TblAccount {
    
    private long id;
    private String name;
    private double money;
    
    @Override
    public String toString() {
        return "TblAccount{" +
            "id=" + id +
            ", name='" + name + ''' +
            ", money=" + money +
            '}';
    }
    
    public long getId() {
        return id;
    }
    
    public void setId(long id) {
        this.id = id;
    }
    
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    
    public double getMoney() {
        return money;
    }
    
    public void setMoney(double money) {
        this.money = money;
    }
    
}

写一个初始化的配置类

@Configuration
public class SpringConfig {

}

写一下mybatis的配置类
首先要明白一点, 要和Spring一起使用 MyBatis,需要在 Spring 应用上下文中定义至少两样东西:一个 SqlSessionFactory 和至少一个数据映射器类。在 MyBatis-Spring 中,可使用 SqlSessionFactoryBean来创建 SqlSessionFactory。就是下面这两个东西。

image.png

然后呢你还需要准备好你的mysql数据源(就是连接mysql的配置),如下。

image.png 整合后代码已赋上。

@Configuration
// @Component
@ComponentScan("com.yldclass")
public class MybatisConfig {
    @Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception{
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource());
        factoryBean.setMapperLocations(new ClassPathResource("TblAccountMapper.xml"));
        return factoryBean.getObject();
    }
    @Bean
    public TblAccountMapper tblAccountMapper() throws Exception {
        SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory());
        return sqlSessionTemplate.getMapper(TblAccountMapper.class);

    }
    @Value("${jdbc.driver}")
    private String driver;
    @Value(("${jdbc.url}"))
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;
    @Bean
    public DataSource dataSource(){
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setUsername(username);
        ds.setPassword(password);
        return ds;
    }
}

【注】setMapperLocations(new ClassPathResource("TblAccountMapper.xml")); 这个方法用来定位你的接口对应mapper的xml文件。

修改spring配置类

@Configuration
@ComponentScan("com.yldclass")
@PropertySource({"classpath:connection-driver.properties"})
public class SpringConfig {

}

写一个mapper接口,直接在接口名以及方法名上【option+回车】,生产对应的xxxMapper.xml文件。

public interface TblAccountMapper {
    // @Select("select * from tbl_account")
    List<TblAccount> selectAll();
}

对应的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.yldclass.dao.TblAccountMapper">
    <select id="selectAll" resultType="com.yldclass.pojo.TblAccount">
        select * from tbl_account;
    </select>
</mapper>

运行结果如下: