mybatis中xml格式的mapper文件中接收入参时#和$的区别?

本文详细阐述了SQL参数处理中的两种常见方法:使用#将传入的数据作为字符串处理,以及使用$直接在SQL语句中显示生成数据。重点介绍了使用#方法的防SQL注入功效,并通过实例对比了两者在实际应用中的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。(如下图)


用$将传入的数据直接显示生成在sql中。(如下图)



综上所述,如果用#接收参数,可以做到防sql注入的功效。

MyBatis中配置mapperXML文件的关联,通常需要遵循以下步骤: 1. 创建Mapper口:首先,你需要创建一个普通的Java口,这个口中定义了各种你需要执行的数据库操作方法。例如,如果你要操作用户表,可以定义一个名为UserMapper口。 2. 编写XML映射文件着,你需要编写一个与Mapper口同名的XML文件,通常放在与Mapper口相同的包路径下。在这个XML文件中,你需要配置具体的SQL语句,并通过`<select>`、`<insert>`、`<update>`、`<delete>`等标签来定义各个方法对应的SQL操作。例如,如果UserMapper口中有一个方法是获取用户信息,那么在UserMapper.xml中就会有一个`<select>`标签对应的SQL查询语句。 3. 配置文件关联:为了让MyBatis知道mapperXML文件之间的关系,你需要在MyBatis的全局配置文件(通常是mybatis-config.xml)中,使用`<mappers>`标签来注册mapper口的位置。可以通过`<mapper resource="完整路径/UserMapper.xml"/>`来指定XML文件的位置。 4. 使用SqlSessionFactoryBuilder构建SqlSessionFactory:MyBatis使用SqlSessionFactory来构建SqlSession,而SqlSession负责实际的数据库操作。你需要使用SqlSessionFactoryBuilder来根据MyBatis全局配置文件构建SqlSessionFactory。 5. 通过SqlSession获取Mapper代理:通过SqlSession对象,你可以调用getMapper()方法,并传Mapper口的Class对象,从而获取到这个口的动态代理对象。之后就可以直调用口方法,MyBatis会根据提供的信息完成SQL的执行。 示例代码如下: **UserMapper.java** ```java public interface UserMapper { User selectUserById(int id); int insertUser(User user); // 其他方法... } ``` **UserMapper.xml** ```xml <mapper namespace="com.example.mapper.UserMapper"> <select id="selectUserById" resultType="com.example.model.User"> SELECT * FROM users WHERE id = #{id} </select> <insert id="insertUser"> INSERT INTO users(name, age) VALUES (#{name}, #{age}) </insert> <!-- 其他SQL配置... --> </mapper> ``` **mybatis-config.xml** ```xml <configuration> <!-- 其他配置... --> <mappers> <mapper resource="com/example/mapper/UserMapper.xml"/> <!-- 其他mapper配置... --> </mappers> </configuration> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值