Mybatis里的Mapper; 组合查询;多条件查询;模糊查询

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jsh.erp.stock.dao.BsProdProcessMapper">
    <update id="updateBuildOnlyNumber">
        update jsh_sequence set current_val = current_val + 1 where seq_name = 'bs_prod_list_seq'
    </update>

    <select id="getBuildOnlyNumber" resultType="java.lang.Long">
        select current_val from jsh_sequence where seq_name = 'bs_prod_list_seq'
    </select>
    <select id="findBsProdProcessWithBeginAndEndTime" resultType="com.jsh.erp.stock.entity.BsProdProcess">
        select * from bs_prod_process where 1 = 1
        <if test="beginTime != null and beginTime != ''">
            and order_date &gt; #{beginTime}
        </if>
        <if test="endTime != null and endTime != ''">
            and order_date &lt; #{endTime}
        </if>
        <if test="processCode != null and processCode != ''">
            and process_code like CONCAT('%', #{processCode}, '%')
        </if>
        <if test="projectName != null and projectName != ''">
            and project_name like CONCAT('%', #{processName}, '%')
        </if>
        <if test="projectCode != null and projectCode != '' ">
            and project_code like CONCAT('%', #{projectCode}, '%')
        </if>
        <if test="processState != -1 ">
            and process_state = #{processState}
        </if>
    </select>
</mapper>

对应的Mapper接口: BsProdProcessMapper.java

package com.jsh.erp.stock.dao;

import com.jsh.erp.stock.entity.BsProdProcess;
import com.jsh.erp.stock.query.BsProdProcessQuery;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

import java.util.List;

/**
* @Package: com.jsh.erp.stock.dao
* @ClassName: BsProdProcessMapper
* @Author: hanty
* @Description: 生产流程单 Mapper
* @Date: 2020-12-29 09:49:51
* @Version: 1.0
*/
public interface BsProdProcessMapper extends Mapper<BsProdProcess>, MySqlMapper<BsProdProcess> {
    /**
     * 带有开始时间和结束时间的查询生产清单接口
     * @param bsProdProcessQuery
     * @return
     */
    List<BsProdProcess> findBsProdProcessWithBeginAndEndTime(BsProdProcessQuery bsProdProcessQuery);
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 MyBatis-Plus 中,你可以使用 Lambda 表达式来构建复杂的 SQL 查询条件。如果你想在 SQL 查询条件中加括号,可以使用 Lambda 表达式中的 `and` 和 `or` 方法来实现。 例如,假设你有一个用户表,希望查询年龄大于 18 岁或者名字以 "J" 开头的用户。你可以这样写: ``` List<User> users = userMapper.selectList(new QueryWrapper<User>() .lambda() .and(age -> age.ge(18)) .or(name -> name.likeRight("J%")) ); ``` 这样生成的 SQL 语句就会带上括号,类似这样: ``` SELECT * FROM user WHERE (age >= 18) OR (name LIKE 'J%') ``` 如果你想在条件中嵌套更多的括号,可以使用 Lambda 表达式的 `and` 和 `or` 方法的重载版本,接受一个 `Function<QueryWrapper<T>, QueryWrapper<T>>` 类型的参数,这样就可以在括号内再嵌套一个 Lambda 表达式了。 例如,假设你想查询年龄大于 18 岁并且名字以 "J" 开头或者邮箱以 "example.com" 结尾的用户,你可以这样写: ``` List<User> users = userMapper.selectList(new QueryWrapper<User>() .lambda() .and(age -> age.ge(18)) .and(name -> name.likeRight("J%")) .or(query -> query.lambda() .and(email -> email.like("%example.com")) ) ); ``` 这样生成的 SQL 语句就会带上括号,类似这样: ``` SELECT * FROM user WHERE (age >= 18) AND (name LIKE ' ### 回答2: 使用Mybatis-Plus在SQL查询条件中加括号的方法是使用Wrapper构建查询条件,并使用lambda表达式和括号来组合条件。 首先,创建一个Wrapper对象,可以使用`QueryWrapper`或`LambdaQueryWrapper`来构建。以`LambdaQueryWrapper`为例: ```java LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>(); ``` 然后,在Wrapper对象中使用lambda表达式来定义查询条件,并使用括号来分组条件。例如,查询年龄小于30或者姓名为"张三"的用户: ```java wrapper.and(w -> w.lt(User::getAge, 30).or().eq(User::getName, "张三")); ``` 在这个例子中,括号内的条件`.lt(User::getAge, 30)`表示查询年龄小于30,`.or()`表示或运算,`.eq(User::getName, "张三")`表示查询姓名为"张三"。整个表达式的意思是查询满足括号内条件的用户。 最后,将Wrapper对象作为参数传递给Mybatis-Plus的查询方法,如`selectList()`、`selectOne()`等。 这样就可以在Mybatis-Plus中使用括号来组合查询条件了。 ### 回答3: 在MyBatis-Plus中,在SQL查询条件中加括号可以通过使用实体类的QueryWrapper对象来实现。QueryWrapper是MyBatis-Plus提供的一个查询封装类,可以方便地构建查询条件。 首先,需要创建一个QueryWrapper对象。可以使用QueryWrapper的构造函数创建一个空的QueryWrapper对象,然后使用它的方法来添加查询条件。 然后,可以使用QueryWrapper对象提供的方法来添加查询条件。例如,可以使用eq方法添加等于条件,使用like方法添加模糊查询条件。 如果需要在SQL查询条件中加括号,可以使用and方法或者or方法来将多个条件加括号。例如,可以使用and方法将多个相等条件加括号。 最后,调用MyBatis-Plus提供的mapper的select方法,将QueryWrapper对象作为参数传入,就可以执行查询操作。查询结果将会被封装成一个List集合返回。 综上所述,MyBatis-Plus中在SQL查询条件中加括号可以通过使用QueryWrapper对象来实现。通过构建QueryWrapper对象并使用它的方法来添加查询条件,然后将QueryWrapper对象作为参数传入select方法进行查询操作。这样就可以在SQL查询条件中加括号实现更复杂的查询条件组合
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值