|
17 | 17 |
|
18 | 18 | import static examples.simple.PersonDynamicSqlSupport.*;
|
19 | 19 | import static org.mybatis.dynamic.sql.SqlBuilder.isEqualTo;
|
| 20 | +import static org.mybatis.dynamic.sql.SqlBuilder.isEqualToWhenPresent; |
20 | 21 |
|
21 | 22 | import java.util.Arrays;
|
22 | 23 | import java.util.Collection;
|
| 24 | +import java.util.Date; |
23 | 25 | import java.util.List;
|
24 | 26 | import java.util.Optional;
|
25 | 27 | import java.util.function.UnaryOperator;
|
26 | 28 |
|
| 29 | +import org.apache.ibatis.annotations.Arg; |
27 | 30 | import org.apache.ibatis.annotations.Mapper;
|
28 |
| -import org.apache.ibatis.annotations.Result; |
29 |
| -import org.apache.ibatis.annotations.ResultMap; |
30 |
| -import org.apache.ibatis.annotations.Results; |
31 | 31 | import org.apache.ibatis.annotations.SelectProvider;
|
32 | 32 | import org.apache.ibatis.type.JdbcType;
|
33 | 33 | import org.mybatis.dynamic.sql.BasicColumn;
|
|
56 | 56 | public interface PersonMapper extends CommonCountMapper, CommonDeleteMapper, CommonInsertMapper<PersonRecord>, CommonUpdateMapper {
|
57 | 57 |
|
58 | 58 | @SelectProvider(type=SqlProviderAdapter.class, method="select")
|
59 |
| - @Results(id="PersonResult", value= { |
60 |
| - @Result(column="A_ID", property="id", jdbcType=JdbcType.INTEGER, id=true), |
61 |
| - @Result(column="first_name", property="firstName", jdbcType=JdbcType.VARCHAR), |
62 |
| - @Result(column="last_name", property="lastName", jdbcType=JdbcType.VARCHAR, typeHandler=LastNameTypeHandler.class), |
63 |
| - @Result(column="birth_date", property="birthDate", jdbcType=JdbcType.DATE), |
64 |
| - @Result(column="employed", property="employed", jdbcType=JdbcType.VARCHAR, typeHandler=YesNoTypeHandler.class), |
65 |
| - @Result(column="occupation", property="occupation", jdbcType=JdbcType.VARCHAR), |
66 |
| - @Result(column="address_id", property="addressId", jdbcType=JdbcType.INTEGER) |
67 |
| - }) |
| 59 | + @Arg(column="A_ID", jdbcType=JdbcType.INTEGER, id=true, javaType = Integer.class) |
| 60 | + @Arg(column="first_name", jdbcType=JdbcType.VARCHAR, javaType = String.class) |
| 61 | + @Arg(column="last_name", jdbcType=JdbcType.VARCHAR, typeHandler=LastNameTypeHandler.class, javaType = LastName.class) |
| 62 | + @Arg(column="birth_date", jdbcType=JdbcType.DATE, javaType = Date.class) |
| 63 | + @Arg(column="employed", jdbcType=JdbcType.VARCHAR, typeHandler=YesNoTypeHandler.class, javaType = Boolean.class) |
| 64 | + @Arg(column="occupation", jdbcType=JdbcType.VARCHAR, javaType = String.class) |
| 65 | + @Arg(column="address_id", jdbcType=JdbcType.INTEGER, javaType = Integer.class) |
68 | 66 | List<PersonRecord> selectMany(SelectStatementProvider selectStatement);
|
69 | 67 |
|
70 | 68 | @SelectProvider(type=SqlProviderAdapter.class, method="select")
|
71 |
| - @ResultMap("PersonResult") |
| 69 | + @Arg(column="A_ID", jdbcType=JdbcType.INTEGER, id=true, javaType = Integer.class) |
| 70 | + @Arg(column="first_name", jdbcType=JdbcType.VARCHAR, javaType = String.class) |
| 71 | + @Arg(column="last_name", jdbcType=JdbcType.VARCHAR, typeHandler=LastNameTypeHandler.class, javaType = LastName.class) |
| 72 | + @Arg(column="birth_date", jdbcType=JdbcType.DATE, javaType = Date.class) |
| 73 | + @Arg(column="employed", jdbcType=JdbcType.VARCHAR, typeHandler=YesNoTypeHandler.class, javaType = Boolean.class) |
| 74 | + @Arg(column="occupation", jdbcType=JdbcType.VARCHAR, javaType = String.class) |
| 75 | + @Arg(column="address_id", jdbcType=JdbcType.INTEGER, javaType = Integer.class) |
72 | 76 | Optional<PersonRecord> selectOne(SelectStatementProvider selectStatement);
|
73 | 77 |
|
74 | 78 | BasicColumn[] selectList =
|
@@ -130,13 +134,13 @@ default int insertMultiple(Collection<PersonRecord> records) {
|
130 | 134 |
|
131 | 135 | default int insertSelective(PersonRecord row) {
|
132 | 136 | return MyBatis3Utils.insert(this::insert, row, person, c ->
|
133 |
| - c.map(id).toPropertyWhenPresent("id", row::getId) |
134 |
| - .map(firstName).toPropertyWhenPresent("firstName", row::getFirstName) |
135 |
| - .map(lastName).toPropertyWhenPresent("lastName", row::getLastName) |
136 |
| - .map(birthDate).toPropertyWhenPresent("birthDate", row::getBirthDate) |
137 |
| - .map(employed).toPropertyWhenPresent("employed", row::getEmployed) |
138 |
| - .map(occupation).toPropertyWhenPresent("occupation", row::getOccupation) |
139 |
| - .map(addressId).toPropertyWhenPresent("addressId", row::getAddressId) |
| 137 | + c.map(id).toPropertyWhenPresent("id", row::id) |
| 138 | + .map(firstName).toPropertyWhenPresent("firstName", row::firstName) |
| 139 | + .map(lastName).toPropertyWhenPresent("lastName", row::lastName) |
| 140 | + .map(birthDate).toPropertyWhenPresent("birthDate", row::birthDate) |
| 141 | + .map(employed).toPropertyWhenPresent("employed", row::employed) |
| 142 | + .map(occupation).toPropertyWhenPresent("occupation", row::occupation) |
| 143 | + .map(addressId).toPropertyWhenPresent("addressId", row::addressId) |
140 | 144 | );
|
141 | 145 | }
|
142 | 146 |
|
@@ -164,47 +168,47 @@ default int update(UpdateDSLCompleter completer) {
|
164 | 168 |
|
165 | 169 | static UpdateDSL<UpdateModel> updateAllColumns(PersonRecord row,
|
166 | 170 | UpdateDSL<UpdateModel> dsl) {
|
167 |
| - return dsl.set(id).equalTo(row::getId) |
168 |
| - .set(firstName).equalTo(row::getFirstName) |
169 |
| - .set(lastName).equalTo(row::getLastName) |
170 |
| - .set(birthDate).equalTo(row::getBirthDate) |
171 |
| - .set(employed).equalTo(row::getEmployed) |
172 |
| - .set(occupation).equalTo(row::getOccupation) |
173 |
| - .set(addressId).equalTo(row::getAddressId); |
| 171 | + return dsl.set(id).equalToOrNull(row::id) |
| 172 | + .set(firstName).equalToOrNull(row::firstName) |
| 173 | + .set(lastName).equalToOrNull(row::lastName) |
| 174 | + .set(birthDate).equalToOrNull(row::birthDate) |
| 175 | + .set(employed).equalToOrNull(row::employed) |
| 176 | + .set(occupation).equalToOrNull(row::occupation) |
| 177 | + .set(addressId).equalToOrNull(row::addressId); |
174 | 178 | }
|
175 | 179 |
|
176 | 180 | static UpdateDSL<UpdateModel> updateSelectiveColumns(PersonRecord row,
|
177 | 181 | UpdateDSL<UpdateModel> dsl) {
|
178 |
| - return dsl.set(id).equalToWhenPresent(row::getId) |
179 |
| - .set(firstName).equalToWhenPresent(row::getFirstName) |
180 |
| - .set(lastName).equalToWhenPresent(row::getLastName) |
181 |
| - .set(birthDate).equalToWhenPresent(row::getBirthDate) |
182 |
| - .set(employed).equalToWhenPresent(row::getEmployed) |
183 |
| - .set(occupation).equalToWhenPresent(row::getOccupation) |
184 |
| - .set(addressId).equalToWhenPresent(row::getAddressId); |
| 182 | + return dsl.set(id).equalToWhenPresent(row::id) |
| 183 | + .set(firstName).equalToWhenPresent(row::firstName) |
| 184 | + .set(lastName).equalToWhenPresent(row::lastName) |
| 185 | + .set(birthDate).equalToWhenPresent(row::birthDate) |
| 186 | + .set(employed).equalToWhenPresent(row::employed) |
| 187 | + .set(occupation).equalToWhenPresent(row::occupation) |
| 188 | + .set(addressId).equalToWhenPresent(row::addressId); |
185 | 189 | }
|
186 | 190 |
|
187 | 191 | default int updateByPrimaryKey(PersonRecord row) {
|
188 | 192 | return update(c ->
|
189 |
| - c.set(firstName).equalTo(row::getFirstName) |
190 |
| - .set(lastName).equalTo(row::getLastName) |
191 |
| - .set(birthDate).equalTo(row::getBirthDate) |
192 |
| - .set(employed).equalTo(row::getEmployed) |
193 |
| - .set(occupation).equalTo(row::getOccupation) |
194 |
| - .set(addressId).equalTo(row::getAddressId) |
195 |
| - .where(id, isEqualTo(row::getId)) |
| 193 | + c.set(firstName).equalToOrNull(row::firstName) |
| 194 | + .set(lastName).equalToOrNull(row::lastName) |
| 195 | + .set(birthDate).equalToOrNull(row::birthDate) |
| 196 | + .set(employed).equalToOrNull(row::employed) |
| 197 | + .set(occupation).equalToOrNull(row::occupation) |
| 198 | + .set(addressId).equalToOrNull(row::addressId) |
| 199 | + .where(id, isEqualToWhenPresent(row::id)) |
196 | 200 | );
|
197 | 201 | }
|
198 | 202 |
|
199 | 203 | default int updateByPrimaryKeySelective(PersonRecord row) {
|
200 | 204 | return update(c ->
|
201 |
| - c.set(firstName).equalToWhenPresent(row::getFirstName) |
202 |
| - .set(lastName).equalToWhenPresent(row::getLastName) |
203 |
| - .set(birthDate).equalToWhenPresent(row::getBirthDate) |
204 |
| - .set(employed).equalToWhenPresent(row::getEmployed) |
205 |
| - .set(occupation).equalToWhenPresent(row::getOccupation) |
206 |
| - .set(addressId).equalToWhenPresent(row::getAddressId) |
207 |
| - .where(id, isEqualTo(row::getId)) |
| 205 | + c.set(firstName).equalToWhenPresent(row::firstName) |
| 206 | + .set(lastName).equalToWhenPresent(row::lastName) |
| 207 | + .set(birthDate).equalToWhenPresent(row::birthDate) |
| 208 | + .set(employed).equalToWhenPresent(row::employed) |
| 209 | + .set(occupation).equalToWhenPresent(row::occupation) |
| 210 | + .set(addressId).equalToWhenPresent(row::addressId) |
| 211 | + .where(id, isEqualToWhenPresent(row::id)) |
208 | 212 | );
|
209 | 213 | }
|
210 | 214 | }
|
0 commit comments