首页 > 其他分享 >mapper.xml中查询(+动态查询)的一些笔记

mapper.xml中查询(+动态查询)的一些笔记

时间:2022-10-25 22:02:13浏览次数:38  
标签:xml mapper like brand 查询 status SQL name

1.参数占位符

1. #{} :执行SQL时,会将 #{}占位符替换为?,将来自动设置参数值

2. ${} :拼SQL,会存在SQL注入问题

3. 使用时机:

  参数传递都用 #{},如果要对表名、列名进行动态设置,只能使用${}进行sql拼接。

2.parameterType:

用于设置参数类型,可以省略

3.SQL语句中特殊字符处理

可以使用转义字符 <  注意要加分号

也可以使用 <![CDATA[内容,如< ]]>

动态查询

有时候输入查询条件时,并不会把所有条件写上时,需要使用动态查询

原先的条件查询语句:

    <select id="selectByCondition" resultType="com.xxxx.entity.Brand">
        select * from tb_brand
                where status=#{status}
                and compant_name like #{companyName}
                and brand_name like #{brandName}
    </select>

动态查询语句:(加条件判断)

    <select id="selectByCondition" resultType="com.xxxx.entity.Brand">
        select * from tb_brand
                where
                    <if test="status != null">
                        status=#{status}
                    </if>
                    <if test="companyName != null and companyName != ''" >
                        and  compant_name like #{companyName}
                    </if>
                    <if test="brandName!=null and brandName!=''">
                        and brand_name like #{brandName}
                    </if>
    </select>

存在问题:如果第一个条件不存在的话就会报错

解决方案:1.添加恒等式 

 

 2.通过MyBatis提供的<where>标签来替换where这个关键字

 

 到时候会自动判断,添加where 如果是第一个标签会帮我们主动去掉and

 

标签:xml,mapper,like,brand,查询,status,SQL,name
From: https://www.cnblogs.com/hmy22466/p/16826500.html

相关文章

  • SQL模糊查询语法思考
    模糊查询   sql语句:SELECT字段FROM表WHERE某字段Like条件% :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分......
  • MyBatis+Mapper代理 学习
    MyBatis一、什么是MyBatisMyBatis是一款优秀的持久层框架,用于简化JDBC开发的。持久层:负责将数据保存到数据库的那一层代码JavaEE三层架......
  • Unity 脚本手册查询
    现实中某个词语不会的时候,一般别人的建议是查下字典,Unity中的API同样是这个道理。Unity中的API千千万,但一个人的记忆力是有限的,这个时候学会查询UnityAPI比死记硬背API要好......
  • MySQL 通用查询日志与慢查询日志
    MySQL中的日志包括:错误日志、二进制日志、通用查询日志、慢查询日志等等。这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志。1)通用查询日志:记录建立的客户端连接......
  • 多表查询-子查询的情况
    子查询不同情况1.子查询的结果是单行单列的:子查询可以作为条件,使用运算符去判断。运算符∶>>=<<==--查询员工工资小于平均工资的人SELECT*FROMempWHEREe......
  • django跨表查询
    https://blog.csdn.net/moshanghuali/article/details/103849558一.基于对象的跨表查询方式,常用的是符号.基于对象的跨表查询也分正向查询和反向查询。由主表查从表就......
  • 多表查询-外链接、子查询概述
    多表查询-外链接1、左外链接:语法:select字段列表from表1left[outer]join表2on条件;查询的是左表所有数据以及其交集部分。例子:--查询所有员工信息......
  • Javaweb知识复习--MyBatis+Mapper代理开发
    一种持久层框架,主要用于简化JDBCMyBatis应用步骤1、在数据库里面创建一个表2、创建模块,导入坐标就是新建一个Maven项目,在pom.xml里面导入mybatis相应导包依赖代码:3、......
  • Field *****Service in com.ruoyi.web.slweb.controller.SysApplicationMapper requir
      这个问题直接去service看一下@Service这个注解有没有漏写,我的原因是在git上面拉下来的代码impl里面的的serviceimpl没有上传......
  • 多表查询-概述、内链接
    多表查询概述多表查询分类:1、内链接查询2、外链接查询 3、子查询课外知识点:笛卡尔积:有两个集合A,B.取这两个集合的所有组成情况要完成多表查询,需要消除无用的数据......