25.MyBatis逆向工程

 

1.什么是逆向工程

正向工程:从实体类->表

逆向工程:从表->实体类

Hibernate有正向工程和逆向工程,mybatis只有逆向工程

MyBatis的一个主要的特点就是需要程序员自己编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需要的代码(包括mapper.xml、mapper.java、pojo)。一般在开发中,常用的逆向工程方式是通过数据库的表生成代码。

逆向工程可以帮我们生成Pojo、mapper、mapper.xml

2.生成方法

(1) 创建一个Java Project

(2) 创建lib文件夹,并放入相关jar包,然后Build Path

  • mybatis-3.2.7.jar
  • mybatis-generator-core-1.3.2.jar
  • mysql-connector-java-8.0.25.jar

(3) 创建config文件夹,并创建或者添加generatorConfig.xml配置文件

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
<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 数据库驱动 -->
<classPathEntry location="lib/mysql-connector-java-8.0.25.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/>
<!-- 是否去除自动生成的注释,true:去除注释,false:不去除注释 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>

<!--数据库链接URL,用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/mybatis_test" userId="root" password="123456"></jdbcConnection>

<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>

<!-- 生成模型的包名和位置-->
<javaModelGenerator targetPackage="com.test.vo" targetProject="src">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>

<!-- 生成映射文件的包名和位置-->
<sqlMapGenerator targetPackage="com.test.mapper" targetProject="src">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>

<!-- 生成DAO的包名和位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.test.dao" targetProject="src">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>

<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
<table tableName="employee" domainObjectName="Employee"
enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false"></table>
<!-- java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite -->
</context>
</generatorConfiguration>

(4) 编写测试类,并运行

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
package com.course.generate;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

