0206c002
함상기
2024-04-15
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
<?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="daeucna.mapper.primary.system.UserMapper">
<select id="getUsers" parameterType="UserDto" resultType="UserDto">
SELECT
m.user_id
, m.activated
, m.nickname
, null as password
, m.username
FROM public.users m
ORDER BY
m.username
</select>
<update id="saveUser" parameterType="UserDto">
MERGE INTO public.users m
USING (
SELECT
#{activated} as activated
, #{nickname} as nickname
, #{username} as username
<if test='password != null and !password.equals("")'>
, #{password} as password
</if>
) s
ON (
m.username = s.username
)
WHEN MATCHED THEN
UPDATE SET
activated = s.activated
, nickname = s.nickname
, username = s.username
<if test='password != null and !password.equals("")'>
, password = s.password
</if>
WHEN NOT MATCHED THEN
INSERT (
activated
, nickname
, username
<if test='password != null and !password.equals("")'>
, password
</if>
) VALUES (
s.activated
, s.nickname
, s.username
<if test='password != null and !password.equals("")'>
, s.password
</if>
)
</update>
<delete id="deleteUser" parameterType="UserDto">
DELETE FROM public.users m
WHERE
user_id = #{userId}
</delete>
<select id="getUsersAuthority" parameterType="UserAuthorityDto" resultType="UserAuthorityDto">
SELECT
m.user_id
, s1.username
, s2.authority_name
FROM public.user_authority m
inner join public.users s1
on s1.user_id = m.user_id
inner join public.authority s2
on s2.authority_name = m.authority_name
WHERE 1=1
<if test='username != null and !username.equals("")'>
and s1.username like ('%' || #{username} || '%')
</if>
ORDER BY m.user_id ASC
</select>
<update id="saveUserAuthority" parameterType="UserAuthorityDto">
MERGE INTO public.user_authority m
USING (
SELECT
(SELECT user_id FROM public.users WHERE username=#{username}) as user_id
, #{authorityName} as authority_name
) s
ON (
m.user_id = s.user_id
)
WHEN MATCHED THEN
UPDATE SET
authority_name = s.authority_name
WHEN NOT MATCHED THEN
INSERT (
user_id
, authority_name
) VALUES (
s.user_id
, s.authority_name
)
</update>
<delete id="deleteUserAuthority" parameterType="UserAuthorityDto">
DELETE FROM public.user_authority m
WHERE
user_id = #{userId}
</delete>
<select id="getUserList" parameterType="Map" resultType="Map">
SELECT
user_id
, username
FROM public.users
WHERE
activated = true
ORDER BY username ASC
</select>
<select id="getAuthorityList" parameterType="Map" resultType="Map">
SELECT
authority_name
FROM public.authority
ORDER BY authority_name ASC
</select>
</mapper>
|