全网超肝的mybatis新配置方案跟 动态sql批量查询

首先我们学习一种新的mybits配置方案

把接口跟xml文件放在一个位置

这样在config文件里面也要更改设置

让我们的mapper接口可以找到对应的xml文件

而xml文件通过namespace找到对应的mapper接口

注意 接口跟 xml文件名字要一致 并且配置pom.xml 文件

让xml在java文件夹下可以编译

如下

    <resources>
            <resource>
                <!-- directory:指定资源文件的位置 -->
                <directory>src/main/java</directory>
                <includes>
                    <!-- “**” 表示任意级目录    “*”表示任意任意文件 -->
                    <!-- mvn resources:resources :对资源做出处理,先于compile阶段  -->
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <!--  filtering:开启过滤,用指定的参数替换directory下的文件中的参数(eg. ${name}) -->
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>

小编也为大家准备好了代码 直接收藏保存即可

配置完之后我们直接使用

#{} ${}的区别

#{} 相当于preparedStatement语句对象 没有sql注入风险

${} 相当于Statement语句对象 有sql注入风险

一般我们使用上面的

多变量问题

对于多变量我们一般把这些变量放到对象里面然后直接把对象作为参数

如果上面的方案不可行的话就穿多参数 此时 xml 文件的parameterType就不用写了

但是我们要养成一个习惯 对参数取名

这样更加安全

对于返回是集合类型的

        传入多个参数查询操作

        结果集类型为查询到的每一项的类型 而不是集合

  重点 

        对于数据库很多字段有下划线 比如user_id  我们在实体类会对应userId

因此我们在查询的时候会使用

        

自定义查询规则

id 是给resultMap取得名字 type是对应的实体类 

<id>标签 是主键 column是对应的数据库列名字 property是对应实体类属性的名字 这俩对应即可

当很多不需要改的时候就用 autoMapping=true

这个时候会把所有的查询出来

如果不用resultMap 用resultType 那么user_id 跟userId对应不上 查出来是null

接下来我们来运行动态sql

这个是动态sql

where标签作用

        删除第一个and

        当where没有内容的话自动删除where

这里使用的是resultMap 因为有一个字段user_id 跟我的是体力userId 要对应

if 标签判断使用 

test 判断的内容

我们再看一个

set 标签

作用 自动删除最后一个逗号

但是当为空时候 会删除set带来问题

解决方案是前端传到后端有必填项等

批量操作 foreach

比如添加数据 添加多条

这里传入的数据类型可以使用list 

添加跟删除批量传入的一般都是集合

collection 是你传入的集合的别名 item是对循环的每一项起个名 separator是分割符

对于删除操作

多了 open  相当于循环前的代码块

        close 循环结束后的代码块

  • 14
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值