Mybatis随手笔记1-#与$区别

记录下午遇到的一个关于#和$符号的小问题

下午代码过程中,习惯性复制之前的SQL,改完运行报错...具体内容不记得了,也没细看,是#{}占位符和${}拼接符的问题.

大致总结下是这样,

#{} 占位符,相当于sql里的 ? 问号 , 一个占位符,是mybatis进行过预处理的.  赋值是什么,sql里就是什么内容 .

      举个栗子: id = "1" , #{id} , select * from table where id = #{id} , 就相当于 select * from table where id = "1" 

${} 拼接符 , 一般用于拼接参数 , 模糊查询等. mybatis 没有进行过预处理 . 执行时会处理 ,

    举个栗子 : id = "1" , ${id}    select * from table where id = ${id} , 就相当于 select * from table where id = 1

    执行时,会把引号""中的内容拿出来


上代码  #{}

    传参map

Map<String,Object> paramMap = new HashMap<>();
paramMap.put("begin", (pageNo - 1) * pageSize);
paramMap.put("pageSize", pageSize);
paramMap.put("list", tableIdPermissionList);
paramMap.put("databaseName", databaseName);
paramMap.put("tableName", tableName);
paramMap.put("tableDesc", tableDesc);
List<TableInfo> tableInfoListIn = tableInfoService.findTableInfoListIn(paramMap);



接口
List<TableInfo> findTableInfoListIn(Map<String, Object> paramMap);

  

   Mapper

<select id="findTableInfoListIn" parameterType="java.util.Map" resultMap="TableBaseResultMap" >

 SELECT
  *
 FROM
  table_info
 WHERE
   table_id IN
 <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
  #{item}
 </foreach>
 <if test="databaseName != null and databaseName != ''">and database_name like '%${databaseName}%'</if>
 <if test="tableName != null and tableName != ''">and table_name like '%${tableName}%'</if>
 <if test="tableDesc != null and tableDesc != ''">and table_desc like '%${tableDesc}%'</if>
 limit #{begin},#{pageSize}
</select>



之前的代码  limit 用${} , int需要变成string , 才能取到取到
   
  参数map
Map<String,String> paramMap = new HashMap<>();
paramMap.put("begin", (pageNo - 1) * pageSize + "");
paramMap.put("pageSize", pageSize + "");
paramMap.put("databaseName", databaseName);
paramMap.put("tableName", tableName);
paramMap.put("tableDesc", tableDesc);
List<TableInfo> list=tableInfoService.findTableInfoAll(paramMap);
  接口
List<TableInfo> findTableInfoAll(Map<String, String> paramMap);
mapper

<select id="findTableInfoAll" parameterType="java.util.Map"  resultMap="TableBaseResultMap" >
 SELECT
  *
 FROM
  table_info
 WHERE
  1 = 1
 AND
   is_del = '0'
 <if test="databaseName != null and databaseName != ''">and database_name like '%${databaseName}%'</if>
       <if test="tableName != null and tableName != ''">and table_name like '%${tableName}%'</if>
       <if test="tableDesc != null and tableDesc != ''">and table_desc like '%${tableDesc}%'</if>
 LIMIT ${begin},${pageSize}
</select>



新人入门,之前没有注意过,做个记录.





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值