mybaits映射文件中使用#与$场景:

<select id="getProviders" resultType="com.lazy.bill.pojo.Provider">
SELECT * FROM provider WHERE 1=1
<if test="providerName != null and providerName != ''">
<!-- 条件中不能使用#{providerName},要使用${providerName} -->
AND providerName like '%${providerName}%'
</if>
</select>

$与#的区别:$是直接将值注入到sql语句中,'%${providerName}%'(传入的参数为lisi),那么这里的语句是:SELECT * FROM provider WHERE 1=1 and providerName like '%lisi%'。#是以字符串的形式注入的,如果这里使用'%#{providerName}%',运行时会出现异常,"'%lisi%'":sql语句:SELECT * FROM provider WHERE 1=1 and providerName like "'%lisi%'",多了一个字符串。这里主要是已经在用了' ',所以里面就应该直接将值注入就好。没有这种情况,其他的都可用#。


接口Mpper与映射文件中的对应:

public interface ProviderMapper{
public List<Provider> getProviders(Provider provider);
}

映射文件中的id是接口的方法名,resultType是接口的返回类型。方法的传入的参数是一个对象,映射文件中的动态获取参数的占位符参数名一定要与对象中的属性一致。传入对象的provider.providerName="lisi";产生的sql语句:SELECT * FROM provider WHERE 1=1 and providerName like '%lisi%'。

mybatis映射文件#与$的使用,及参数传入规则的更多相关文章

  1. Mybatis映射文件中#取值时指定参数相关规则

    Mybatis映射文件中#取值时指定参数相关规则 在#{}中,除了需要的数值外,还可以规定参数的一些其他规则. 例如:javaType,jdbcType,mode(存储过程),numericScale ...

  2. MyBatis映射文件中用#和$传递参数的特点

    在MyBatis映射文件中用#和$传递参数的特点, #是以占位符的形式来传递对应变量的参数值的,框架会对传入的参数做预编译的动作, 用$时会将传入的变量的参数值原样的传递过去,并且用$传递传递参数的时 ...

  3. Mybatis映射文件完整模板参照

    Mybatis映射文件完整模板参照 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE map ...

  4. SSM实战——秒杀系统之DAO层实体定义、接口设计、mybatis映射文件编写、整合Spring与Mybatis

    一:DAO实体编码 1:首先,在src目录下,新建org.myseckill.entity包,用于存放实体类: 2:实体类设计 根据前面创建的数据库表以及映射关系,创建实体类. 表一:秒杀商品表 对应 ...

  5. MyBatis 映射文件详解

    1. MyBatis 映射文件之<select>标签 <select>用来定义查询操作; "id": 唯一标识符,需要和接口中的方法名一致; paramet ...

  6. MyBatis映射文件 相关操作

    一.MyBatis映射文件 1.简介 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行 ...

  7. Mybatis映射文件标签(关于sql)

    Mybatis映射文件 1.接口的全限定名和映射文件的namespace一致 <mapper namespace="com.offcn.dao.UserDao"> 2. ...

  8. MyBatis 映射文件

    Mybatis映射文件简介 1) MyBatis 的真正强大在于它的映射语句.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉 ...

  9. MyBatis基础入门《八》查询参数传入Map

    MyBatis基础入门<八>查询参数传入Map 描述: 在执行select查询数据的时候,方法传入的参数是java.util.Map类型. 接口方法: xml文件 注意: 书写SQL语句的 ...

随机推荐

  1. 我的linux部署nginx步骤记录

    http://www.runoob.com/linux/nginx-install-setup.html 安装prce找不到GCC c++文件 解决方法: yum install gcc-c++^C ...

  2. 为什么以sys无法远程登录数据库

    今天通过pl/sql连接一个数据库,普通用户能连接上,但是sys就连接不上,告诉我用户名密码错误.之前其实遇到过这个问题,然后就开始查找原因.整个过程记录如下,结果是扎心的,过程也不是完全都懂.记下来 ...

  3. 使用Visual Studio 2017 C++17模块(module)特性

    环境: win7_x64旗舰版.VS2017企业版 一.安装VS2017 1.1 安装VS2017时,必须要勾选“使用C++的modules开发”选项 1.2 安装成功后,会在VS安装目录Micros ...

  4. Windows文本文件上传至linux显示乱码解决方法

    iconv -f gbk -t UTF-8 显示异常文本名 -o 另存为文件名 iconv -f gbk -t UTF-8 rkgxdt_new.log -o new

  5. 配置django项目总结

    1.在django项目应用文件夹中的models.py文件中导入(1)from django.db import models(2)建立需要的映射的类名和属性类型也就是数据库中的表名和字段名 2.在s ...

  6. Java泛型相关总结(上)

    最近在看<Java核心技术>泛型相关的部分,总结下. 泛型程序设计是什么? 泛型编程(generic programming)是计算机编程中的一种风格,类型通过参数指定.意味着编写的代码可 ...

  7. Flutter Inspector 功能:Toggle Platform,Show Debug Paint,Show Paint Baselines

    Flutter Inspector 功能 说明 Toggle Platform 切换操作系统(Android.iOS) Show Debug Paint Show Paint Baselines Wi ...

  8. RabbitMq C# .net 教程

    本文转载来自 [http://www.cnblogs.com/yangecnu/p/Introduce-RabbitMQ.html]写的很详细. 文件安装包官方DEMO下载地址是:http://pan ...

  9. 《我的嵌入式开发》---- IIC 通信

    IIC 通用文件,文件是在NRF51xx 芯片基础,keil 平台开发测试通过,后期修改为STM32F2xx系列的配置. 文件百度云盘链接 : https://pan.baidu.com/s/1AFx ...

  10. Wavelet Ridgelet Curvelet Contourlet Ripplet

    Ripplet: A New Transform for Image Processing Jun Xu, Lei Yang and Dapeng Wu Ripplet: A New Transfor ...