下面我将详细讲解“SpringBoot整合mybatis通用Mapper+自定义通用Mapper方法解析”的完整攻略。
一、什么是通用Mapper
通用Mapper是Mybatis官方提供的一个插件,它可以自动化生成Mybatis的基本CRUD方法,避免了开发人员重复编写大量类似的Sql代码的繁琐工作。这样能够大大提高开发效率,让我们把重点放在业务逻辑上。
二、SpringBoot整合mybatis通用Mapper
1. 引入依赖
首先,我们需要在pom.xml中引入mybatis-spring-boot-starter和mapper-spring-boot-starter两个依赖。
<dependencies>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
</dependencies>
2. 配置数据源和mapper扫描
在application.properties中配置数据源和mapper扫描路径。
spring.datasource.url=jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis.mapper-locations=classpath:mappers/*.xml
3. 编写实体类和mapper
接下来,我们需要按照约定的规则编写实体类和mapper。
例如,我们先定义一个User实体类:
public class User {
private Integer id;
private String name;
// 省略getter和setter方法
}
然后,我们定义一个UserMapper接口,继承自通用Mapper的接口和tk.mybatis.mapper.common.example.SelectByExampleMapper接口。
public interface UserMapper extends Mapper<User>, SelectByExampleMapper<User> {
// 这里可以添加自定义方法
}
4. 编写Mapper.xml
最后,我们需要编写Mapper.xml文件,这里就不展示简单的CRUD方法了。我们来看一个自定义方法的示例。
<mapper namespace="com.example.mapper.UserMapper">
<!-- 根据条件查询用户列表 -->
<select id="selectByCondition" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List" />
FROM user
WHERE 1 = 1
<if test="name != null and name != ''">
AND name like concat('%', #{name}, '%')
</if>
<if test="id != null">
AND id = #{id}
</if>
</select>
</mapper>
5. 测试自定义方法
编写好自定义Mapper方法后,我们就可以在Service类中调用该方法了。
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> selectByCondition(String name, Integer id) {
Example example = new Example(User.class);
example.createCriteria()
.andLike("name", "%" + name + "%")
.andEqualTo("id", id);
return userMapper.selectByExample(example);
}
}
以上就是SpringBoot整合mybatis通用Mapper的基本流程,没有涉及到一些高级用法,但足以应付大部分开发工作。
三、自定义通用Mapper方法解析
通过上面的例子,我们可以看到自定义通用Mapper方法的调用方式和实际编写一个Mapper方法的步骤是相似的。
自定义通用Mapper方法的步骤如下:
-
在Mapper接口中,添加你需要自定义的方法,提供参数和返回值的定义。
-
在Mapper.xml中,编写自定义方法的sql语句,参数名和Mapper接口中定义的一致。
-
在Service类中,按照自定义方法的定义编写Service方法,然后调用Mapper接口中定义的自定义方法,即可完成对应的业务逻辑。
下面,我们再举一个示例。假如我们要查询所有的用户,并根据年龄和创建时间的先后顺序排序。
- 在Mapper接口中,添加自定义方法。
public interface UserMapper extends Mapper<User> {
List<User> selectAllOrderByAgeAndCreateTimeDesc();
}
- 在Mapper.xml中,编写sql语句。
<mapper namespace="com.example.mapper.UserMapper">
<select id="selectAllOrderByAgeAndCreateTimeDesc" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List" />
FROM user
ORDER BY age ASC, create_time DESC
</select>
</mapper>
- 在Service类中,编写业务逻辑。
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> selectAllOrderByAgeAndCreateTimeDesc() {
return userMapper.selectAllOrderByAgeAndCreateTimeDesc();
}
}
通过上面的示例,我们可以看到自定义通用Mapper方法的使用方法和常规的Mapper方法的使用方法基本一致。
最后,需要注意的是自定义通用Mapper方法也可以通过Mapper接口的继承来实现,只需要按照规范在对应的Mapper.xml文件中定义Sql语句即可。同时需要注意,自定义的Mapper方法的命名需要和Mapper接口中定义的方法名保持一致。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot整合mybatis通用Mapper+自定义通用Mapper方法解析 - Python技术站