• entity层、dao层、mapper层、service层、controller简单总结 记录


    目录

    entity层

    dao层 和 mapper层

    service层

    controller层


    entity层

    • entity 定义实体类,数据模型层 【相当于MVC的M层】
    • 一个实体类对应一个数据表,其中的属性定义数据表中的字段,实体类的字段数一般多于 数据库表中字段数 
    1. package com.ruoyi.common.core.domain.entity;
    2. import java.util.Date;
    3. import java.util.List;
    4. import javax.validation.constraints.*;
    5. import org.apache.commons.lang3.builder.ToStringBuilder;
    6. import org.apache.commons.lang3.builder.ToStringStyle;
    7. import com.ruoyi.common.annotation.Excel;
    8. import com.ruoyi.common.annotation.Excel.ColumnType;
    9. import com.ruoyi.common.annotation.Excel.Type;
    10. import com.ruoyi.common.annotation.Excels;
    11. import com.ruoyi.common.core.domain.BaseEntity;
    12. import com.ruoyi.common.xss.Xss;
    13. /**
    14. * 用户对象 sys_user
    15. *
    16. * @author ruoyi
    17. */
    18. public class SysUser extends BaseEntity
    19. {
    20. private static final long serialVersionUID = 1L;
    21. /** 用户ID */
    22. @Excel(name = "用户序号", cellType = ColumnType.NUMERIC, prompt = "用户编号")
    23. private Long userId;
    24. /** 部门ID */
    25. @Excel(name = "部门编号", type = Type.IMPORT)
    26. private Long deptId;
    27. /** 用户账号 */
    28. @Excel(name = "登录名称")
    29. private String userName;
    30. /** 用户昵称 */
    31. @Excel(name = "用户名称")
    32. private String nickName;
    33. /** 用户邮箱 */
    34. @Excel(name = "用户邮箱")
    35. private String email;
    36. /** 手机号码 */
    37. @Excel(name = "手机号码")
    38. private String phonenumber;
    39. /** 用户性别 */
    40. @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知")
    41. private String sex;
    42. /** 用户头像 */
    43. private String avatar;
    44. /** 密码 */
    45. private String password;
    46. /** 帐号状态(0正常 1停用) */
    47. @Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用")
    48. private String status;
    49. /** 删除标志(0代表存在 2代表删除) */
    50. private String delFlag;
    51. /** 最后登录IP */
    52. @Excel(name = "最后登录IP", type = Type.EXPORT)
    53. private String loginIp;
    54. /** 最后登录时间 */
    55. @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
    56. private Date loginDate;
    57. /** 部门对象 */
    58. @Excels({
    59. @Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT),
    60. @Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT)
    61. })
    62. private SysDept dept;
    63. /** 角色对象 */
    64. private List<SysRole> roles;
    65. /** 角色组 */
    66. private Long[] roleIds;
    67. /** 岗位组 */
    68. private Long[] postIds;
    69. /** 角色ID */
    70. private Long roleId;
    71. public SysUser()
    72. {
    73. }
    74. public SysUser(Long userId)
    75. {
    76. this.userId = userId;
    77. }
    78. public Long getUserId()
    79. {
    80. return userId;
    81. }
    82. public void setUserId(Long userId)
    83. {
    84. this.userId = userId;
    85. }
    86. public boolean isAdmin()
    87. {
    88. return isAdmin(this.userId);
    89. }
    90. public static boolean isAdmin(Long userId)
    91. {
    92. return userId != null && 1L == userId;
    93. }
    94. public Long getDeptId()
    95. {
    96. return deptId;
    97. }
    98. public void setDeptId(Long deptId)
    99. {
    100. this.deptId = deptId;
    101. }
    102. @Xss(message = "用户昵称不能包含脚本字符")
    103. @Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符")
    104. public String getNickName()
    105. {
    106. return nickName;
    107. }
    108. public void setNickName(String nickName)
    109. {
    110. this.nickName = nickName;
    111. }
    112. @Xss(message = "用户账号不能包含脚本字符")
    113. @NotBlank(message = "用户账号不能为空")
    114. @Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符")
    115. public String getUserName()
    116. {
    117. return userName;
    118. }
    119. public void setUserName(String userName)
    120. {
    121. this.userName = userName;
    122. }
    123. @Email(message = "邮箱格式不正确")
    124. @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
    125. public String getEmail()
    126. {
    127. return email;
    128. }
    129. public void setEmail(String email)
    130. {
    131. this.email = email;
    132. }
    133. @Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符")
    134. public String getPhonenumber()
    135. {
    136. return phonenumber;
    137. }
    138. public void setPhonenumber(String phonenumber)
    139. {
    140. this.phonenumber = phonenumber;
    141. }
    142. public String getSex()
    143. {
    144. return sex;
    145. }
    146. public void setSex(String sex)
    147. {
    148. this.sex = sex;
    149. }
    150. public String getAvatar()
    151. {
    152. return avatar;
    153. }
    154. public void setAvatar(String avatar)
    155. {
    156. this.avatar = avatar;
    157. }
    158. public String getPassword()
    159. {
    160. return password;
    161. }
    162. public void setPassword(String password)
    163. {
    164. this.password = password;
    165. }
    166. public String getStatus()
    167. {
    168. return status;
    169. }
    170. public void setStatus(String status)
    171. {
    172. this.status = status;
    173. }
    174. public String getDelFlag()
    175. {
    176. return delFlag;
    177. }
    178. public void setDelFlag(String delFlag)
    179. {
    180. this.delFlag = delFlag;
    181. }
    182. public String getLoginIp()
    183. {
    184. return loginIp;
    185. }
    186. public void setLoginIp(String loginIp)
    187. {
    188. this.loginIp = loginIp;
    189. }
    190. public Date getLoginDate()
    191. {
    192. return loginDate;
    193. }
    194. public void setLoginDate(Date loginDate)
    195. {
    196. this.loginDate = loginDate;
    197. }
    198. public SysDept getDept()
    199. {
    200. return dept;
    201. }
    202. public void setDept(SysDept dept)
    203. {
    204. this.dept = dept;
    205. }
    206. public List<SysRole> getRoles()
    207. {
    208. return roles;
    209. }
    210. public void setRoles(List roles)
    211. {
    212. this.roles = roles;
    213. }
    214. public Long[] getRoleIds()
    215. {
    216. return roleIds;
    217. }
    218. public void setRoleIds(Long[] roleIds)
    219. {
    220. this.roleIds = roleIds;
    221. }
    222. public Long[] getPostIds()
    223. {
    224. return postIds;
    225. }
    226. public void setPostIds(Long[] postIds)
    227. {
    228. this.postIds = postIds;
    229. }
    230. public Long getRoleId()
    231. {
    232. return roleId;
    233. }
    234. public void setRoleId(Long roleId)
    235. {
    236. this.roleId = roleId;
    237. }
    238. @Override
    239. public String toString() {
    240. return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
    241. .append("userId", getUserId())
    242. .append("deptId", getDeptId())
    243. .append("userName", getUserName())
    244. .append("nickName", getNickName())
    245. .append("email", getEmail())
    246. .append("phonenumber", getPhonenumber())
    247. .append("sex", getSex())
    248. .append("avatar", getAvatar())
    249. .append("password", getPassword())
    250. .append("status", getStatus())
    251. .append("delFlag", getDelFlag())
    252. .append("loginIp", getLoginIp())
    253. .append("loginDate", getLoginDate())
    254. .append("createBy", getCreateBy())
    255. .append("createTime", getCreateTime())
    256. .append("updateBy", getUpdateBy())
    257. .append("updateTime", getUpdateTime())
    258. .append("remark", getRemark())
    259. .append("dept", getDept())
    260. .toString();
    261. }
    262. }

    dao层 和 mapper层

    • dao层 数据访问层,全称 data access object,用于操作数据库,具体到对某个表得增删改查,和数据库表一一对应
    • mapper层 数据存储对象,和dao层相似,mapper层直接与数据库打交道(执行SQL语句),接口提供给service层。
    1. class userModal{
    2. // 查询用户名
    3. async find({username}){
    4. let _sql = `select * from table_user WHERE username= '${username}'`
    5. return await findData(_sql);
    6. }
    7. // 注册用户
    8. async reg(_params){
    9. // let _sql = `INSERT INTO table_user (username,password) VALUES ('${username}','${password}')`
    10. let _sql = `INSERT INTO table_user SET ?`;
    11. return await addData(_sql,_params)
    12. }
    13. }

    service层

    • service层即为业务逻辑层,可以理解为对一个或者多个dao进行得再次封装,主要是针对具体的问题的操作,把一些数据层的操作进行组合,间接与数据库打交道(提供操作数据库的方法)
    1. /**
    2. * 校验用户是否有数据权限
    3. *
    4. * @param userId 用户id
    5. */
    6. @Override
    7. public void checkUserDataScope(Long userId)
    8. {
    9. if (!SysUser.isAdmin(SecurityUtils.getUserId()))
    10. {
    11. SysUser user = new SysUser();
    12. user.setUserId(userId);
    13. List<SysUser> users = SpringUtils.getAopProxy(this).selectUserList(user);
    14. if (StringUtils.isEmpty(users))
    15. {
    16. throw new ServiceException("没有权限访问用户数据!");
    17. }
    18. }
    19. }

    controller层

    • 负责请求转发,接收页面过来的参数,传给service处理,接到返回值,并再次传给页面
    1. /**
    2. * 获取用户列表
    3. */
    4. @PreAuthorize("@ss.hasPermi('system:user:list')")
    5. @GetMapping("/list")
    6. public TableDataInfo list(SysUser user)
    7. {
    8. startPage();
    9. List list = userService.selectUserList(user);
    10. return getDataTable(list);
    11. }

  • 相关阅读:
    开源网安入选广东省网络空间安全标准化技术委员会新技术及应用安全技术工作组成员单位
    win10应用商店怎么重新安装?
    pycharm 让控制台里的链接可以点击
    【Gzip】详细介绍
    企业电子招标采购系统源码Spring Boot + Mybatis + Redis + Layui + 前后端分离 构建企业电子招采平台之立项流程图
    Java高级面试题(二)-- JVM
    图解|勒索软件防范指南
    Apache POI处理Miscrosoft Office 各种文件格式的开源项目
    数据库顶会 VLDB 2023 论文解读 - Krypton: 字节跳动实时服务分析 SQL 引擎设计
    c#winform根据邮箱地址和密码一键发送email
  • 原文地址:https://blog.csdn.net/qq_40963664/article/details/125897104