2-Mybatis整合SpringBoot快速上手

it2024-10-14  37

Mybatis整合SpringBoot快速上手

有了Mybatis独立项目的经验,Mybatis整合Springboot会变得非常容易。

创建SpringBoot项目

![image.png](https://img-blog.csdnimg.cn/img_convert/1693103864267a04bee2e60737250777.png#align=left&display=inline&height=282&margin=[object Object]&name=image.png&originHeight=282&originWidth=363&size=11230&status=done&style=none&width=363)

Mybatis整合SpringBoot

SpringBoot整合Mybatis就更简单了,因为有一部分工作SpringBoot框架为我们完成了!

添加依赖

<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.30</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.14</version> </dependency> <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>2.1.0</version> </dependency>

核心配置

我们之前写单独项目的时候,是不是要写一个核心xml,就是这个xml让爷爷(SqlSessionFactoryBuilder)可以生出来爸爸(SqlSessionFactory),在SpringBoot中当然可以这样做,写一个xml,然后将这个xml告诉SpringBoot,不过想在我们有一个更简单的方式,通过springboot的配置文件和注解,我们告诉springboot mybatis的配置在哪里,这样就不用创建xml了

在springboot的application.yml中添加如下配置:

spring: datasource: url: jdbc:mysql://localhost:3306/blog username: root password: AaA19980818 driver-class-name: com.mysql.jdbc.Driver mybatis: typeAliasesPackage: com.example.demo.entity mapperLocations: classpath:mapper/*.xml server: port: 8081

在springboot的启动类添加如下注解:

@SpringBootApplication @MapperScan("com.example.demo.dao") public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }

yml文件中的mapperLocations告诉springboot所有的XXXMapper.xml文件在哪里,启动类的注解告诉SpringBoot所有的XXXDao接口在哪里,这样所有的接口和实现类都在Springboot的掌握之中。

接下来我们就不用生成爷爷(SqlSessionFactoryBuilder)、爸爸(SqlSessionFactory)和儿子(SqlSession)了,这些SpringBoot都为我们解决了。只需要写出User、UserDao和UserDao.xml就可以了

静态对应

User.java

@Data public class User { private Long id; private String nickname; private String username; private String password; private String email; private String avatar; private Integer type; private Date create_time; private Date update_time; }

动态接口

public interface UserDao { User getUserById(Long id); }

实现类

<?xml version="1.0" encoding="UTF8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.demo.dao.UserDao"> <select id="getUserById" resultType="com.example.demo.entity.User" parameterType="Long">select * from blog.t_user where id = #{id} </select> </mapper>

验证

最后我们编写一个controller验证一下吧!

@RestController @RequestMapping("/user") public class UserController { @Autowired private UserDao userDao; @RequestMapping("/getUserById") public User getUserById(){ return userDao.getUserById((long)1); } }

快速上手工程目录结构

![image.png](https://img-blog.csdnimg.cn/img_convert/85d1194bb6ecbcc266c8b9c7d9657851.png#align=left&display=inline&height=322&margin=[object Object]&name=image.png&originHeight=322&originWidth=488&size=13966&status=done&style=none&width=488)

运行结果

![image.png](https://img-blog.csdnimg.cn/img_convert/b6ee0e0d021a5b0edebd01ab67c7c7ae.png#align=left&display=inline&height=91&margin=[object Object]&name=image.png&originHeight=91&originWidth=1842&size=24478&status=done&style=none&width=1842)

最新回复(0)