What an Unreliable Lad You Are @TableField
Mybatis-Plus introduces many powerful annotations for us to indicate the mapping between entity properties and table fields. It’s a great coding experience working with those annotations and IService relevant helper class. However, it’s actually not true in Mybatis-Plus 2.x. Why? @TableField
in 3.x could replace ResultMap
fully, even applied in customized Mapper select
statement like the below example.
package com.john.model;
@TableName("user")
public class User {
@TableId
private String id;
@TableField("user_name")
private String userName;
}
<mapper>
<select id="getUsers" resultType="com.john.model.User">
select * from user
</select>
</mapper>
Believe me gentles, 2.x would let you down definitely. @TableField
is out of work in above situation. What we have to do is declare the relations by ResultMap
, or keep the entity property name as the same as the table field which is case-sensitive.
<mapper>
<select id="getUsers" resultType="com.john.model.User">
select id
, user_name as userName
from user
</select>
</mapper>
The Pain I’ve Suffered from Pagination Plugin
Pagination plugin is another effective helper, but there are many differences between 3.x and 2.x. Listed as below.
TooManyResultExpression
throwed when declarePage
as return type of Mapper methods.List
is preference.- The
current
property ofPage
which is used to indicate the current page to fetch starts from 1, not 0. What the heck:( -
Fill in the
records
property ofPage
by manual, while thetotal
property would be set automatically by Mybatis-Plus.public void selectUserPaging(Page<User> page) {List<User> users = dao.selectUserPaging(page); page.setRecords(users); return page; }
Conclusion
If this post could give you a favor, it’s my pleasure :)