@Select注解和mybatisplus的条件构造器哪个好
时间: 2023-11-23 11:54:36 浏览: 87
`@Select` 注解和 MyBatis-Plus 的条件构造器都有各自的优缺点。
`@Select` 注解优点是可以直接在 Java 代码中编写 SQL 语句,使用方便快捷,不需要额外的 XML 配置文件。而 MyBatis-Plus 的条件构造器则是在 SQL 语句的基础上提供了更加灵活和方便的条件构造方式,可以通过链式调用设置查询条件,不需要手动拼接 SQL 语句,避免了 SQL 注入的风险。
总的来说,如果查询条件比较简单,SQL 语句比较短,使用 `@Select` 注解可能更加方便。而如果查询条件比较复杂,SQL 语句比较长,建议使用 MyBatis-Plus 的条件构造器,可以提高查询语句的可读性和可维护性。不过具体使用哪种方式,还需要根据具体业务场景进行选择。
相关问题
Mybatisplus 自定义sql 使用条件构造器
Mybatisplus 自定义sql 使用条件构造器可以在自定义 SQL 语句中使用 Mybatisplus 的条件构造器,方便快捷地构造查询条件。
使用步骤:
1. 在 Mapper 接口中定义自定义 SQL 语句的方法,方法返回值为 List 或者其他需要返回的结果类型。
2. 在自定义 SQL 语句中使用 ${} 占位符来引用条件构造器生成的 SQL 片段。
3. 在方法参数中使用 @Param 注解来指定条件构造器生成的 SQL 片段的参数名称和类型,同时在自定义 SQL 语句中使用 #{参数名} 占位符来引用参数。
4. 在方法中使用 QueryWrapper 类来构造查询条件,然后将 QueryWrapper 对象作为参数传递给自定义 SQL 语句方法即可。
示例代码如下:
```
@Mapper
public interface UserMapper extends BaseMapper<User> {
@Select("SELECT * FROM user ${ew.customSqlSegment}")
List<User> selectByCustomSql(@Param(Constants.WRAPPER) QueryWrapper<User> wrapper);
}
```
其中,${ew.customSqlSegment} 是 Mybatisplus 条件构造器生成的 SQL 片段,@Param(Constants.WRAPPER) 指定了 wrapper 参数的名称和类型。
调用示例:
```
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("age", 18).like("name", "张");
List<User> userList = userMapper.selectByCustomSql(wrapper);
```
以上代码中,使用 QueryWrapper 构造了查询条件,然后将 QueryWrapper 对象作为参数传递给 selectByCustomSql 方法,该方法会根据传入的 QueryWrapper 对象生成自定义 SQL 语句,并返回符合条件的用户列表。
解释maven配置 Mybatisplus添加操作、修改操作-自动填充操作、查询、删除以及逻辑删除、条件构造器
好的,我会依次为您解释maven配置Mybatisplus的添加操作、修改操作-自动填充操作、查询、删除以及逻辑删除、条件构造器。
1. 添加操作:
使用Mybatisplus的添加操作非常方便,只需要创建对应的实体类,然后使用Mybatisplus提供的BaseMapper中的insert方法即可完成添加操作,如下所示:
```
User user = new User();
user.setName("Tom");
user.setAge(20);
userMapper.insert(user);
```
2. 修改操作-自动填充操作:
Mybatisplus提供了自动填充功能,可以在添加或修改实体时,自动填充一些字段,比如创建时间、修改时间等。只需要在实体类中添加对应的注解即可,如下所示:
```
public class User {
// ...
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
// ...
}
```
然后在添加或修改实体时,这些字段就会自动填充了。
3. 查询操作:
Mybatisplus提供了很多查询方法,可以根据不同的条件查询实体,比如根据主键查询、根据条件查询等。使用方法也很简单,直接调用对应的方法即可,如下所示:
```
// 根据主键查询
User user = userMapper.selectById(id);
// 根据条件查询
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name", "Tom");
List<User> userList = userMapper.selectList(wrapper);
```
4. 删除以及逻辑删除:
Mybatisplus提供了删除实体的方法,使用方法也很简单,直接调用对应的方法即可,如下所示:
```
// 根据主键删除
int result = userMapper.deleteById(id);
// 根据条件删除
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name", "Tom");
int result = userMapper.delete(wrapper);
```
除了物理删除之外,Mybatisplus还提供了逻辑删除的功能,只需要在实体类中添加对应的注解即可,如下所示:
```
public class User {
// ...
@TableLogic
private Integer deleted;
// ...
}
```
然后在删除实体时,Mybatisplus会自动将deleted字段设置为1,表示该实体已被删除。
5. 条件构造器:
Mybatisplus提供了条件构造器,可以根据不同的条件构造查询条件,比如eq、ne、like、in等。使用方法也很简单,直接创建对应的条件构造器,然后调用对应的方法即可,如下所示:
```
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name", "Tom")
.like("email", "test")
.in("age", Arrays.asList(12, 18, 20));
List<User> userList = userMapper.selectList(wrapper);
```
以上就是maven配置Mybatisplus的添加操作、修改操作-自动填充操作、查询、删除以及逻辑删除、条件构造器的详细解释,希望能对您有所帮助。
阅读全文