MyBatis Plus屏蔽实体类里面的查询拼接字段
时间: 2023-07-20 18:05:45 浏览: 138
MyBatis Plus提供了一种方便的方式来屏蔽实体类中的查询拼接字段,即使用注解`@TableField(exist = false)`来标注该字段不属于数据库表的字段,从而不会被MyBatis Plus自动处理成SQL语句的条件。
例如,定义一个实体类:
```java
public class User {
private Long id;
private String username;
@TableField(exist = false)
private String fullName;
// 省略getter和setter方法
}
```
在这个实体类中,`fullName`字段被标注为`@TableField(exist = false)`,表示该字段不属于数据库表的字段,不会被MyBatis Plus自动处理成SQL语句的条件。
当使用MyBatis Plus的条件构造器进行查询时,可以像下面这样使用:
```java
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("username", "admin");
```
这样,只有`username`字段被作为查询条件,而`fullName`字段不会被自动处理成SQL语句的条件。
相关问题
mybatis plus 实体类名字加后缀_MyBatis-Plus入门篇——CRUD
MyBatis Plus 实体类名字加后缀是为了与数据库表名区分开来,建议采用驼峰命名法,例如:
```
@Table(name = "user")
public class UserModel {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
// 省略 getter 和 setter
}
```
以上代码中,实体类名为 `UserModel`,表名为 `user`。同时,建议在实体类上添加 `@Table` 注解,指定表名。在字段上,可以使用 `@TableId` 注解指定主键类型和生成策略。
在 MyBatis Plus 中,使用实体类进行 CRUD 操作非常方便。例如,新增一条记录:
```
UserModel user = new UserModel();
user.setName("张三");
user.setAge(20);
user.setEmail("zhangsan@example.com");
int rows = userMapper.insert(user);
```
以上代码中,通过 `userMapper` 对象调用 `insert` 方法即可插入一条记录。
其他 CRUD 操作也类似,例如查询:
```
List<UserModel> userList = userMapper.selectList(new QueryWrapper<UserModel>()
.eq("age", 20)
.like("name", "张")
.orderByDesc("id"));
```
以上代码中,通过 `userMapper` 对象调用 `selectList` 方法即可查询满足条件的记录。其中,`QueryWrapper` 是 MyBatis Plus 提供的条件构造器,可以方便地拼接查询条件。
mybatis-plus查询时给时间拼接23:59:59
您可以在查询时使用Mybatis-Plus的LambdaQueryWrapper来实现该功能,示例如下:
```java
// 假设要查询的实体类为Entity,时间字段名为createTime
LambdaQueryWrapper<Entity> wrapper = new LambdaQueryWrapper<>();
wrapper.apply("DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:%s')='" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + " 23:59:59'");
List<Entity> result = entityMapper.selectList(wrapper);
```
在LambdaQueryWrapper中使用apply方法,可以直接拼接SQL语句,其中使用DATE_FORMAT函数将时间字段格式化为字符串,然后与当前日期拼接上23:59:59来实现查询。
阅读全文