增删改查中的查询操作,对所有的普通管理员进行查询操作。
效果展示:
不仅可以在打开页面时进行对管理员的自动查询操作,还可以在输入框进行查询。
首先是前端向后端发送POST请求,后端接收到请求,如果是有参数传到后端那就是搜索框查询,如果没有参数,就是页面加载所有管理员的整体查询。
见前端代码:
methods: {
adminFind(){
this.$http.post("admin/admin/admins/",this.form).then(resp => {
this.tableData = resp.data.data;
})
},
},
mounted() {
this.adminFind();
}
后端接收响应:
@RestController
@RequestMapping("/admin/admin")
public class AdminController {
@Autowired
AdminService adminService;
@PostMapping("/admins/")
CommonData returnResult(@RequestBody Admin admin) {
CommonData commonData=adminService.findAdmins(admin);
return commonData;
}
}
分别调用Service层,Dao层,最后通过MyBatis查询。
数据库建表如下: 一共三个表,管理员表,角色表,管理员角色关系表。
对管理员角色表为什么要单独列出来的解释:一个管理员可以拥有多个角色,并不是一对一的关系,所以不能进行管理员表和角色表的关联查询。
MyBatis写法:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ffyc.news.dao.AdminDao">
<resultMap id="findAdmins" type="Admin">
<id property="id" column="id"></id>
<result property="account" column="account"></result>
<result property="gender" column="gender"></result>
<result property="adminPhone" column="admin_phone"></result>
<result property="address" column="address"></result>
<result property="type" column="type"></result>
<result property="operTime" column="oper_time"></result>
<!--封装操作人-->
<association property="admin" javaType="Admin">
<result property="account" column="operaccount"></result>
</association>
<collection property="roles" javaType="list" ofType="Role" select="findRolesById" column="id"></collection>
</resultMap>
<select id="findAdmins" resultMap="findAdmins">
SELECT
a.id,
a.account,
a.gender,
a.admin_phone,
a.address,
a.type,
a.oper_time,
oa.account operaccount
FROM
admin a
LEFT JOIN admin oa
ON oa.id = a.adminid
WHERE a.type = 1
<if test="account!=''">and a.account = #{account}</if>
<if test="gender!=''">and a.gender = #{gender}</if>
</select>
<select id="findRolesById" resultType="Role">
SELECT
r.name
FROM
ROLE r
LEFT JOIN admin_role ar
ON r.id = ar.roleid
WHERE ar.adminid = #{id};
</select>
</mapper>