Mybatis中#{}与{}美元有什么区别

  介绍

这篇文章给大家介绍Mybatis中#{}与{}美元有什么区别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强>关于#{}

1, #{}表示一个占位符号相当于<代码> jdbc代码中的> <强大?强符号#{}实现的是向prepareStatement中的预处理语句中设置参数值,sql语句中#{}表示一个占位符即?

2, #{}将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:<代码> select *从用户id=# {user_id}> id=?1”,

3,如果sql语句中只有<代码>一个参数> 随意定义> 个参数,此时参数名称应该是与当前表关联(实体类的属性名)或则[映射集合关键字],<强>不能随便写,必须对应强壮!如下图

<人物>

 Mybatis中#{}与{}美元有什么区别”>,</p> <p> <强>关于${}</强> </p> <p> 1, {user_id} <代码>,如果传入的值是11日,那么解析成sql时的值为</代码> id=11 ' </p> <p> 2, <代码> $ {value} </代码>中值<代码> </代码>值有限制只能写对应的价值值不能随便写,因为${}<代码> </代码>不会自动进行jdbc类型转换</p> <p> 3,简单来说,在<代码> jdbc代码</>不支持使用占位符的地方,都可以使用${}<代码> </代码> </p> <p> <强> Mybatis中#{}与{}的美元区别</强> </p> <p>简单来说区别就是</p> <p> #{}方式能够很大程度防止sql注入(安全),${}方式无法防止sql注入</p> <p>在<代码> jdbc代码</>能使用占位符的地方,最好优先使用<代码> #{}</代码> </p> <p>在<代码> jdbc代码</>不支持使用占位符的地方,就只能使用<代码> ${}> </代码,典型情况就是<强>动态参数</强> </p> <p>比如有两张表,分别是<代码> emp_2017 </代码>和<代码> emp_2018> </代码。如果需要在查询语句中<强>动态指定表名</>强,就只能使用$ {}</p> <pre类= & lt; select>   select  *,才能得到emp_  ${一}   & lt; select>

再比如MyBatis <强>排序时使用<代码>,动态参数时,此时也只能使用$ {}

& lt; select>   select  *,才能得到dept  order  by  ${名称}   & lt;/select>

<强>代码案例

一般#{}与{}美元用的比较多的地方是模糊查询方面,所以下面来一个模糊查询的案例

<强>使用#{}案例

1,映射文件

在用户。xml配置文件中添加如下内容:

& lt; !——,如果返回多个结果,mybatis会自动把返回的结果放在列表容器中,——比;   & lt; !——, resultType的配置和返回一个结果的配置一样,——比;   & lt; select  id=皅ueryUserByUsername1", parameterType=皊tring"   resultType=癱n.itcast.mybatis.pojo.User"比;   SELECT  *,得到“用户”,WHERE  username  LIKE  # {username}   & lt;/select>

2,测试程序

MybatisTest中添加测试方法如下:

@Test   public  void  testQueryUserByUsername1 (), throws  Exception  {//,4只;创建SqlSession对象   SqlSession  SqlSession =, sqlSessionFactory.openSession ();//,5只执行SqlSession对象执行查询,获取结果用户//,查询多条数据使用selectList方法   List

测试效果如下图:

<人物>

 Mybatis中#{}与{}美元有什么区别”>,</p> <p> <强>使用${}案例</强> </p> <p> 1,映射文件:</p> <p>在用户。xml配置文件中添加如下内容:</p> <pre类= & lt; !——,如果传入的参数是简单数据类型,${}里面必须写value ——比;   & lt; select  id=皅ueryUserByUsername2", parameterType=皊tring"   resultType=癱n.itcast.mybatis.pojo.User"比;   SELECT  *,得到“用户”,WHERE  username  LIKE  & # 39; % $ {value} % & # 39;   & lt;/select>

2。测试程序:MybatisTest中添加测试方法如下:

@Test   public  void  testQueryUserByUsername2 (), throws  Exception  {//,4只;创建SqlSession对象   SqlSession  SqlSession =, sqlSessionFactory.openSession ();//,5只执行SqlSession对象执行查询,获取结果用户//,查询多条数据使用selectList方法   List

Mybatis中#{}与{}美元有什么区别