Blame view

src/main/resources/mybatis/primary/system/UserMapper.xml 3.2 KB
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>