MyBatis Generator 代码优化:使用动态 SQL 实现去重分页查询
使用 MyBatis 的动态 SQL 语句来实现根据 name 去重分页查询,可以有效提高代码效率和可读性。以下是如何在 MyBatis Generator 生成的代码中实现此功能:
- 添加 countByName 方法:
<select id="countByName" parameterType="java.lang.String" resultType="java.lang.Integer">
select count(distinct name) from table_name where name like concat('%', #{name}, '%')
</select>
该方法用于查询符合条件的记录总数,使用 count(distinct name) 可以确保只统计每个 name 的出现次数。
- 添加 selectByName 方法:
<select id="selectByName" parameterType="java.util.Map" resultType="com.example.model.User">
select * from table_name where name like concat('%', #{name}, '%') group by name limit #{startIndex}, #{pageSize}
</select>
该方法用于分页查询符合条件的记录,使用 group by name 可以确保每个 name 只出现一次,limit #{startIndex}, #{pageSize} 实现分页功能。
- 使用 PageHelper 插件:
PageHelper.startPage(pageNum, pageSize);
Map<String, Object> params = new HashMap<>();
params.put("name", name);
params.put("startIndex", (pageNum - 1) * pageSize);
params.put("pageSize", pageSize);
List<User> userList = userMapper.selectByName(params);
int total = userMapper.countByName(name);
PageInfo<User> pageInfo = new PageInfo<>(userList);
pageInfo.setTotal(total);
return pageInfo;
在 Java 代码中,使用 PageHelper 插件可以自动在查询语句中添加 limit 语句,实现分页查询。最后,将查询结果封装成 PageInfo 对象返回给调用方。
总结:
通过以上步骤,我们可以在 MyBatis Generator 生成的代码中实现根据 name 去重分页查询的功能。这种方法不仅可以提高代码的效率,还可以提高代码的可读性,方便维护和扩展。
原文地址: https://www.cveoy.top/t/topic/kfC7 著作权归作者所有。请勿转载和采集!