前提:
之前了解到Mybatis-Plus执行完SQL后都需要在一个XML文件中指定resultType,通常指定的都是实体类或者新建一个VO类,但有时候新建太多VO类也不利于维护,所以就写个小Demo,研究一下看能不能把SQL查询结果直接返回给前台,这样也省事(。・∀・)ノ゙
正文:
1:新建接口方法
list里面是 object ,因为查询的结果不是一个特定实体类,而且也不用新建VO类
public interface UserMapper extends BaseMapper<User> {
// 注意:这里使用Object,而不是之前的实体类或者VO类
List<Object> getAll();
}
2:XML文件实现方法
随便写一个SQL语句,通常情况下resultType都是指定一个实体类或者VO类完成自动封装,但有时无需创建VO类就可实现功能。注意:这里的resultType是java.util.Map。当然你可可以试试其它的,应该没什么大问题
<?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="byb.mapper.UserMapper">
<!--执行自定义SQL将返回结果保存到Map中-->
<select id="getAll" resultType="java.util.Map">
SELECT u.id,u.username,u.password,r.role_name,r.role_desc
FROM `user` u
LEFT JOIN uandr a ON u.id = a.user_id
LEFT JOIN role r ON a.role_id = r.id
</select>
</mapper>
3:Controller调用
@RestController
public class TestController {
@Resource
UserMapper userMapper;
@RequestMapping("/all")
public List<Object> getAll() {
System.out.println("前台调用借口,直接返回SQL查询结果");
List<Object> list = userMapper.getAll();
return list;
}
}
4:测试结果
如图所示,调用接口后不用VO类也可以获取到相应数据,如果前台使用Layui的话这返回数据直接丢到数据表格的回调里就完事了,省时省力,嘻嘻o(〃‘▽’〃)o
5:总结
搞定收工,睡觉睡觉!