springboot中使用mybatis实现动态sql的详细流程
时间: 2024-03-21 15:40:33 浏览: 182
在Spring Boot中使用MyBatis实现动态SQL的详细流程如下:
1. 引入MyBatis和MyBatis-Plus依赖:在pom.xml文件中添加MyBatis和MyBatis-Plus的依赖。
```xml
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-spring-boot-starter.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
```
2. 配置数据源:在application.properties中配置数据源。
```properties
spring.datasource.url=jdbc:mysql://localhost:3306/db_name?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
```
3. 创建实体类:创建需要查询的实体类。
```java
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
```
4. 创建Mapper接口:创建Mapper接口,并使用@Mapper注解将其注册到Spring容器中。
```java
@Mapper
public interface UserMapper extends BaseMapper<User> {
List<User> selectByCondition(@Param("name") String name, @Param("email") String email, @Param("age") Integer age);
}
```
5. 创建Mapper.xml文件:在resources/mapper目录下创建Mapper.xml文件,并编写动态SQL语句。
```xml
<mapper namespace="com.example.demo.mapper.UserMapper">
<select id="selectByCondition" resultType="User">
SELECT * FROM user
<where>
<if test="name != null">
AND name = #{name}
</if>
<if test="email != null">
AND email LIKE '%${email}%'
</if>
<if test="age != null">
AND age = #{age}
</if>
</where>
</select>
</mapper>
```
6. 配置MapperScan:在启动类中添加@MapperScan注解,用于扫描Mapper接口。
```java
@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
```
7. 调用Mapper接口:在业务代码中调用Mapper接口的方法,传入参数即可实现动态SQL查询。
```java
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> selectByCondition(String name, String email, Integer age) {
return userMapper.selectByCondition(name, email, age);
}
}
```
通过以上步骤,就可以在Spring Boot中使用MyBatis实现动态SQL的查询功能了。
阅读全文