新人程序员学习之路-Mybatis批量操作数据库

前面博客已经研究过,批量操作数据库可以很大程度上优化操作速度,昨天做的小需求中就有批量查询的使用,于是在此记录下批量操作数据库的常用代码,方便日后查询使用。这里直接粘贴代码,

批量查询操作

@Select("<script>" +
            "select * from person" +
            " where id in" +
            " <foreach item='item' collection='list' open='(' separator=',' close=')'>" +
            "   #{item}" +
            " </foreach>" +
            "</script>")
    List<Person> selectByIds(@Param("list") List<Integer> Ids);

需要理解的可能就是其中foreach语法了,而且比较关键的应该也只有collection的属性值,具体的语法讲解可以看这里:mybatis之foreach用法

 

批量插入操作

@Insert("<script> insert into `person` " +
            "(`name`,`gender`) " +
            "VALUES " +
            "<foreach item='persons' collection='list' open='(' separator=',' close=')'>" +
            " #{persons.name}," +
            " #{persons.gender}," +
            "</foreach> " +
            "</script>")
    @Lang(Person.class)
    @Options(useGeneratedKeys = true, keyColumn = "id", keyProperty = "id")
    Integer batchInsert(@Param("list") List<Person> list);

其中的@Options(useGeneratedKeys = true, keyColumn = "id", keyProperty = "id") 

useGeneratedKeys=true表示使用数据库自动增长的主键,keyColumn用于指定数据库table中的主键,keyProperty用于指定传入对象的成员变量。

这个注解的意思就是,使用数据库自动增长的主键,并从table中id字段里面把数据放到传入对象的成员变量id里面。
如果我们已经在数据库表中指定了主键,那么keyColumn属性可以缺省。(所以我们的插入语句中不用插入id字段以及属性值)

 

批量更新

@Update({"<script>" +
            "<foreach collection=\"list\" item=\"item\" separator=\";\">" +
            " UPDATE" +
            " person" +
            " SET name = #{item.name} " +
            "  WHERE " +
            "   id = #{item.id} " +
            "</foreach>" +
            "</script>"})
    void batchUpdateId(List<Person> list);

关于数据库的批量操作就是上述内容了,这里只是给出了模板,实际业务需求可能会更复杂,但是根据这个模板套应该问题不大!

没有充分测试上述内容,如果有bug欢迎各位大佬指出!

至于删除操作一般在实际开发中很少出现,需要删除的时候往往也是采用”逻辑删除“的原则,开发人员也很难拿到delete的权限,至于该原则好不好不是今天要讨论的主题。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值