1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.ibatis.submitted.enumtypehandler_on_annotation;
17
18 import org.apache.ibatis.annotations.Arg;
19 import org.apache.ibatis.annotations.Case;
20 import org.apache.ibatis.annotations.ConstructorArgs;
21 import org.apache.ibatis.annotations.Result;
22 import org.apache.ibatis.annotations.Results;
23 import org.apache.ibatis.annotations.Select;
24 import org.apache.ibatis.annotations.TypeDiscriminator;
25 import org.apache.ibatis.submitted.enumtypehandler_on_annotation.Person.PersonType;
26 import org.apache.ibatis.type.EnumOrdinalTypeHandler;
27
28
29
30
31
32
33 public interface PersonMapper {
34
35
36 @ConstructorArgs({
37 @Arg(column = "id", javaType = Integer.class, id = true)
38 , @Arg(column = "firstName", javaType = String.class)
39 , @Arg(column = "lastName", javaType = String.class)
40
41 , @Arg(column = "personType", javaType = PersonType.class, typeHandler = EnumOrdinalTypeHandler.class)
42 })
43
44 @Select("SELECT id, firstName, lastName, personType FROM person WHERE id = #{id}")
45 Person findOneUsingConstructor(int id);
46
47
48 @Results({
49
50 @Result(property = "personType", column = "personType", typeHandler = EnumOrdinalTypeHandler.class)
51 })
52
53 @Select("SELECT id, firstName, lastName, personType FROM person WHERE id = #{id}")
54 Person findOneUsingSetter(int id);
55
56
57 @TypeDiscriminator(
58
59 column = "personType", javaType = PersonType.class, typeHandler = EnumOrdinalTypeHandler.class,
60
61 cases = {
62 @Case(value = "PERSON", type = Person.class, results = {@Result(property = "personType", column = "personType", typeHandler = EnumOrdinalTypeHandler.class)})
63 , @Case(value = "EMPLOYEE", type = Employee.class, results = {@Result(property = "personType", column = "personType", typeHandler = EnumOrdinalTypeHandler.class)})
64 })
65
66 @Select("SELECT id, firstName, lastName, personType FROM person WHERE id = #{id}")
67 Person findOneUsingTypeDiscriminator(int id);
68
69 }