微前端架构如何改变企业的开发模式与效率提升
683
2023-05-05
MyBatis 三表外关联查询的实现(用户、角色、权限)
一、数据库结构
二、查询所有数据记录(SQL语句)
SQL语句:
SELECT u.*, r.*, a.* FROM
(
(
( user u INNER JOIN user_role ur ON ur.user_id = u.user_id )
INNER JOIN role r ON r.role_id = ur.role_id
)
INNER JOIN role_authority ra ON ra.role_id = r.role_id
)
INNER JOIN authority a ON ra.authority_id = a.authority_id
三、详细代码(第一中方式)
1、实体类entity
package cn.lemon.demo.entity;
import lombok.Data;
import java.io.Serializable;
@Data
public class AuthorityEntity implements Serializable {
private Integer authorityId;
private String authorityName;
private String authorityDescription;
}
package cn.lemon.demo.entity;
import lombok.Data;
import java.io.Serializable;
@Data
public class RoleEntity implements Serializable {
private Integer roleId;
private String roleName;
private String roleDescription;
}
package cn.lemon.demo.entity;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Data
public class UserEntity implements Serializable {
private Integer userId;
private String userName;
private String userSex;
private Date userBirthday;
private String userAddress;
private List
private List
}
2、数据访问层dao、Mhttp://apper
package cn.lemon.demo.dao;
import cn.lemon.demo.entity.UserEntity;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface IUserDao {
/**
* 查询所有关联的数据
*
* @return
*/
List
}
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
SELECT u.*, r.*, a.* FROM
(
(
( user u INNER JOIN user_role ur ON ur.user_id = u.user_id )
INNER JOIN role r ON r.role_id = ur.role_id
)
INNER JOIN role_authority ra ON ra.role_id = r.role_id
)
INNER JOIN authority a ON ra.authority_id = a.authority_id
3、业务层service
package cn.lemon.demo.service;
import cn.lemon.demo.entity.UserEntity;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public interface IUserService {
List
}
package cn.lemon.demo.service.impl;
import cn.lemon.demo.dao.IUserDao;
import cn.lemon.demo.entity.UserEntity;
import cn.lemon.demo.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements IUserService {
@Autowired
private IUserDao userDao;
@Override
public List
return userDao.selectAllUserRoleAuthority();
}
}
4、测试类
package cn.lemon.demo.service.impl;
import cn.lemon.demo.entity.UserEntity;
import cn.lemon.demo.service.IUserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
@SpringBootTest
@RunWith(SpringRunner.class)
public class UserServiceImplTest {
@Autowired
private IUserService userService;
@Test
public void selectAllUserRoleAuthority() {
List
for (UserEntity userEntity : userEntities) {
System.out.println(
"用户姓名:" + userEntity.getUserName() +
"用户地址:" + userEntity.getUserAddress() +
"权限列表:" + userEntity.getAuthorityEntityList() +
"角色列表:" + userEntity.getRoleEntityList());
System.out.println("--------------------------------------");
}
}
}
四、详细代码(第二中方式)
1、实体类entity (实体类可以省略不写)
package cn.lemon.demo.entity;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class UserEntity implements Serializable {
private Long userId;
private String userName;
private String userSex;
private Date userBirthday;
private String userAddress;
}
package cn.lemon.demo.entity;
import lombok.Data;
import java.io.Serializable;
@Data
public clasiVICfzaFDs RoleEntity implements Serializable {
private Long roleId;
private String roleName;
private String roleDescription;
}
package cn.lemon.demo.entity;
import lombok.Data;
import java.io.Serializable;
@Data
public class AuthorityEntity implements Serializable {
private Long authorityId;
private String authorityName;
private String authorityDescription;
}
2、数据访问层dao、Mapper
package cn.lemon.demo.dao;
import java.util.List;
import java.util.Map;
public interface IUserDao {
List
}
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
iVICfzaFD SELECT
u.user_id userId,
u.user_name userName,
u.user_sex userSex,
u.user_birthday userBirthday,
u.user_address userAddress,
r.role_name roleName,
r.role_description roleDescription,
a.authority_name authorityName,
a.authority_description authorityDescription
FROM
(
(
( USER u INNER JOIN userhttp://_role ur ON u.user_id = ur.user_id )
INNER JOIN role r ON r.role_id = ur.role_id
)
INNER JOIN role_authority ra ON ra.role_id = r.role_id
)
INNER JOIN authority a ON a.authority_id = ra.authority_id
3、业务层service (接口及实现类)
package cn.lemon.demo.service;
import java.util.List;
import java.util.Map;
public interface IUserService {
List
}
package cn.lemon.demo.service.impl;
import cn.lemon.demo.dao.IUserDao;
import cn.lemon.demo.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class UserServiceImpl implements IUserService {
@Autowired
private IUserDao userDao;
@Override
public List
return userDao.selectAllUserRoleAuthority();
}
}
4、控制层controller
package cn.lemon.demo.controller;
import cn.lemon.demo.service.IUserService;
import com.alibaba.fastjson.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
import java.util.Map;
@Controller
@RequestMapping(value = "/")
public class SystemController {
@Autowired
private IUserService userService;
/**
* 跳转页面
*
* @return
*/
@RequestMapping(value = "index")
public String index() {
return "index";
}
/**
* 查询所有关联的数据 用户信息,角色信息,权限信息
* @return
*/
@RequestMapping(value = "selectAll",method = RequestMethod.POST)
@ResponseBody
public String selectAll(){
List
JSONObject json = new JSONObject();
json.put("mapList",mapList);
System.out.println(json.toJSONString());
return json.toJSONString();
}
}
5、前端页面 index.html
用户编号 用户姓名 用户性别 用户生日 用户地址 角色名称 角色描述 权限名称 权限描述
$(function () {
$.ajax({
type: "post",
url: '/selectAll',
contentType: "application/json;charset=utf-8",
dataType: 'json',
//async: false,/*表示请求为同步方式*/
success: function (data) {
//在
中追加数据for (var i = 0; i < data.mapList.length; i++) {
$("#tbody").append("
"
"
"
"
"
"
"
"
"
}
},
error: function () {
window.alert("查询失败");
}
});
});
运行 localhost:8080 显示:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~