Mybatis框架 mapper.xml文件中parameterType传递参数常用的几种方式.pdf
在Mybatis框架中,mapper.xml文件是定义SQL语句、映射规则以及参数传递方式的重要组成部分。正确地使用parameterType传递参数对于开发高质量的应用程序至关重要。以下是几种常用的parameterType参数传递方式以及#和$在Mybatis中传参的区别。 1. 使用依次顺序传参: 在这种方式中,参数按照顺序传递,SQL语句中使用#{参数索引}来引用参数。例如,有一个查询用户的方法,用户名和密码通过顺序传入: ```xml <select id="queryUser" resultMap="BaseResultMap"> select * from user where user_name = #{0} and pass_word = #{1} </select> ``` 在调用queryUser时,方法参数将按顺序被引用。 2. 使用@Param注解传参: 使用@Param注解可以为参数命名,这样在SQL语句中就可以使用命名参数代替索引: ```java public User queryUser(@Param("userName") String userName, @Param("passWord") String passWord); ``` 对应的XML配置如下: ```xml <select id="queryUser" resultMap="BaseResultMap"> select * from user where user_name = #{userName} and pass_word = #{passWord} </select> ``` 3. 使用HashMap传参: 可以通过HashMap将多个参数作为键值对传递: ```java public User queryUser(Map<String, Object> map); ``` 在XML中,可以使用键名来引用HashMap中的值: ```xml <select id="queryUser" parameterType="java.util.Map" resultMap="BaseResultMap"> select * from user where user_name = #{userName} and pass_word = #{passWord} </select> ``` 4. 使用JavaBean传参: 当参数较多时,通常会封装成一个JavaBean对象传递: ```java public User queryUser(User user); ``` 在XML中,直接使用JavaBean属性名引用属性值: ```xml <select id="queryUser" parameterType="com.example.User" resultMap="BaseResultMap"> select * from user where user_name = #{userName} and pass_word = #{passWord} </select> ``` 5. 使用List传参: 当需要根据一组ID查询多条记录时,可以将ID列表作为List传入: ```java public List<UserInfo> selectList(List<String> userIds); ``` 在XML中,可以使用foreach循环来遍历List中的每个元素: ```xml <select id="selectList" resultMap="BaseResultMap"> select * from user_info where status = 1 and user_id in <foreach collection="list" item="item" open="(" separator="," close=")"> #{item} </foreach> </select> ``` 6. 使用数组传参: 类似于List传参,但是使用数组: ```java public List<UserInfo> selectList(String[] userIds); ``` 在XML中使用foreach处理数组的方式与处理List相同: ```xml <select id="selectList" resultMap="BaseResultMap"> select * from user_info where status = 1 and user_id in <foreach collection="array" item="item" open="(" separator="," close=")"> #{item} </foreach> </select> ``` 7. Mybatis中#和$的区别: Mybatis中的#{}和${}都是用来接收参数的,但它们在处理参数时有所不同: - #{}:这种方式会将参数值当作字符串处理,Mybatis会对其进行预编译,将参数值放入预编译语句中,并且参数值两边自动加上单引号,这样可以有效防止SQL注入。 - ${}:这种方式是直接将参数值拼接到SQL语句中,不会进行预编译处理,参数值也不会加上单引号。这种方式虽然有一定的性能优势,但安全性较差,容易受到SQL注入攻击,一般建议仅用于传递数据库对象名称,如表名、列名等。 在Mybatis排序时,使用#{param}的方式进行动态排序,而不是${param},因为在排序字段上使用$容易导致SQL注入。 在实际开发中,为了保证SQL的安全性,推荐使用#{}进行参数绑定。而在某些需要直接传递数据库对象名称的场景下,可以考虑使用${},但在使用时务必注意安全性问题。
































- 粉丝: 11
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 电子商务网站的分析与实现.doc
- 提高计算机信息管理能力的策略分析.docx
- 嵌入式系统开发平台化浅析.docx
- 混合学习法在高职高专计算机教学中的应用研究.docx
- 《计算机的硬件组成》学习工具制作综述.docx
- 《计算机多媒体技术》专业教学计划.doc
- (源码)基于C++编程语言的Orion II CanSat项目.zip
- 8PSK通信系统的蒙特卡罗仿真研究--最终.doc
- 基于TC35模块的GSM远程智能家居控制系统的方案设计书大学本科方案设计书好.doc
- 大数据时代背景下财务会计工作面临的机遇、挑战和对策.docx
- 月软件设计师模拟试题上午试卷.doc
- 拓贸隆综合布线大楼方案.doc
- 基于B-S结构变电运维大数据系统及移动终端开发应用.docx
- 国外卫星在轨操作系统发展分析.docx
- S7-300400PLC的编程技术-.ppt
- 基于组件的电子商务招投标平台的设计与实现.docx


