<select id="selectDeptListByRoleId" resultType="Integer"> select d.dept_id from sys_dept d left join sys_role_dept rd on d.dept_id = rd.dept_id where rd.role_id = #{roleId} <if test="deptCheckStrictly"> and d.dept_id not in (select d.parent_id from sys_dept d inner join sys_role_dept rd on d.dept_id = rd.dept_id and rd.role_id = #{roleId}) </if> order by d.parent_id, d.order_num </select>
时间: 2024-02-23 07:56:20 浏览: 115
这个是一个 MyBatis 的 XML 配置文件中的一段 SQL 查询语句,根据传入的 roleId 参数查询对应的部门信息。其中使用了 left join 连接了 sys_dept 和 sys_role_dept 两张表,并使用了 if 条件判断,如果传入的 deptCheckStrictly 参数为 true,则排除了部门的父级部门。最后按照部门的父级部门和排序号进行排序。
相关问题
<select id="selectExecuteSqlDetail" resultType="com.cvte.model.entity.ExecuteSqlDetail"> SELECT s.product_id, s.mybatis_id, s.sql_template, s.count, s.t_id, s.version, d.consume_time, d.s_id, d.total_score, d.create_time FROM sql_template s JOIN sql_plan_detail d ON s.t_id = d.template_id WHERE s.product_id = #{productId} <if test="mybatisId != null"> AND s.mybatis_id = #{mybatisId} </if> <if test="version != null"> AND s.version = #{version} </if> <if test="startTime != null and endTime != null"> AND d.create_time BETWEEN #{startTime} AND #{endTime} </if> <if test="minScore != 0.0"> and d.total_score > #{minScore} </if> <if test="maxScore != 0.0"> and #{maxScore} > d.total_score </if> ORDER BY d.total_score DESC </select>
这是一段 MyBatis 的 SQL 查询语句,查询的是一个名为 sql_template 和一个名为 sql_plan_detail 的表的一些字段。其中,sql_template 表中的 product_id, mybatis_id, sql_template, count, t_id, version 字段和 sql_plan_detail 表中的 consume_time, s_id, total_score, create_time 字段被查询出来。查询条件包括 product_id、mybatis_id、version、startTime、endTime、minScore 和 maxScore。如果 mybatis_id 不为空,则会加上一个额外的条件。如果 version 不为空,则也会加上一个额外的条件。如果 startTime 和 endTime 不为空,则加上一个时间范围的条件。如果 minScore 和 maxScore 不为 0,则分别加上一个总分数的最小值和最大值的条件。最后,结果按照 total_score 降序排序。
<select id="selectName" resultType="com.xcoffee.shift.vo.StaffNameVO"> select m1.staff_id, (m1.first_name || m1.last_name) AS staff_name from m_staff m1 inner join m_store_account m2 on m1.store_id = m2.store_id and m2.delete_flag = '0' where m1.delete_flag = '0' <choose> <when test="accountType = '3' "> and m2.business_id = #{accountId,jdbcType = INTEGER} </when> <when test="accountType = '2' "> and m2.franchise_id = #{accountId,jdbcType = INTEGER} </when> <when test="accountType = '4' and franchiseId != null and businessId != null "> and m2.store_id = #{accountId,jdbcType = INTEGER} </when> </choose> </select> 传入 accound =4 accound= 4 不好使
这段代码是一个 SQL 查询语句,用于从 m_staff 和 m_store_account 两个表中联合查询员工信息和门店信息,其中包括员工 ID 和员工姓名。其中 choose 和 when 是 MyBatis 中的标签,用于动态生成 SQL 查询语句。具体实现上,如果 accountType 参数等于 3,则会添加一个额外的限制条件:m2.business_id = ?。
阅读全文