MyBatis的几个简单区别

本文详细解释了MyBatis框架中的#{}

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

1、#{ } 和 ${ } 的区别

  • #{ }表示一个占位符号,通过#{ }可以实现 preparedStatement 向占位符中设置值,自动进行java 类型和 jdbc 类型转换,#{ } 可以有效防止sql注入。#{ } 可以接收简单类型值或 pojo 属性值(通过 OGNL 读取对象中的值,属性.属性.属性..方式获取对象属性值)。 如果 parameterType 传输单个简单类型值,#{ } 括号中可以是 value 或其它名称。

  • ${ } 表示拼接 sql 串,通过${ }可以将 parameterType 传入的内容拼接在 sql 中且不进行 jdbc 类型转换, ${ }可以接收简单类型值或 pojo 属性值((通过 OGNL 读取对象中的值,属性.属性.属性..方式获取对象属性值)),如果 parameterType 传输单个简单类型值,${}括号中只能是 value。

2、parameterType 和 resultType 区别

  • parameterType:指定输入参数类型,mybatis 通过 ognl 从输入对象中获取参数值拼接在 sql 中。

  • resultType:指定输出结果类型,mybatis 将 sql 查询结果的一行记录数据映射为 resultType 指定类型的对象。

3、selectOne 和 selectList 区别

  • selectOne 查询一条记录来进行映射,如果使用selectOne查询多条记录则抛出异常:

org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to bereturned by selectOne(), but found: 3 at

  • selectList 可以查询一条或多条记录来进行映射。

4、注意:
  • selectKey将主键返回,需要再返回

  • 添加selectKey实现将主键返回

  • keyProperty:返回的主键存储在pojo中的哪个属性

  • order:selectKey的执行顺序,是相对与insert语句来说,由于mysql的自增原理执行完insert语句之后才将主键生成,所以这里selectKey的执行顺序为after

  • resultType:返回的主键是什么类型

  • LAST_INSERT_ID():是mysql的函数,返回auto_increment自增列新记录id值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值