SpringBoot和Mybatis的整合
程序员文章站
2024-01-26 12:40:40
...
这里介绍两种整合SpringBoot和Mybatis的模式,分别是“全注解版” 和 “注解xml合并版”。
前期准备
开发环境
- 开发工具:IDEA
- JDK:1.8
- 技术:SpringBoot、Maven、Mybatis
创建项目
项目结构
Maven依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
全注解版
SpringBoot配置文件
这里使用yml格式的配置文件,将application.properties改名为application.yml。
#配置数据源
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/dianping?useUnicode=true&characterEncoding=utf8
username: root
password: 123
driver-class-name: com.mysql.jdbc.Driver
SpringBoot会自动加载application.yml相关配置,数据源就会自动注入到sqlSessionFactory中,sqlSessionFactory会自动注入到Mapper中。
实体类
public class Happiness {
private Long id;
private String city;
private Integer num;
//getters、setters、toString
}
映射类
@Mapper
public interface HappinessDao {
@Select("SELECT * FROM happiness WHERE city = #{city}")
Happiness findHappinessByCity(@Param("city") String city);
@Insert("INSERT INTO happiness(city, num) VALUES(#{city}, #{num})")
int insertHappiness(@Param("city") String city, @Param("num") Integer num);
}
Service类
事务管理只需要在方法上加个注解:@Transactional
@Service
public class HappinessService {
@Autowired
private HappinessDao happinessDao;
public Happiness selectService(String city){
return happinessDao.findHappinessByCity(city);
}
@Transactional
public void insertService(){
happinessDao.insertHappiness("西安", 9421);
int a = 1 / 0; //模拟故障
happinessDao.insertHappiness("长安", 1294);
}
}
Controller类
@RestController
@RequestMapping("/demo")
public class HappinessController {
@Autowired
private HappinessService happinessService;
@RequestMapping("/query")
public Happiness testQuery(){
return happinessService.selectService("北京");
}
@RequestMapping("/insert")
public Happiness testInsert(){
happinessService.insertService();
return happinessService.selectService("西安");
}
}
测试
http://localhost:8080/demo/query
http://localhost:8080/demo/insert
注解xml合并版
项目结构
SpringBoot配置文件
#配置数据源
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/dianping
username: root
password: 123
driver-class-name: com.mysql.jdbc.Driver
#指定mybatis映射文件的地址
mybatis:
mapper-locations: classpath:mapper/*.xml
映射类
@Mapper
public interface HappinessDao {
Happiness findHappinessByCity(String city);
int insertHappiness(HashMap<String, Object> map);
}
映射文件
<mapper namespace="com.example.demo.dao.HappinessDao">
<select id="findHappinessByCity" parameterType="String" resultType="com.example.demo.domain.Happiness">
SELECT * FROM happiness WHERE city = #{city}
</select>
<insert id="insertHappiness" parameterType="HashMap" useGeneratedKeys="true" keyProperty="id">
INSERT INTO happiness(city, num) VALUES(#{city}, #{num})
</insert>
</mapper>
Service类
事务管理只需要在方法上加个注解:@Transactional
@Service
public class HappinessService {
@Autowired
private HappinessDao happinessDao;
public Happiness selectService(String city){
return happinessDao.findHappinessByCity(city);
}
@Transactional
public void insertService(){
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("city", "西安");
map.put("num", 9421);
happinessDao.insertHappiness(map);
int a = 1 / 0; //模拟故障
happinessDao.insertHappiness(map);
}
}
Controller类
@RestController
@RequestMapping("/demo")
public class HappinessController {
@Autowired
private HappinessService happinessService;
@RequestMapping("/query")
public Happiness testQuery(){
return happinessService.selectService("北京");
}
@RequestMapping("/insert")
public Happiness testInsert(){
happinessService.insertService();
return happinessService.selectService("西安");
}
}
测试
http://localhost:8080/demo/query
http://localhost:8080/demo/insert
推荐阅读
-
SpringBoot学习-(六)SpringBoot与Mybatis整合
-
SpringBoot和Mybatis的整合
-
spring和mybatis泛型接口的整合(一)
-
Win2003中apache2整合tomcat5和IIS6的方法
-
spring和mybatis泛型接口的整合(一)
-
springboot2.0整合mongoDB进行增删改查和聚合,分页
-
网站与此同时开启DZ的UC登录整合和QQ快捷登录碰到难题了
-
springboot使用log4j2全局请求接口监控及mybatis的sql语句日志记录
-
记录 springboot整合elasticsearch搭建过程遇到的坑
-
SpringBoot 整合 Shiro 密码登录的实现代码