|
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