mybatis中#{}和${}的区别
来源:互联网 发布:规则引擎 数据库设计 编辑:程序博客网 时间:2024/06/05 08:57
1.mybatis中的#{}
一般地,#{}在mybatis中表示申明一个变量;使用#{}传参时,sql语句解析是会加上"",比如 select * from user where name = #{name} ,传入的name为zhangxing,那么最后
打印出来的sql为:
select * from user where name = ‘zhangxing’,就是会当成字符串来解析,这样相比于${}的好处是比较明显的:#{}传参能防止sql注入,如果传入的参数为 单引号',那么使用
${},这种方式是会报错的;
2..mybatis中的${}
一般地,在排序(oreder by),分组(group by)或者插入固定表及字段时,可以考虑使用${}
select * from user order by ${param}
${param} :当入参是age时, =>select * from user order by age,这时非得用${},如果用#{},
select * from user order by #{param}
#{param}:当入参是age时,=>select * from user order by 'age',显然会报错,但是笔者还是建议能用#{}解决需求的尽量用#{},它能有效的防止sql注入
3.实际运用
①mapper中的sql
<select id="selectUserInfoByOrder" resultType="com.cckj.bean.UserInfo"> select * from userinfo ORDER by ${param}</select>
②dao层接口申明
List<UserInfo> selectUserInfoByOrder(@Param("param") String param);
③controller层调用
@RequestMapping(value = "/getUserInfoByOrder", produces = "application/json;charset=utf-8")public Map<String,Object> getUserInfoByOrder(HttpServletResponse response,String param){ response.setHeader("Access-Control-Allow-Origin","*"); List<UserInfo> userList = userInfoService.selectUserInfoByOrder(param); Map<String,Object> map = new HashMap<>(); map.put("userlist",userList); map.put("status",1); return map;}
针对不同的业务需求,则调用不同的service层的排序入参;
【id】降序效果图:
【age】降序效果图:
补充:#{}与${}结合使用
①mapper中的sql
<select id="selectUserInfoByMixed" parameterType="map" resultType="com.cckj.bean.UserInfo"> select * from userinfo where ${param} = #{value}</select>②dao层接口定义
List<UserInfo> selectUserInfoByMixed(HashMap map);③controller层调用
@RequestMapping(value = "/getUserInfoByMixed", produces = "application/json;charset=utf-8")public Map<String,Object> getUserInfoByMixed(HttpServletResponse response,String param,String value){ response.setHeader("Access-Control-Allow-Origin","*"); HashMap paramMap = new HashMap(); paramMap.put("param",param); paramMap.put("value",value); List<UserInfo> userList = userInfoService.selectUserInfoByMixed(paramMap); Map<String,Object> map = new HashMap<>(); map.put("userlist",userList); map.put("status",1); return map;}测试效果图:
好了,我是张星,欢迎加入博主技术交流群,群号:313145288
阅读全文
2 0
- mybatis中#和$的区别
- mybatis中#和¥的区别
- Mybatis中#和$的区别
- Mybatis中#和$的区别
- mybatis中$和#的区别
- MyBatis中$和#的区别
- MyBatis中$和#的区别
- MyBatis中#和$的区别
- mybatis中#{}和${}的区别
- Mybatis中#和$的区别
- MyBatis中#{}和${}的区别
- Mybatis中#和$的区别
- MyBatis中#和$的区别
- mybatis中#和$的区别
- MyBatis中#{}和${}的区别
- mybatis中${}和#{}的区别?
- mybatis中#和$的区别
- mybatis中"#"和"$"的区别
- sql中的group_concat 和 oracle中的wm_concat
- 异常使用原则
- 对synchronized(this)的一些理解
- Idea 找不到tomcat服务器选项
- PHP远程上传文件
- mybatis中#{}和${}的区别
- android parcelable 详细介绍
- 获取股票数据的2个简单方法
- 解决Android studio编译的APK无法安装的问题
- erlang sftp
- 点击一个按钮显示div,点击div之外的地方div隐藏,点击div之内的地方div不隐藏
- SpringCloud系列(1)---初试微服务
- 什么是动态页面与静态页面
- SSH与SSM比较与选型