public class GeneratorTest {

public static void generator() {
try {
List<String> warnings = new ArrayList<>();
boolean overwrite = true;
//指定逆向工程配置文件
File configFile = new File("config/generatorConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
generator();
System.out.println("生成成功!");
}
}

(5) 项目结构

(6) 生成文件

1.vo

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
package com.test.vo;

import java.util.Date;

public class Employee {
private Integer employeeId;

private String employeeName;

private String employeeGender;

private Integer age;

private Date hireDate;

private Integer departmentId;

public Integer getEmployeeId() {
return employeeId;
}

public void setEmployeeId(Integer employeeId) {
this.employeeId = employeeId;
}

public String getEmployeeName() {
return employeeName;
}

public void setEmployeeName(String employeeName) {
this.employeeName = employeeName == null ? null : employeeName.trim();
}

public String getEmployeeGender() {
return employeeGender;
}

public void setEmployeeGender(String employeeGender) {
this.employeeGender = employeeGender == null ? null : employeeGender.trim();
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}

public Date getHireDate() {
return hireDate;
}

public void setHireDate(Date hireDate) {
this.hireDate = hireDate;
}

public Integer getDepartmentId() {
return departmentId;
}

public void setDepartmentId(Integer departmentId) {
this.departmentId = departmentId;
}
}

2.dao

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.test.dao;

import com.test.vo.Employee;

public interface EmployeeMapper {
int deleteByPrimaryKey(Integer employeeId);

int insert(Employee record);

int insertSelective(Employee record);

Employee selectByPrimaryKey(Integer employeeId);

int updateByPrimaryKeySelective(Employee record);

int updateByPrimaryKey(Employee record);
}

3.mapper.xml

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
<?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="com.test.dao.EmployeeMapper" >
<resultMap id="BaseResultMap" type="com.test.vo.Employee" >
<id column="employee_id" property="employeeId" jdbcType="INTEGER" />
<result column="employee_name" property="employeeName" jdbcType="VARCHAR" />
<result column="employee_gender" property="employeeGender" jdbcType="CHAR" />
<result column="age" property="age" jdbcType="INTEGER" />
<result column="hire_date" property="hireDate" jdbcType="DATE" />
<result column="department_id" property="departmentId" jdbcType="INTEGER" />
</resultMap>
<sql id="Base_Column_List" >
employee_id, employee_name, employee_gender, age, hire_date, department_id
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
from employee
where employee_id = #{employeeId,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
delete from employee
where employee_id = #{employeeId,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.test.vo.Employee" >
insert into employee (employee_id, employee_name, employee_gender,
age, hire_date, department_id
)
values (#{employeeId,jdbcType=INTEGER}, #{employeeName,jdbcType=VARCHAR}, #{employeeGender,jdbcType=CHAR},
#{age,jdbcType=INTEGER}, #{hireDate,jdbcType=DATE}, #{departmentId,jdbcType=INTEGER}
)
</insert>
<insert id="insertSelective" parameterType="com.test.vo.Employee" >
insert into employee
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="employeeId != null" >
employee_id,
</if>
<if test="employeeName != null" >
employee_name,
</if>
<if test="employeeGender != null" >
employee_gender,
</if>
<if test="age != null" >
age,
</if>
<if test="hireDate != null" >
hire_date,
</if>
<if test="departmentId != null" >
department_id,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="employeeId != null" >
#{employeeId,jdbcType=INTEGER},
</if>
<if test="employeeName != null" >
#{employeeName,jdbcType=VARCHAR},
</if>
<if test="employeeGender != null" >
#{employeeGender,jdbcType=CHAR},
</if>
<if test="age != null" >
#{age,jdbcType=INTEGER},
</if>
<if test="hireDate != null" >
#{hireDate,jdbcType=DATE},
</if>
<if test="departmentId != null" >
#{departmentId,jdbcType=INTEGER},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.test.vo.Employee" >
update employee
<set >
<if test="employeeName != null" >
employee_name = #{employeeName,jdbcType=VARCHAR},
</if>
<if test="employeeGender != null" >
employee_gender = #{employeeGender,jdbcType=CHAR},
</if>
<if test="age != null" >
age = #{age,jdbcType=INTEGER},
</if>
<if test="hireDate != null" >
hire_date = #{hireDate,jdbcType=DATE},
</if>
<if test="departmentId != null" >
department_id = #{departmentId,jdbcType=INTEGER},
</if>
</set>
where employee_id = #{employeeId,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.test.vo.Employee" >
update employee
set employee_name = #{employeeName,jdbcType=VARCHAR},
employee_gender = #{employeeGender,jdbcType=CHAR},
age = #{age,jdbcType=INTEGER},
hire_date = #{hireDate,jdbcType=DATE},
department_id = #{departmentId,jdbcType=INTEGER}
where employee_id = #{employeeId,jdbcType=INTEGER}
</update>
</mapper>

注: 重复运行生成方法,vo和dao会被覆盖,xml会追加,导致存在相同id的节点,因此重新生成时,要先删除xml,再重新生成。

3.生成到其他项目中

1.新建测试目标项目,新建一个Java Project

2.新建配置文件generatorConfig2.xml,修改节点的targetProject属性值,为目标项目的绝对路径

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
<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 数据库驱动 -->
<classPathEntry location="lib/mysql-connector-java-8.0.25.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/>
<!-- 是否去除自动生成的注释,true:去除注释,false:不去除注释 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>

<!--数据库链接URL,用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/mybatis_test" userId="root" password="123456"></jdbcConnection>

<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>

<!-- 生成模型的包名和位置-->
<javaModelGenerator targetPackage="com.test.vo" targetProject="G:/eclipse/eclipse-2020-12/project/mybatis/12_mybatis_generator_test/src">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>

<!-- 生成映射文件的包名和位置-->
<sqlMapGenerator targetPackage="com.test.mapper" targetProject="G:/eclipse/eclipse-2020-12/project/mybatis/12_mybatis_generator_test/src">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>

<!-- 生成DAO的包名和位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.test.dao" targetProject="G:/eclipse/eclipse-2020-12/project/mybatis/12_mybatis_generator_test/src">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>

<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
<table tableName="department" domainObjectName="Department"
enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false"></table>
<!-- java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite -->
</context>
</generatorConfiguration>

3.修改并运行测试类

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
package com.course.generate;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

public class GeneratorTest {

public static void generator() {
try {
List<String> warnings = new ArrayList<>();
boolean overwrite = true;
//指定逆向工程配置文件
File configFile = new File("config/generatorConfig2.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
generator();
System.out.println("生成成功!");
}
}

4.项目结构

4.修改ByExample属性

1.新建测试目标项目(Java Project)

2.新建配置文件generatorConfig3.xml,修改<table>节点的ByExample属性,修改属性值为true

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
<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 数据库驱动 -->
<classPathEntry location="lib/mysql-connector-java-8.0.25.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/>
<!-- 是否去除自动生成的注释,true:去除注释,false:不去除注释 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>

<!--数据库链接URL,用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/mybatis_test" userId="root" password="123456"></jdbcConnection>

<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>

<!-- 生成模型的包名和位置-->
<javaModelGenerator targetPackage="com.test.vo" targetProject="G:/eclipse/eclipse-2020-12/project/mybatis/12_mybatis_generator_test_2/src">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>

<!-- 生成映射文件的包名和位置-->
<sqlMapGenerator targetPackage="com.test.mapper" targetProject="G:/eclipse/eclipse-2020-12/project/mybatis/12_mybatis_generator_test_2/src">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>

<!-- 生成DAO的包名和位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.test.dao" targetProject="G:/eclipse/eclipse-2020-12/project/mybatis/12_mybatis_generator_test_2/src">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>

<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
<table tableName="employee" domainObjectName="Employee"
enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true"
enableSelectByExample="true" selectByExampleQueryId="true"></table>
<!-- java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite -->
</context>
</generatorConfiguration>

3.运行测试类,向目标项目生成文件

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
package com.course.generate;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

public class GeneratorTest {

public static void generator() {
try {
List<String> warnings = new ArrayList<>();
boolean overwrite = true;
//指定逆向工程配置文件
File configFile = new File("config/generatorConfig3.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
generator();
System.out.println("生成成功!");
}
}

4.修改目标项目的mybatis.cfg.xml文件,注册EmployeeMapper.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">

<!-- MyBatis的整体配置 -->
<configuration>

<!-- 配置Mapper.xml文件 -->
<mappers>
<mapper resource="com/test/mapper/EmployeeMapper.xml"/>
</mappers>

</configuration>

5.编写测试类,并运行

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
package com.course.test;

import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import com.course.util.MyBatisUtil;
import com.test.dao.EmployeeMapper;
import com.test.vo.Employee;
import com.test.vo.EmployeeExample;
import com.test.vo.EmployeeExample.Criteria;

public class MainTest {

private SqlSession sqlSession = MyBatisUtil.openSqlSession();
private EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);

@Test
public void test() {
List<Integer> departmentIdList = new ArrayList<>();
departmentIdList.add(1);
EmployeeExample employeeExample = new EmployeeExample();
Criteria criteria = employeeExample.createCriteria();
criteria.andEmployeeNameLike("%staff1%");
criteria.andDepartmentIdNotIn(departmentIdList);
int count = employeeMapper.countByExample(employeeExample);
System.out.println("count = " + count);
List<Employee> list = employeeMapper.selectByExample(employeeExample);
for (Employee employee : list) {
System.out.println(employee.getEmployeeName());
}

MyBatisUtil.closeSqlSession(sqlSession);
}
}
1
2
3
4
5
6
7
8
DEBUG [main] - ==>  Preparing: select count(*) from employee WHERE ( employee_name like ? and department_id not in ( ? ) ) 
DEBUG [main] - ==> Parameters: %staff1%(String), 1(Integer)
DEBUG [main] - <== Total: 1
count = 1
DEBUG [main] - ==> Preparing: select 'true' as QUERYID, employee_id, employee_name, employee_gender, age, hire_date, department_id from employee WHERE ( employee_name like ? and department_id not in ( ? ) )
DEBUG [main] - ==> Parameters: %staff1%(String), 1(Integer)
DEBUG [main] - <== Total: 1
staff10

6.项目目录

7.生成文件

(1)vo

Employee.java

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
package com.test.vo;

import java.util.Date;

public class Employee {
private Integer employeeId;

private String employeeName;

private String employeeGender;

private Integer age;

private Date hireDate;

private Integer departmentId;

public Integer getEmployeeId() {
return employeeId;
}

public void setEmployeeId(Integer employeeId) {
this.employeeId = employeeId;
}

public String getEmployeeName() {
return employeeName;
}

public void setEmployeeName(String employeeName) {
this.employeeName = employeeName == null ? null : employeeName.trim();
}

public String getEmployeeGender() {
return employeeGender;
}

public void setEmployeeGender(String employeeGender) {
this.employeeGender = employeeGender == null ? null : employeeGender.trim();
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}

public Date getHireDate() {
return hireDate;
}

public void setHireDate(Date hireDate) {
this.hireDate = hireDate;
}

public Integer getDepartmentId() {
return departmentId;
}

public void setDepartmentId(Integer departmentId) {
this.departmentId = departmentId;
}
}

EmployeeExample.java

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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
package com.test.vo;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

public class EmployeeExample {
protected String orderByClause;

protected boolean distinct;

protected List<Criteria> oredCriteria;

public EmployeeExample() {
oredCriteria = new ArrayList<Criteria>();
}

public void setOrderByClause(String orderByClause) {
this.orderByClause = orderByClause;
}

public String getOrderByClause() {
return orderByClause;
}

public void setDistinct(boolean distinct) {
this.distinct = distinct;
}

public boolean isDistinct() {
return distinct;
}

public List<Criteria> getOredCriteria() {
return oredCriteria;
}

public void or(Criteria criteria) {
oredCriteria.add(criteria);
}

public Criteria or() {
Criteria criteria = createCriteriaInternal();
oredCriteria.add(criteria);
return criteria;
}

public Criteria createCriteria() {
Criteria criteria = createCriteriaInternal();
if (oredCriteria.size() == 0) {
oredCriteria.add(criteria);
}
return criteria;
}

protected Criteria createCriteriaInternal() {
Criteria criteria = new Criteria();
return criteria;
}

public void clear() {
oredCriteria.clear();
orderByClause = null;
distinct = false;
}

protected abstract static class GeneratedCriteria {
protected List<Criterion> criteria;

protected GeneratedCriteria() {
super();
criteria = new ArrayList<Criterion>();
}

public boolean isValid() {
return criteria.size() > 0;
}

public List<Criterion> getAllCriteria() {
return criteria;
}

public List<Criterion> getCriteria() {
return criteria;
}

protected void addCriterion(String condition) {
if (condition == null) {
throw new RuntimeException("Value for condition cannot be null");
}
criteria.add(new Criterion(condition));
}

protected void addCriterion(String condition, Object value, String property) {
if (value == null) {
throw new RuntimeException("Value for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value));
}

protected void addCriterion(String condition, Object value1, Object value2, String property) {
if (value1 == null || value2 == null) {
throw new RuntimeException("Between values for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value1, value2));
}

protected void addCriterionForJDBCDate(String condition, Date value, String property) {
if (value == null) {
throw new RuntimeException("Value for " + property + " cannot be null");
}
addCriterion(condition, new java.sql.Date(value.getTime()), property);
}

protected void addCriterionForJDBCDate(String condition, List<Date> values, String property) {
if (values == null || values.size() == 0) {
throw new RuntimeException("Value list for " + property + " cannot be null or empty");
}
List<java.sql.Date> dateList = new ArrayList<java.sql.Date>();
Iterator<Date> iter = values.iterator();
while (iter.hasNext()) {
dateList.add(new java.sql.Date(iter.next().getTime()));
}
addCriterion(condition, dateList, property);
}

protected void addCriterionForJDBCDate(String condition, Date value1, Date value2, String property) {
if (value1 == null || value2 == null) {
throw new RuntimeException("Between values for " + property + " cannot be null");
}
addCriterion(condition, new java.sql.Date(value1.getTime()), new java.sql.Date(value2.getTime()), property);
}

public Criteria andEmployeeIdIsNull() {
addCriterion("employee_id is null");
return (Criteria) this;
}

public Criteria andEmployeeIdIsNotNull() {
addCriterion("employee_id is not null");
return (Criteria) this;
}

public Criteria andEmployeeIdEqualTo(Integer value) {
addCriterion("employee_id =", value, "employeeId");
return (Criteria) this;
}

public Criteria andEmployeeIdNotEqualTo(Integer value) {
addCriterion("employee_id <>", value, "employeeId");
return (Criteria) this;
}

public Criteria andEmployeeIdGreaterThan(Integer value) {
addCriterion("employee_id >", value, "employeeId");
return (Criteria) this;
}

public Criteria andEmployeeIdGreaterThanOrEqualTo(Integer value) {
addCriterion("employee_id >=", value, "employeeId");
return (Criteria) this;
}

public Criteria andEmployeeIdLessThan(Integer value) {
addCriterion("employee_id <", value, "employeeId");
return (Criteria) this;
}

public Criteria andEmployeeIdLessThanOrEqualTo(Integer value) {
addCriterion("employee_id <=", value, "employeeId");
return (Criteria) this;
}

public Criteria andEmployeeIdIn(List<Integer> values) {
addCriterion("employee_id in", values, "employeeId");
return (Criteria) this;
}

public Criteria andEmployeeIdNotIn(List<Integer> values) {
addCriterion("employee_id not in", values, "employeeId");
return (Criteria) this;
}

public Criteria andEmployeeIdBetween(Integer value1, Integer value2) {
addCriterion("employee_id between", value1, value2, "employeeId");
return (Criteria) this;
}

public Criteria andEmployeeIdNotBetween(Integer value1, Integer value2) {
addCriterion("employee_id not between", value1, value2, "employeeId");
return (Criteria) this;
}

public Criteria andEmployeeNameIsNull() {
addCriterion("employee_name is null");
return (Criteria) this;
}

public Criteria andEmployeeNameIsNotNull() {
addCriterion("employee_name is not null");
return (Criteria) this;
}

public Criteria andEmployeeNameEqualTo(String value) {
addCriterion("employee_name =", value, "employeeName");
return (Criteria) this;
}

public Criteria andEmployeeNameNotEqualTo(String value) {
addCriterion("employee_name <>", value, "employeeName");
return (Criteria) this;
}

public Criteria andEmployeeNameGreaterThan(String value) {
addCriterion("employee_name >", value, "employeeName");
return (Criteria) this;
}

public Criteria andEmployeeNameGreaterThanOrEqualTo(String value) {
addCriterion("employee_name >=", value, "employeeName");
return (Criteria) this;
}

public Criteria andEmployeeNameLessThan(String value) {
addCriterion("employee_name <", value, "employeeName");
return (Criteria) this;
}

public Criteria andEmployeeNameLessThanOrEqualTo(String value) {
addCriterion("employee_name <=", value, "employeeName");
return (Criteria) this;
}

public Criteria andEmployeeNameLike(String value) {
addCriterion("employee_name like", value, "employeeName");
return (Criteria) this;
}

public Criteria andEmployeeNameNotLike(String value) {
addCriterion("employee_name not like", value, "employeeName");
return (Criteria) this;
}

public Criteria andEmployeeNameIn(List<String> values) {
addCriterion("employee_name in", values, "employeeName");
return (Criteria) this;
}

public Criteria andEmployeeNameNotIn(List<String> values) {
addCriterion("employee_name not in", values, "employeeName");
return (Criteria) this;
}

public Criteria andEmployeeNameBetween(String value1, String value2) {
addCriterion("employee_name between", value1, value2, "employeeName");
return (Criteria) this;
}

public Criteria andEmployeeNameNotBetween(String value1, String value2) {
addCriterion("employee_name not between", value1, value2, "employeeName");
return (Criteria) this;
}

public Criteria andEmployeeGenderIsNull() {
addCriterion("employee_gender is null");
return (Criteria) this;
}

public Criteria andEmployeeGenderIsNotNull() {
addCriterion("employee_gender is not null");
return (Criteria) this;
}

public Criteria andEmployeeGenderEqualTo(String value) {
addCriterion("employee_gender =", value, "employeeGender");
return (Criteria) this;
}

public Criteria andEmployeeGenderNotEqualTo(String value) {
addCriterion("employee_gender <>", value, "employeeGender");
return (Criteria) this;
}

public Criteria andEmployeeGenderGreaterThan(String value) {
addCriterion("employee_gender >", value, "employeeGender");
return (Criteria) this;
}

public Criteria andEmployeeGenderGreaterThanOrEqualTo(String value) {
addCriterion("employee_gender >=", value, "employeeGender");
return (Criteria) this;
}

public Criteria andEmployeeGenderLessThan(String value) {
addCriterion("employee_gender <", value, "employeeGender");
return (Criteria) this;
}

public Criteria andEmployeeGenderLessThanOrEqualTo(String value) {
addCriterion("employee_gender <=", value, "employeeGender");
return (Criteria) this;
}

public Criteria andEmployeeGenderLike(String value) {
addCriterion("employee_gender like", value, "employeeGender");
return (Criteria) this;
}

public Criteria andEmployeeGenderNotLike(String value) {
addCriterion("employee_gender not like", value, "employeeGender");
return (Criteria) this;
}

public Criteria andEmployeeGenderIn(List<String> values) {
addCriterion("employee_gender in", values, "employeeGender");
return (Criteria) this;
}

public Criteria andEmployeeGenderNotIn(List<String> values) {
addCriterion("employee_gender not in", values, "employeeGender");
return (Criteria) this;
}

public Criteria andEmployeeGenderBetween(String value1, String value2) {
addCriterion("employee_gender between", value1, value2, "employeeGender");
return (Criteria) this;
}

public Criteria andEmployeeGenderNotBetween(String value1, String value2) {
addCriterion("employee_gender not between", value1, value2, "employeeGender");
return (Criteria) this;
}

public Criteria andAgeIsNull() {
addCriterion("age is null");
return (Criteria) this;
}

public Criteria andAgeIsNotNull() {
addCriterion("age is not null");
return (Criteria) this;
}

public Criteria andAgeEqualTo(Integer value) {
addCriterion("age =", value, "age");
return (Criteria) this;
}

public Criteria andAgeNotEqualTo(Integer value) {
addCriterion("age <>", value, "age");
return (Criteria) this;
}

public Criteria andAgeGreaterThan(Integer value) {
addCriterion("age >", value, "age");
return (Criteria) this;
}

public Criteria andAgeGreaterThanOrEqualTo(Integer value) {
addCriterion("age >=", value, "age");
return (Criteria) this;
}

public Criteria andAgeLessThan(Integer value) {
addCriterion("age <", value, "age");
return (Criteria) this;
}

public Criteria andAgeLessThanOrEqualTo(Integer value) {
addCriterion("age <=", value, "age");
return (Criteria) this;
}

public Criteria andAgeIn(List<Integer> values) {
addCriterion("age in", values, "age");
return (Criteria) this;
}

public Criteria andAgeNotIn(List<Integer> values) {
addCriterion("age not in", values, "age");
return (Criteria) this;
}

public Criteria andAgeBetween(Integer value1, Integer value2) {
addCriterion("age between", value1, value2, "age");
return (Criteria) this;
}

public Criteria andAgeNotBetween(Integer value1, Integer value2) {
addCriterion("age not between", value1, value2, "age");
return (Criteria) this;
}

public Criteria andHireDateIsNull() {
addCriterion("hire_date is null");
return (Criteria) this;
}

public Criteria andHireDateIsNotNull() {
addCriterion("hire_date is not null");
return (Criteria) this;
}

public Criteria andHireDateEqualTo(Date value) {
addCriterionForJDBCDate("hire_date =", value, "hireDate");
return (Criteria) this;
}

public Criteria andHireDateNotEqualTo(Date value) {
addCriterionForJDBCDate("hire_date <>", value, "hireDate");
return (Criteria) this;
}

public Criteria andHireDateGreaterThan(Date value) {
addCriterionForJDBCDate("hire_date >", value, "hireDate");
return (Criteria) this;
}

public Criteria andHireDateGreaterThanOrEqualTo(Date value) {
addCriterionForJDBCDate("hire_date >=", value, "hireDate");
return (Criteria) this;
}

public Criteria andHireDateLessThan(Date value) {
addCriterionForJDBCDate("hire_date <", value, "hireDate");
return (Criteria) this;
}

public Criteria andHireDateLessThanOrEqualTo(Date value) {
addCriterionForJDBCDate("hire_date <=", value, "hireDate");
return (Criteria) this;
}

public Criteria andHireDateIn(List<Date> values) {
addCriterionForJDBCDate("hire_date in", values, "hireDate");
return (Criteria) this;
}

public Criteria andHireDateNotIn(List<Date> values) {
addCriterionForJDBCDate("hire_date not in", values, "hireDate");
return (Criteria) this;
}

public Criteria andHireDateBetween(Date value1, Date value2) {
addCriterionForJDBCDate("hire_date between", value1, value2, "hireDate");
return (Criteria) this;
}

public Criteria andHireDateNotBetween(Date value1, Date value2) {
addCriterionForJDBCDate("hire_date not between", value1, value2, "hireDate");
return (Criteria) this;
}

public Criteria andDepartmentIdIsNull() {
addCriterion("department_id is null");
return (Criteria) this;
}

public Criteria andDepartmentIdIsNotNull() {
addCriterion("department_id is not null");
return (Criteria) this;
}

public Criteria andDepartmentIdEqualTo(Integer value) {
addCriterion("department_id =", value, "departmentId");
return (Criteria) this;
}

public Criteria andDepartmentIdNotEqualTo(Integer value) {
addCriterion("department_id <>", value, "departmentId");
return (Criteria) this;
}

public Criteria andDepartmentIdGreaterThan(Integer value) {
addCriterion("department_id >", value, "departmentId");
return (Criteria) this;
}

public Criteria andDepartmentIdGreaterThanOrEqualTo(Integer value) {
addCriterion("department_id >=", value, "departmentId");
return (Criteria) this;
}

public Criteria andDepartmentIdLessThan(Integer value) {
addCriterion("department_id <", value, "departmentId");
return (Criteria) this;
}

public Criteria andDepartmentIdLessThanOrEqualTo(Integer value) {
addCriterion("department_id <=", value, "departmentId");
return (Criteria) this;
}

public Criteria andDepartmentIdIn(List<Integer> values) {
addCriterion("department_id in", values, "departmentId");
return (Criteria) this;
}

public Criteria andDepartmentIdNotIn(List<Integer> values) {
addCriterion("department_id not in", values, "departmentId");
return (Criteria) this;
}

public Criteria andDepartmentIdBetween(Integer value1, Integer value2) {
addCriterion("department_id between", value1, value2, "departmentId");
return (Criteria) this;
}

public Criteria andDepartmentIdNotBetween(Integer value1, Integer value2) {
addCriterion("department_id not between", value1, value2, "departmentId");
return (Criteria) this;
}
}

public static class Criteria extends GeneratedCriteria {

protected Criteria() {
super();
}
}

public static class Criterion {
private String condition;

private Object value;

private Object secondValue;

private boolean noValue;

private boolean singleValue;

private boolean betweenValue;

private boolean listValue;

private String typeHandler;

public String getCondition() {
return condition;
}

public Object getValue() {
return value;
}

public Object getSecondValue() {
return secondValue;
}

public boolean isNoValue() {
return noValue;
}

public boolean isSingleValue() {
return singleValue;
}

public boolean isBetweenValue() {
return betweenValue;
}

public boolean isListValue() {
return listValue;
}

public String getTypeHandler() {
return typeHandler;
}

protected Criterion(String condition) {
super();
this.condition = condition;
this.typeHandler = null;
this.noValue = true;
}

protected Criterion(String condition, Object value, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.typeHandler = typeHandler;
if (value instanceof List<?>) {
this.listValue = true;
} else {
this.singleValue = true;
}
}

protected Criterion(String condition, Object value) {
this(condition, value, null);
}

protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.secondValue = secondValue;
this.typeHandler = typeHandler;
this.betweenValue = true;
}

protected Criterion(String condition, Object value, Object secondValue) {
this(condition, value, secondValue, null);
}
}
}

(2)dao

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
package com.test.dao;

import com.test.vo.Employee;
import com.test.vo.EmployeeExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;

public interface EmployeeMapper {
int countByExample(EmployeeExample example);

int deleteByExample(EmployeeExample example);

int deleteByPrimaryKey(Integer employeeId);

int insert(Employee record);

int insertSelective(Employee record);

List<Employee> selectByExample(EmployeeExample example);

Employee selectByPrimaryKey(Integer employeeId);

int updateByExampleSelective(@Param("record") Employee record, @Param("example") EmployeeExample example);

int updateByExample(@Param("record") Employee record, @Param("example") EmployeeExample example);

int updateByPrimaryKeySelective(Employee record);

int updateByPrimaryKey(Employee record);
}

(3)mapper.xml

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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
<?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="com.test.dao.EmployeeMapper" >
<resultMap id="BaseResultMap" type="com.test.vo.Employee" >
<id column="employee_id" property="employeeId" jdbcType="INTEGER" />
<result column="employee_name" property="employeeName" jdbcType="VARCHAR" />
<result column="employee_gender" property="employeeGender" jdbcType="CHAR" />
<result column="age" property="age" jdbcType="INTEGER" />
<result column="hire_date" property="hireDate" jdbcType="DATE" />
<result column="department_id" property="departmentId" jdbcType="INTEGER" />
</resultMap>
<sql id="Example_Where_Clause" >
<where >
<foreach collection="oredCriteria" item="criteria" separator="or" >
<if test="criteria.valid" >
<trim prefix="(" suffix=")" prefixOverrides="and" >
<foreach collection="criteria.criteria" item="criterion" >
<choose >
<when test="criterion.noValue" >
and ${criterion.condition}
</when>
<when test="criterion.singleValue" >
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue" >
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue" >
and ${criterion.condition}
<foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Update_By_Example_Where_Clause" >
<where >
<foreach collection="example.oredCriteria" item="criteria" separator="or" >
<if test="criteria.valid" >
<trim prefix="(" suffix=")" prefixOverrides="and" >
<foreach collection="criteria.criteria" item="criterion" >
<choose >
<when test="criterion.noValue" >
and ${criterion.condition}
</when>
<when test="criterion.singleValue" >
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue" >
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue" >
and ${criterion.condition}
<foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Base_Column_List" >
employee_id, employee_name, employee_gender, age, hire_date, department_id
</sql>
<select id="selectByExample" resultMap="BaseResultMap" parameterType="com.test.vo.EmployeeExample" >
select
<if test="distinct" >
distinct
</if>
'true' as QUERYID,
<include refid="Base_Column_List" />
from employee
<if test="_parameter != null" >
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null" >
order by ${orderByClause}
</if>
</select>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
from employee
where employee_id = #{employeeId,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
delete from employee
where employee_id = #{employeeId,jdbcType=INTEGER}
</delete>
<delete id="deleteByExample" parameterType="com.test.vo.EmployeeExample" >
delete from employee
<if test="_parameter != null" >
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="com.test.vo.Employee" >
insert into employee (employee_id, employee_name, employee_gender,
age, hire_date, department_id
)
values (#{employeeId,jdbcType=INTEGER}, #{employeeName,jdbcType=VARCHAR}, #{employeeGender,jdbcType=CHAR},
#{age,jdbcType=INTEGER}, #{hireDate,jdbcType=DATE}, #{departmentId,jdbcType=INTEGER}
)
</insert>
<insert id="insertSelective" parameterType="com.test.vo.Employee" >
insert into employee
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="employeeId != null" >
employee_id,
</if>
<if test="employeeName != null" >
employee_name,
</if>
<if test="employeeGender != null" >
employee_gender,
</if>
<if test="age != null" >
age,
</if>
<if test="hireDate != null" >
hire_date,
</if>
<if test="departmentId != null" >
department_id,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="employeeId != null" >
#{employeeId,jdbcType=INTEGER},
</if>
<if test="employeeName != null" >
#{employeeName,jdbcType=VARCHAR},
</if>
<if test="employeeGender != null" >
#{employeeGender,jdbcType=CHAR},
</if>
<if test="age != null" >
#{age,jdbcType=INTEGER},
</if>
<if test="hireDate != null" >
#{hireDate,jdbcType=DATE},
</if>
<if test="departmentId != null" >
#{departmentId,jdbcType=INTEGER},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="com.test.vo.EmployeeExample" resultType="java.lang.Integer" >
select count(*) from employee
<if test="_parameter != null" >
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map" >
update employee
<set >
<if test="record.employeeId != null" >
employee_id = #{record.employeeId,jdbcType=INTEGER},
</if>
<if test="record.employeeName != null" >
employee_name = #{record.employeeName,jdbcType=VARCHAR},
</if>
<if test="record.employeeGender != null" >
employee_gender = #{record.employeeGender,jdbcType=CHAR},
</if>
<if test="record.age != null" >
age = #{record.age,jdbcType=INTEGER},
</if>
<if test="record.hireDate != null" >
hire_date = #{record.hireDate,jdbcType=DATE},
</if>
<if test="record.departmentId != null" >
department_id = #{record.departmentId,jdbcType=INTEGER},
</if>
</set>
<if test="_parameter != null" >
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExample" parameterType="map" >
update employee
set employee_id = #{record.employeeId,jdbcType=INTEGER},
employee_name = #{record.employeeName,jdbcType=VARCHAR},
employee_gender = #{record.employeeGender,jdbcType=CHAR},
age = #{record.age,jdbcType=INTEGER},
hire_date = #{record.hireDate,jdbcType=DATE},
department_id = #{record.departmentId,jdbcType=INTEGER}
<if test="_parameter != null" >
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByPrimaryKeySelective" parameterType="com.test.vo.Employee" >
update employee
<set >
<if test="employeeName != null" >
employee_name = #{employeeName,jdbcType=VARCHAR},
</if>
<if test="employeeGender != null" >
employee_gender = #{employeeGender,jdbcType=CHAR},
</if>
<if test="age != null" >
age = #{age,jdbcType=INTEGER},
</if>
<if test="hireDate != null" >
hire_date = #{hireDate,jdbcType=DATE},
</if>
<if test="departmentId != null" >
department_id = #{departmentId,jdbcType=INTEGER},
</if>
</set>
where employee_id = #{employeeId,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.test.vo.Employee" >
update employee
set employee_name = #{employeeName,jdbcType=VARCHAR},
employee_gender = #{employeeGender,jdbcType=CHAR},
age = #{age,jdbcType=INTEGER},
hire_date = #{hireDate,jdbcType=DATE},
department_id = #{departmentId,jdbcType=INTEGER}
where employee_id = #{employeeId,jdbcType=INTEGER}
</update>
</mapper>