Mybatis常用标签

if标签

1)添加 SQL 映射语句
在 com.mybatis 包的 UserMapper.xml 文件中添加如下 SQL 映射语句:

<select id="selectUserByIf" resultType="com.po.MyUser" parameterType="com.po.MyUser">
    select * from user where 1=1
    <if test="uname!=null and uname!=''">
        and uname like concat('%',#{uname},'%')
    </if >
    <if test="usex !=null and usex !=''">
        and usex=#{usex}
    </if >
</select>

2)添加数据操作接口方法
在 com.dao 包的 UserDao 接口中添加如下数据操作接口方法:

public List<MyUser> selectUserByIf(MyUser user);

choose标签

在 com.mybatis 包的 UserMapper.xml 文件中添加如下 SQL 映射语句:

<select id="selectUserByChoose" resultType="com.po.MyUser" parameterType= "com.po.MyUser">
    select * from user where 1=1
    <choose>
        <when test="uname!=null and uname!=''">
            and uname like concat('%',#{uname},'%')
        </when>
        <when test="usex!=null and usex!=''">
            and usex=#{usex}
        </when>
        <otherwise>
            and uid > 10
        </otherwise>
    </choose>
</select>

2)添加数据操作接口方法
在 com.dao 包的 UserDao 接口中添加如下数据操作接口方法:

public List<MyUser> selectUserByChoose(MyUser user);

trim标签

元素的主要功能是可以在自己包含的内容前加上某些前缀,也可以在其后加上某些后缀,与之对应的属性是 prefix 和 suffix。

可以把包含内容的首部某些内容覆盖,即忽略,也可以把尾部的某些内容覆盖,对应的属性是 prefixOverrides 和 suffixOverrides。正因为 元素有这样的功能,所以也可以非常简单地利用 来代替 元素的功能。

在 myBatisDemo03 应用中测试 元素,具体过程如下:
1)添加 SQL 映射语句
在 com.mybatis 包的 UserMapper.xml 文件中添加如下 SQL 映射语句:

<select id="selectUserByTrim" resultType="com.po.MyUser"parameterType="com.po.MyUser">
    select * from user
    <trim prefix="where" prefixOverrides = "and | or">
        <if test="uname!=null and uname!=''">
            and uname like concat('%',#{uname},'%')
        </if>
        <if test="usex!=null and usex!=''">
            and usex=#{usex}
        </if>
    </trim>
</select>

2)添加数据操作接口方法
在 com.dao 包的 UserDao 接口中添加如下数据操作接口方法:

public List<MyUser> selectUserByTrim(MyUser user);

where标签

元素的作用是会在写入 元素的地方输出一个 where 语句,另外一个好处是不需要考虑 元素里面的条件输出是什么样子的,MyBatis 将智能处理。如果所有的条件都不满足,那么 MyBatis 就会查出所有的记录,如果输出后是以 and 开头的,MyBatis 会把第一个 and 忽略。

当然如果是以 or 开头的,MyBatis 也会把它忽略;此外,在 元素中不需要考虑空格的问题,MyBatis 将智能加上。

在 myBatisDemo03 应用中测试 元素,具体过程如下:
1)添加 SQL 映射语句
在 com.mybatis 包的 UserMapper.xml 文件中添加如下 SQL 映射语句:

<select id="selectUserByWhere" resultType="com.po.MyUser" parameterType="com.po.MyUser">
    select * from user
    <where>
        <if test="uname != null and uname ! = ''">
            and uname like concat('%',#{uname},'%')
        </if>
        <if test="usex != null and usex != '' ">
            and usex=#{usex}
        </if >
    </where>
</select>

2)添加数据操作接口方法
在 com.dao 包的 UserDao 接口中添加如下数据操作接口方法:

public List<MyUser> selectUserByWhere(MyUser user);

set

在动态 update 语句中可以使用 元素动态更新列。在 myBatisDemo03 应用中测试 元素,具体过程如下:
1)添加 SQL 映射语句
在 com.mybatis 包的 UserMapper.xml 文件中添加如下 SQL 映射语句:

<update id="updateUserBySet" parameterType="com.po.MyUser">     
    update user
    <set>
        <if test="uname!=null">uname=#{uname}</if>
        <if test="usex!=null">usex=#{usex}</if>
    </set>
    where uid=#{uid}
</update>

2)添加数据操作接口方法
在 com.dao 包的 UserDao 接口中添加如下数据操作接口方法:

public int updateUserBySet(MyUser user);

foreach标签

元素的属性主要有 item、index、collection、open、separator、close。

  • item 表示集合中每一个元素进行迭代时的别名。
  • index 指定一个名字,用于表示在迭代过程中每次迭代到的位置。
  • open 表示该语句以什么开始。
  • separator 表示在每次进行迭代之间以什么符号作为分隔符。
  • close 表示以什么结束。

在使用 元素时,最关键、最容易出错的是 collection 属性,该属性是必选的,但在不同情况下该属性的值是不一样的,主要有以下 3 种情况:

  • 如果传入的是单参数且参数类型是一个 List,collection 属性值为 list。
  • 如果传入的是单参数且参数类型是一个 array 数组,collection 的属性值为 array。
  • 如果传入的参数是多个,需要把它们封装成一个 Map,当然单参数也可以封装成 Map。Map 的 key 是参数名,collection 属性值是传入的 List 或 array 对象在自己封装的 Map 中的 key。

在 myBatisDemo03 应用中测试 元素,具体过程如下:
1)添加 SQL 映射语句
在 com.mybatis 包的 UserMapper.xml 文件中添加如下 SQL 映射语句:

<select id="selectUserByForeach" resultType="com.po.MyUser" parameterType=
"List">
    select * from user where uid in
    <foreach item="item" index="index" collection="list"
    open="(" separator="," close=")">
        # {item}
    </foreach>
</select>

2)添加数据操作接口方法
在 com.dao 包的 UserDao 接口中添加如下数据操作接口方法:

public List<MyUser> selectUserByForeach(List<Integer> listId);

bind标签

在进行模糊查询时,如果使用“${}”拼接字符串,则无法防止 SQL 注入问题。如果使用字符串拼接函数或连接符号,但不同数据库的拼接函数或连接符号不同。

例如 MySQL 的 concat 函数、Oracle 的连接符号“||”,这样 SQL 映射文件就需要根据不同的数据库提供不同的实现,显然比较麻烦,且不利于代码的移植。幸运的是,MyBatis 提供了 元素来解决这一问题。

在 myBatisDemo03 应用中测试 元素,具体过程如下:
1)添加 SQL 映射语句
在 com.mybatis 包的 UserMapper.xml 文件中添加如下 SQL 映射语句:

<select id="selectUserByBind" resultType="com.po.MyUser" parameterType= "com.po.MyUser">
    <!-- bind 中的 uname 是 com.po.MyUser 的属性名-->
    <bind name="paran_uname" value="'%' + uname + '%'"/>
        select * from user where uname like #{paran_uname}
</select>

2)添加数据操作接口方法
在 com.dao 包的 UserDao 接口中添加如下数据操作接口方法:

public List<MyUser> selectUserByBind(MyUser user);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值