MyBatis Plus的内置参数对象能用来干吗?

MyBatis Plus的内置参数对象主要有以下用途:

在SQL语句中简化参数使用:

1. #{column}

代表具体的参数属性:

List<User> list = mapper.selectList(null, 
   Wrapper.<User>lambda().eq(User::getName, "#{name}"));

使用#{name},取出参数name属性值。

2. ${column}

代表参数中Map的值:

List<User> list = mapper.selectList(new HashMap<String, Object>(){{
   put("name", "John"); 
}}, null);

在SQL中使用${name},取出map中的name值。

3. *

代表参数对象本身:

<select id="selectById" resultType="user">
  select * from user where id = ${id}
</select>

传入:

User user = new User();
user.setId(1);
List<User> list = mapper.selectById(user);  

会通过 * 取出user.id的值。

4. _.column

代表Getter方法:

<select id="selectById" resultType="user">
  select * from user where id = _.id
</select>

等同于:

select * from user where id = #{id}

这几个内置参数对象可以大大简化 MyBatis Plus的 SQL 编写:

  • #{column}:代表参数属性
  • ${column}:代表Map值
  • *:代表参数对象
  • _.column:代表Getter方法

通过使用内置参数对象,提高了SQL的易读性和可维护性。