使用Mybatis你需要了解的几件事

本文介绍了MyBatis框架中的高级用法,包括#{}

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

1.#{}表示一个占位符,接收输入参数,类型可以是简单类型、hashmap、pojo。${}表示一个拼接符号,类型也可以是简单类型、hashmap、pojo,但是有一点区别,如果是简单类型,#{}中可以写入任何名称,而${}中只能写value。${}不能防止sql注入,因此不建议使用。

2.SqlSession是线程不安全的,因此应该作为方法的局部变量使用,而不要定义成类的成员变量。

3.如果使用mapper自动代理生成的方式,要注意在map.xml中namespace等于mapper接口的全路径名。

4.mapper自动代理对象是根据mapper接口方法中定义的返回值类型,确定是调用selectOne返回单个对象,还是selectList返回集合对象。

5.如果使用resultMap作为statement的输出类型,需要在配置文件中先定义resultMap,如果定义的resultMap在其它mapper配置文件中,引用时需要在前面加上namespace。

6.定义的sql片段中,最好不要加入<where>标签,以便于sql片段的重用。在引用sql片段时,如果定义的sql片段在其它mapper配置文件中,同样要在前面加上namespace。

7.如果使用mapper代理的方式。可以通过mapper接口方式<mapper class="接口类名">或者包扫描的方式<package name="包名">加载映射文件,需要遵守以下规范:mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中。

8.如果使用注解的方式,需要通过通过mapper接口<mapper class="*.*">的方式加载配置。

9.查询出来的结果只有一行且一列,可以使用简单类型进行输出映射。

10.使用@Mapper后,不需要在spring配置中设置扫描地址,通过mapper.xml里面的namespace属性对应相关的mapper类,spring将动态的生成Bean后注入到ServiceImpl中。否则需要使用@MapperScan指定扫描路径。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值