<select id="pageQueryAllShouLiDanRecordNew" resultType="java.util.Map"> SELECT ${param} ,B.FLOWID,B.YYWORKSEQ,B.KDWORKSEQ FROM WF_BASE_FORM_INFO B where B.STATUS_ID < 100 AND B.PRODUCTID='0' ${where} <if test="FGSCode != '' and FGSCode != null"> AND B.FGS_Code in (#{FGSCode}) </if> <if test="ZHWGID != '' and ZHWGID != null"> AND B.ZHWGID in (#{ZHWGID}) </if> <choose> <when test="KDCompany == 3"> AND B.KDCOMPANY = '3' </when> <otherwise> AND B.KDCOMPANY in ('1','4','99') </otherwise> </choose> <if test="orderBy !=null and orderBy != ''"> ${orderBy} </if> <if test="orderBy ==null or orderBy == ''"> ORDER BY B.RECEIVE_TIME DESC </if> </select>
时间: 2024-04-28 21:25:40 浏览: 101
这是一段 SQL 语句,用于查询 WF_BASE_FORM_INFO 表中符合条件的记录。其中 ${param}、${where}、#{FGSCode}、#{ZHWGID}、${orderBy} 等都是占位符,需要在使用时根据实际情况进行替换。该语句的逻辑是先根据条件筛选出符合要求的记录,然后根据 orderBy 字段进行排序,如果 orderBy 为空,则按照 RECEIVE_TIME 倒序排列。
相关问题
<select id="pageQueryAllShouLiDanRecordNew" resultType="java.util.Map"> SELECT ${param} ,B.FLOWID,B.YYWORKSEQ,B.KDWORKSEQ FROM WF_BASE_FORM_INFO B where B.STATUS_ID < 100 AND B.PRODUCTID='0' ${where} <if test="FGSCode != '' and FGSCode != null"> AND B.FGS_Code in (#{FGSCode}) </if> <if test="ZHWGID != '' and ZHWGID != null"> AND B.ZHWGID in (#{ZHWGID}) </if> <choose> <when test="KDCompany == 3"> AND B.KDCOMPANY = '3' </when> <otherwise> AND B.KDCOMPANY in ('1','4','99') </otherwise> </choose> <if test="orderBy !=null and orderBy != ''"> ${orderBy} </if> <if test="orderBy ==null or orderBy == ''"> ORDER BY B.RECEIVE_TIME DESC </if> </select> 这段代码是什么意思
这段代码是一个 MyBatis 的 SQL 映射语句。它的作用是从 WF_BASE_FORM_INFO 表中查询符合条件的记录,并返回一个包含流程ID、YYWORKSEQ、KDWORKSEQ等字段的 Map 对象列表。
具体来说,它会根据传入的参数 ${param}、${where}、#{FGSCode}、#{ZHWGID}、${orderBy} 等条件进行筛选,其中:
- STATUS_ID < 100 且 PRODUCTID='0' 是筛选条件的一部分;
- 如果传入的 FGSCode 不为空,则会额外筛选 FGS_Code 列;
- 如果传入的 ZHWGID 不为空,则会额外筛选 ZHWGID 列;
- 如果传入的 KDCompany 等于 3,则会额外筛选 KDCOMPANY = '3',否则会筛选 KDCOMPANY in ('1', '4', '99');
- 如果传入的 orderBy 不为空,则按照该字段进行排序,否则按照 RECEIVE_TIME 倒序排列。
最后,符合条件的记录会被封装成一个 Map 对象列表并返回。
解释代码<?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.synu.sx.demo.mapper.StudentMapper"> <select id="list" parameterType="java.util.Map" resultType="com.synu.sx.demo.entity.Student"> select * from student <where> <if test="param.id != null and param.id != ''"> id = #{param.id} </if> </where> </select> <select id="listQuery" parameterType="java.util.Map" resultType="com.synu.sx.demo.entity.Student"> select * from student <where> <if test="param.name != null and param.name != ''"> and name like concat('%', #{param.name} ,'%') </if> <if test="param.id != null and param.id != ''"> and id like concat('%', #{param.id} ,'%') </if> </where> limit #{param.start}, #{param.limit} </select> <select id="listQueryCount" parameterType="java.util.Map" resultType="java.lang.Integer"> select count(*) from student <where> <if test="param.name != null and param.name != ''"> and name like concat('%', #{param.name} ,'%') </if> <if test="param.id != null and param.id != ''"> and id like concat('%', #{param.id} ,'%') </if> </where> </select> </mapper>
这段代码是一个XML文件,通常用于配置MyBatis框架中的SQL映射。它描述了一个名为StudentMapper的映射器,其中定义了三个查询语句。
第一个查询语句的id是"list",使用了一个名为param的Map类型参数,并将结果映射到com.synu.sx.demo.entity.Student类型。这个查询语句从student表中选择所有的列,并使用<where>标签来添加条件筛选。在<if>标签中,如果param的id属性不为空,则添加了一个id = #{param.id}的条件。
第二个查询语句的id是"listQuery",与第一个查询语句类似,不同之处在于它添加了更多的条件筛选和分页功能。除了id之外,它还检查了param的name属性,并使用like语句进行模糊匹配。最后,它使用limit语句来限制结果集的返回数量。
第三个查询语句的id是"listQueryCount",它与第二个查询语句类似,但返回的结果是记录总数而不是具体的记录。这个查询语句用于分页查询时获取总记录数。
这些查询语句可以通过MyBatis框架中的映射器接口调用并执行相应的SQL操作。
阅读全文