Mybatis基础操作

1、使用注解定义增删改查,分别用什么注解实现?
@Insert
@Delete
@update
@Select
2、被@Select,@Update,@Delete,@Insert 注解的方法,要放在哪里?

放在mapper接口定义的方法上 用来编写sql语句

3、在新增数据时,如果想要让id回存到对象中怎么办?

@Options(keyProperty = "id", useGeneratedKeys = true)

4、如果表中的字段名称和POJO中属性名称不一样,怎么去实现数据的映射?

5、#{} 和 ${} 的区别是什么?

        #{}和${}的区别在于它们在动态SQL中的处理方式不同。

        #{}是预编译处理,它会将参数替换成问号,并使用PreparedStatement的set方法来赋值。这样可以有效防止SQL注入,因为#{}会将参数视为整体,并给参数加上单引号。

        ${}是字符串替换,它会直接将参数替换成对应的值,不会进行预编译处理。这样可能会存在SQL注入的风险,因为${}不会对参数进行任何处理。

        所以在使用动态SQL时,如果需要保证安全性,推荐使用#{}来处理参数。例如,在MyBatis中可以使用#{}来实现模糊查询,如在select语句中使用concat函数和like关键字来进行模糊查询。

6、接口中的方法怎么设定参数名,好让SQL语句中能够识别

        如果SQL语句中有一个参数名为"ID",那么在接口中设定的参数名也应该是"ID"。这样,MySQL在词法分析阶段就能正确地将该参数识别为对应的列名。

        参数名的设定应该遵循SQL语法的规范,避免使用特殊字符或关键字作为参数名,以免引起语法错误。

        为了让SQL语句中能够正确识别参数,接口中的方法应该设定与SQL语句中对应部分相同的参数名。

7、动态SQL中有哪些标签,各有什么作用
标签描述
<if>用于判断条件是否成立,使用test属性进行条件判断,如果为true,则拼接sql
<where>在子元素有内容的情况下插入where子句,并且自动去除子句开头的and或or
<set>删除额外的逗号(用在update语句中)
<foreach>遍历(用在批量删除等业务)
<sql>定义可以重复使用的SQL片段,减少代码的冗余
<include>通过属性refid,指定包含的sql片段
<foreach>属性
属性描述
collection集合名称
item集合遍历出来的元素/项
separator每一次遍历使用的分隔符
open遍历开始前拼接的片段
close遍历结束后拼接的片段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值