优化:优化 SQL 语句风格

1.MySQL数据库>SQL语句>第10条:
【推荐】SQL 语句中表的别名前加 as,并且以 t1、t2、t3、...的顺序依次命名。
说明:
  1)别名可以是表的简称,或者是依照表在 SQL 语句中出现的顺序,以 t1、t2、t3 的方式命名。
  2)别名前加 as 使别名更容易识别。
正例:select t1.name from first_table as t1 , second_table as t2 where t1.id = t2.id
个人理解:使用 t1、t2、t3... 的表别名命名方式,在很多类似业务查询的场景会更方便复用;使用 AS 而不是 as 更容易阅读。
This commit is contained in:
Charles7c 2023-03-10 23:17:25 +08:00
parent 5b50303a91
commit 2d71af9efb
2 changed files with 24 additions and 27 deletions

View File

@ -2,27 +2,27 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="top.charles7c.cnadmin.system.mapper.MenuMapper">
<select id="selectPermissionByUserId" resultType="java.lang.String">
SELECT DISTINCT m.`permission`
FROM `sys_menu` as m
LEFT JOIN `sys_role_menu` as rm ON rm.`menu_id` = m.`id`
LEFT JOIN `sys_role` as r ON r.`id` = rm.`role_id`
LEFT JOIN `sys_user_role` as sur ON sur.`role_id` = r.`id`
LEFT JOIN `sys_user` as u ON u.`id` = sur.`user_id`
WHERE u.`id` = #{userId}
AND m.`type` IN (2, 3)
AND m.`status` = 1
AND r.`status` = 1
SELECT DISTINCT t1.`permission`
FROM `sys_menu` AS t1
LEFT JOIN `sys_role_menu` AS t2 ON t2.`menu_id` = t1.`id`
LEFT JOIN `sys_role` AS t3 ON t3.`id` = t2.`role_id`
LEFT JOIN `sys_user_role` AS t4 ON t4.`role_id` = t3.`id`
LEFT JOIN `sys_user` AS t5 ON t5.`id` = t4.`user_id`
WHERE t5.`id` = #{userId}
AND t1.`type` IN (2, 3)
AND t1.`status` = 1
AND t3.`status` = 1
</select>
<select id="selectListByUserId" resultType="top.charles7c.cnadmin.system.model.entity.MenuDO">
SELECT m.*
FROM `sys_menu` as m
LEFT JOIN `sys_role_menu` as rm ON rm.`menu_id` = m.`id`
LEFT JOIN `sys_role` as r ON r.`id` = rm.`role_id`
LEFT JOIN `sys_user_role` as sur ON sur.`role_id` = r.`id`
LEFT JOIN `sys_user` as u ON u.`id` = sur.`user_id`
WHERE u.`id` = #{userId}
AND m.`status` = 1
AND r.`status` = 1
SELECT t1.*
FROM `sys_menu` AS t1
LEFT JOIN `sys_role_menu` AS t2 ON t2.`menu_id` = t1.`id`
LEFT JOIN `sys_role` AS t3 ON t3.`id` = t2.`role_id`
LEFT JOIN `sys_user_role` AS t4 ON t4.`role_id` = t3.`id`
LEFT JOIN `sys_user` AS t5 ON t5.`id` = t4.`user_id`
WHERE t5.`id` = #{userId}
AND t1.`status` = 1
AND t3.`status` = 1
</select>
</mapper>

View File

@ -2,14 +2,11 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="top.charles7c.cnadmin.system.mapper.RoleMenuMapper">
<select id="selectMenuIdByRoleIds" resultType="java.lang.Long">
SELECT
`menu_id`
SELECT `menu_id`
FROM `sys_role_menu`
<where>
`role_id` IN
<foreach collection="list" item="roleId" open="(" close=")" separator=",">
#{roleId}
</foreach>
</where>
WHERE `role_id` IN
<foreach collection="list" item="roleId" open="(" close=")" separator=",">
#{roleId}
</foreach>
</select>
</mapper>