MyBatis参数处理.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
使用Map 映射文件 <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.cd.StudentMapper"> <select id="selectStudentByNameAndAge" resultType="Student" parameterType="map"> select * from stu_tbl where name = #{name} and age = #{age} </select> </mapper> 【知识点详解】 在MyBatis框架中,参数处理是一个关键环节,它决定了SQL查询语句如何根据传入的参数进行动态构建。本示例中,我们看到了两种不同的参数处理方式:使用Map和JavaBean。 1. **Map参数处理**: - 在映射文件中,`<select>`标签定义了一个查询方法`selectStudentByNameAndAge`,其`parameterType`属性设置为`map`,表示该方法接受一个Map类型的参数。Map的键值对将对应于SQL语句中的占位符#{name}和#{age},即`name`键对应SQL中的`name`字段,`age`键对应`age`字段。 - 接口中定义了`StudentMapper`,声明了`selectStudentByNameAndAge`方法,参数类型为`Map<String, String>`,这与映射文件中的配置相匹配。 - 在测试类`Test`中,创建了一个HashMap并填充值,然后通过SqlSession获取Mapper实例,并调用`selectStudentByNameAndAge`方法,将Map作为参数传递,执行查询。 2. **JavaBean参数处理**: - 映射文件中,另一个查询方法`selectStudentByNameAndAge`的`parameterType`属性设置为`Stu`,这通常指的是一个Java类(如`Stu`),意味着参数应该是这个类的一个实例。 - 在实际应用中,`Stu`类应包含与SQL查询中对应的属性,如`name`和`age`,以便MyBatis能够自动将JavaBean的属性值绑定到SQL的占位符上。 - 调用这个方法时,需要创建一个`Stu`对象并设置其属性,然后将其作为参数传递给查询方法。 3. **MyBatis的#{}语法**: - `#{}`是MyBatis的预编译占位符,它会将参数值进行预处理,防止SQL注入。例如,这里的`#{name}`和`#{age}`会被替换为参数的实际值,且这些值会在数据库执行SQL前进行转义,确保安全性。 4. **SqlSessionFactory和SqlSession**: - `SqlSessionFactory`是MyBatis的核心组件,用于创建`SqlSession`实例,它是操作数据库的主要接口。 - 在测试类中,通过`Resources.getResourceAsStream()`加载MyBatis的配置文件,然后使用`SqlSessionFactoryBuilder`构建`SqlSessionFactory`。 - `SqlSession`提供执行SQL的方法,如`getMapper()`,它返回一个特定Mapper接口的实例,用于调用定义在映射文件中的方法。 5. **Mapper接口和映射文件的关联**: - MyBatis通过Mapper接口和XML映射文件的命名空间(namespace)来关联。在本例中,`StudentMapper`接口和映射文件的`namespace`都是`com.cd.StudentMapper`,因此MyBatis可以正确地将接口方法与XML配置对应起来。 总结,MyBatis参数处理主要涉及Map或JavaBean的使用,以及如何在映射文件中指定参数类型。通过合理的参数处理,MyBatis可以灵活地构建和执行SQL查询,同时保证数据的安全性。在实际开发中,开发者可以根据需求选择适合的参数类型,以实现高效的数据操作。
- 粉丝: 254
- 资源: 1940
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助