现在的场景是 有流水表 我可以通过merchant_code, sign_name, 或者mobile进行查询 请使用mybatis-plus的注解方式进行查询需要写在一个方法里面 并且使用分页查询
时间: 2024-02-09 21:10:16 浏览: 27
可以使用MyBatis-Plus的注解方式进行多条件查询和分页。可以按照以下方式进行操作:
```java
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface TransactionMapper extends BaseMapper<Transaction> {
@Select("<script>"
+ "SELECT * FROM transaction WHERE 1=1 "
+ "<if test='merchantCode!=null'> AND merchant_code = #{merchantCode} </if>"
+ "<if test='signName!=null'> AND sign_name = #{signName} </if>"
+ "<if test='mobile!=null'> AND mobile = #{mobile} </if>"
+ "</script>")
Page<Transaction> findByConditions(Page<Transaction> page,
@Param("merchantCode") String merchantCode,
@Param("signName") String signName,
@Param("mobile") String mobile);
}
```
在这个例子中,`TransactionMapper`接口继承了`BaseMapper<Transaction>`,并且定义了一个查询方法:`findByConditions()`。这个方法使用了MyBatis的动态SQL语言,根据传入的参数生成不同的SQL语句。`<if>`标签用于判断参数是否为空,如果不为空,则在SQL语句中添加相应的条件。
要使用这个查询方法进行查询,可以按照以下方式进行操作:
```java
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class TransactionService {
@Autowired
private TransactionMapper transactionMapper;
public Page<Transaction> findByConditions(String merchantCode, String signName, String mobile, int pageNum, int pageSize) {
Page<Transaction> page = new Page<>(pageNum, pageSize);
return transactionMapper.findByConditions(page, merchantCode, signName, mobile);
}
}
```
在这个例子中,`TransactionService`类使用`TransactionMapper`进行查询,并且定义了一个查询方法:`findByConditions()`。这个方法接收三个参数:`merchantCode`、`signName`和`mobile`,分别用于指定查询条件。`pageNum`和`pageSize`参数用于指定分页信息。在方法内部,创建一个`Page<Transaction>`类型的分页对象,并将查询条件传递给`TransactionMapper`的`findByConditions()`方法进行查询。
此方法可以根据传递的参数生成不同的SQL语句,实现了多条件查询,并且使用了分页查询。