Mybatis问题

1 #{}与${}的区别

#{}是预编译处理,$ {}是字符串替换。
Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用PreparedStatement 的set 方法来赋值;
#{}语法可以对传入的参数进行自动类型转换,并且会在生成的SQL语句中将参数值转换为对应的数据库类型,但是并不是所有的参数都会被加上单引号,只有字符串类型的参数才会被加上单引号。
Mybatis 在处理 时,就是把 {}时,就是把 时,就是把{}替换成变量的值。
使用#{}可以有效的防止 SQL 注入,提高系统安全性。

2 mybatis association collection 的区别

在 MyBatis 中, 和 都是用来建立实体类之间的关联关系的标签,但它们之间的作用有所不同。

association:建立两个实体类之间的一对一关系,可以通过一个外键来关联两个表。在查询时,MyBatis 会将查询结果映射为一个包含两个实体类对象的 Java 对象。通常情况下,这个外键是存储在关联对象的表中的。
collection:建立两个实体类之间的一对多关系,可以通过一个中间表来关联两个表。在查询时,MyBatis 会将查询结果映射为一个包含一个实体类对象和一个 List 集合的 Java 对象。这个 List 集合包含的是关联对象的所有符合条件的记录。
简单来说,association 用于建立一对一的关系,而 collection 用于建立一对多的关系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值