【Mybatis学习笔记】批量删除、动态设计表名、添加与获取自增主键

批量删除

  • ${ } 实现

    • #{ }不行,因为会自动加上 ’ '(单引号) 而 ${ } 是字符串拼接。

    • // java中:
      List<User> select(){
      		...
       mapper = sqlSessin.getMapper(..); 
         
       mapper.deleteByIds(@Param("ids") "1,2,3,4");
           
      }
      
      
      
      // .xml中
      <delete id="deleteByIds">
       	delete  from user where id in(${ids});
      </delete>
          
      //如果使用#{},则会报错!
       <delete id="deleteByIds">
      	delete from user where id in(#{ids});
      </delete>
          
      //对于#{},真实sql就变成了:
      <delete id="deleteByIds">
      	delete from user where id in( '1,2,3,4' );
      </delete>
      
      

动态设计表名

  • ${ } 实现

    • #{ }不行,因为会自动加上 ’ '(单引号) 而 ${ } 是字符串拼接。

    • // java中:
      List<User> select(){
      		...
       mapper = sqlSessin.getMapper(..); 
         
       List<User> list = mapper.select ("user")
      }
      
      
      // .xml中
      <select id="select" resultType="user">
       	select * from ${user};
      </select>
      
           
      

添加功能获取自增的主键

添加数据时,设置当前标签中的sql使用自增的主键, 并且返回自增主键

使用场景:对插入一个数据后的id自增后获取,可以对其中间表直接设置对应关系。

  • Insert 标签中 userGenerateKeys参数 与 keyProperty参数

    • **userGenerateKeys **为true后,且主键设置为null,自动自增

    • **keyProperty **设置为主键名后,传参的user的主键自动赋上自增的值

    • // java中:
      List<User> select(User user){
      		...
       mapper = sqlSessin.getMapper(..); 
       user.setId(null);//这里设不设值都没影响 因为id压根传不进去,只是方便理解
       user.setUsername("张三");
       user.setPassword("123");
       mapper.insert (user);
       //返回后 user的值为:
          user={
              id = 9,
              //keyProperty设置为主键名后,传参的user的主键自动赋上自增的值
              username = "张三",
              password = "123"
          }
      }
      
      
      // .xml中
      <insert id="insert" userGenerateKeys="true" keyProperty="id">
       	insert from user values(null, #{username}, #{password});
       
      //userGenerateKeys为true后, 主键设置为null,自动自增
      </insert>
      
           
      

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值