以下是对"springboot使用Mybatis(xml和注解)过程全解析"的详细讲解:
一、前言
Mybatis是一款优秀的基于Java的持久化框架,它拥有非常高灵活性,除了能够适配各种传统的数据库,还能够适应各种数据源甚至于比较小众的数据存储方式。而SpringBoot则是近些年最火热的Web框架之一,它的主打特点在于快速集成,可以让Java项目开发人员更加专注于业务开发而将底层框架的细节和繁琐配置让SpringBoot帮忙处理。
这份攻略旨在让初学者通过简明易懂的方式了解如何使用Mybatis来完成数据库的操作,同时,结合SpringBoot特点给出一些方便易用的解决方案。
二、环境搭建
- 开发工具:IntelliJ IDEA
- SpringBoot版本:2.xx
- Mybatis版本:3.xx
- 数据库:MySQL
在开始之前,建议事先创建好数据库表,并配置好数据库的连接信息。
- 使用SpringBoot的Initializr来创建一个项目
- 在项目的pom.xml引入以下依赖:
<!--引入Spring相关依赖-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--引入MyBatis相关依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!--引入数据库连接池相关依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--引入测试相关依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
- 配置数据源和MyBatis的基本信息
# 数据源配置
spring.datasource.url = jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
# MyBatis 配置
mybatis.mapper-locations=classpath:mapper/*.xml # xml文件存放路径,可以不需要
mybatis.type-aliases-package=com.example.demo.entity # 实体类所在包路径
- 配置Mapper扫描路径
在启动类中增加如下配置:
@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
在本例中,mapper接口存放的陆地为com.example.demo.mapper
,这里的注解就是告诉SpringBoot将这个包下与Mapper有关的bean的注入交给Mybatis来处理。
三、使用Mybatis注解方式完成数据库查询
Mybatis的注解方式相较于XML方式,更加简洁,易于使用,也比较容易理解。
以查询user表中userId=1的所有数据为例,我们可以这样做:
- 先创建一个UserMapper接口,并在里面定义一个查询操作方法:
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface UserMapper {
/**
* 查询所有用户信息
* @return
*/
@Select("SELECT * FROM user WHERE userId = 1")
List<User> selectUserByUserId();
}
- 在UserMapper所在包路径下,创建一个User类来封装查询之后获得的数据:
public class User {
private Integer userId;
private String userName;
private Integer userAge;
private Integer userGender;
//省略setter和getter方法
}
- 在controller层调用Mapper中的方法并返回结果
@RestController
public class UserController {
@Autowired
private UserMapper userMapper;
@GetMapping("/user")
public List<User> getUser() {
return userMapper.selectUserByUserId();
}
}
完成上述步骤之后,启动应用,访问地址http://localhost:8080/user
,可以成功从数据库中查询到相应的数据并返回。
四、使用Mybatis xml方式完成数据库操作
Mybatis最早版本的持久化方法是使用xml的方式定义SQL语句,这种方式相较于注解方式,更加稳定,适用于复杂场景。
还是以User表为例,查询所有数据,我们可以这样做:
- 在resources目录下创建一个文件夹mapper,并创建UserMapper.xml文件,将查询操作定义在该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.example.demo.mapper.UserMapper">
<select id="selectUserAll" resultType="com.example.demo.entity.User">
SELECT * FROM user
</select>
</mapper>
- 修改UserMapper接口,并将操作方法对应的SQL语句定义在xml文件中:
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserMapper {
/**
* 查询所有用户信息
* @return
*/
List<User> selectUserAll();
}
- 在application.properties中增加mapper文件的相对路径:
# mybatis相关配置
mybatis.mapper-locations=classpath:mapper/*.xml
- 在controller层调用Mapper中的方法并返回结果
@RestController
public class UserController {
@Autowired
private UserMapper userMapper;
@GetMapping("/user")
public List<User> getUserAll() {
return userMapper.selectUserAll();
}
}
这里需要注意,因为UserMapper中包含了两种定义方式,我们将查询所有数据的方法名修改了一下,以保证不与之前冲突。
完成上述步骤之后,启动应用,访问地址http://localhost:8080/user
,即可成功从数据库中查询到所有数据并返回。
五、总结
Mybatis作为持久层框架之一,具有非常广泛的使用场景。SpringBoot则是当前最受欢迎的Java Web框架之一,它能够让我们更加专注于项目的业务逻辑,而将底层框架的细节看作是自己代码中的一部分。结合二者的优势,我们能够快速开发出健壮、高性能的Web应用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot使用Mybatis(xml和注解)过程全解析 - Python技术站