本文已参与「新人创作礼」活动,一起开启掘金创作之路。
本文讲述一下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。就是下面这两个东西。
然后呢你还需要准备好你的mysql数据源(就是连接mysql的配置),如下。
整合后代码已赋上。
@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>
运行结果如下: