[day10 Mybatis基础操作]


    1、使用注解定义增删改查,分别用什么注解实现?
    2、被@Select,@Update,@Delete,@Insert 注解的方法,要放在哪里?
    3、在新增数据时,如果想要让id回存到对象中怎么办?
数据添加成功后,需要获取插入数据库数据的主键,
@Options(keyProperty = "id", useGeneratedKeys = true)
    4、如果表中的字段名称和POJO中属性名称不一样,怎么去实现数据的映射?
三种方式
1,起别名:在SQL语句中,对不一样的列名起别名,别名和实体类属性名一样。
 手动结果映射:通过 @Results及@Result  进行手动结果映射。
@Results({@Result(column = "dept_id", property = "deptId"),
                 @Result(column = "create_time", property = "createTime")})
开启驼峰命名(推荐):如果字段名与属性名符合驼峰命名规则,
mybatis会自动通过驼峰命名规则映射。如果没有,在配置文件中设置
mybatis.configuration.map-underscore-to-camel-case=true
    
SQL注入是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法。
    5、#{} 和 ${} 的区别是什么?
         #{...}
    执行SQL时,会将#{…}替换为?,生成预编译SQL,会自动设置参数值。
    使用时机:参数传递,都使用#{…}
    好处:性能更高,防止sql注入(转义敏感字体。安全)
         ${...}
    拼接SQL。直接将参数拼接在SQL语句中,存在SQL注入问题。
    使用时机:如果对表名、列表进行动态设置时使用。

    6、接口中的方法怎么设定参数,好让SQL语句中能够识别
    @Param注解来指定SQL语句中的参数名。
    方法的参数类型为POJO类型时,SQL语句中绑定参数时使用 #{POJO的属性名}
    

    7、动态SQL中有哪些标签,各有什么作用
    <if>:用于判断条件是否成立,使用test属性进行条件判断,如果条件为true,则拼接SQL。
    <where> :where元素只会在子元素有内容的情况下才插入where子句。
    而且会自动去除子句的开头的AND或OR。
    <set>:动态地在行首插入SET关键字,并会删掉额外的逗号。(用在update语句中)
    if要结合where或set使用

    <foreach>属性介绍:批量删除,遍历
     collection:集合名称
    item:集合遍历出来的元素/项
    separator:每一次遍历使用的分隔符
    open:遍历开始前拼接的片段
    close:遍历结束后拼接的片段

    <sql>:定义可重用的 SQL 片段。
    <include>:通过属性refid,指定包含的sql片段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值