@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 example below.java
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.app
<mapper> <select id="getUsers" resultType="com.john.model.User"> select id , user_name as userName from user </select> </mapper>
Pagination plugin is another effective helper, but there are many differences between 3.x and 2.x. Listed as below.post
TooManyResultExpression
throwed when declare Page
as return type of Mapper methods. List
is preference.current
property of Page
which is used to indicate the current page to fetch starts from 1, not 0. What the heck:(Fill in the records
property of Page
by manual, while the total
property would be set automatically by Mybatis-Plus.fetch
public void selectUserPaging(Page<User> page) { List<User> users = dao.selectUserPaging(page); page.setRecords(users); return page; }
If this post could give you a favor, it's my pleasure :)this