Mybatis(动态sql标签)
Posted zfyyfw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis(动态sql标签)相关的知识,希望对你有一定的参考价值。
动态 SQL 元素和 JSTL 或基于类似 XML 的文本处理器相似。在 MyBatis 之前的版本中,有很多元素需要花时间了解。
MyBatis 3 大大精简了元素种类,现在只需学习原来一半的元素便可。MyBatis 采用功能强大的基于 OGNL 的表达式来淘汰其它大部分元素。
SQL标签(if,choose,where,trim,foreach)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.zhiyou100.hhz.dao.UsersDao"> <!-- 动态sql片段 --> <sql id="userscolumn">id,name,sex,age,created</sql> <select id="selectByWhere" parameterType="int" resultType="com.zhiyou100.hhz.bean.Users"> select <include refid="userscolumn"/> from users <!-- where 可以在第一个判断成功的语句前加where 且去除and --> <where> <if test="name!=null and name!=‘‘"> and name=#name </if> <if test="sex!=null and sex!=‘‘"> and sex=#sex </if> <if test="age>0"> and age=#age </if> </where> </select> <update id="updateByWhere"> update users <!-- set可以在第一个判断成功的语句前加set 且去除, --> <set> <if test="name!=null and name!=‘‘"> name=#name, </if> <if test="sex!=null and sex!=‘‘"> sex=#sex, </if> <if test="age>0"> age=#age, </if> <if test="created!=null and created!=‘‘"> created=#created </if> </set> where id=#id </update> <select id="selectByWhere2" resultType="com.zhiyou100.hhz.bean.Users"> select <include refid="userscolumn"/> from users <!-- trim可以代替where和set 做到类似的效果 prefix:添加前缀 prefixOverrides:去除前缀 suffix:添加后缀 suffixOverrides:去除后缀 --> <trim prefix="where" prefixOverrides="and"> <if test="name!=null and name!=‘‘"> and name=#name </if> <if test="sex!=null and sex!=‘‘"> and sex=#sex </if> <if test="age>0"> and age=#age </if> </trim> </select> <!-- 循环遍历数组 collection:集合 open:前缀 close:后缀 separator:每次遍历的间隔 item:集合命名 --> <delete id="deleteById"> delete from users where id in <foreach collection="ids" open="(" close=")" separator="," item="id"> #id </foreach> </delete> <select id="selectById" resultType="com.zhiyou100.hhz.bean.Users"> select <include refid="userscolumn"/>from users <where> <!-- choose+when+otherwise类似java中的switch+case+default --> <choose> <when test="name!=null and name!=‘‘"> name=#name </when> <when test="sex!=null and sex!=‘‘"> sex=#sex </when> <when test="age>0"> age=#age </when> <otherwise> created=#created </otherwise> </choose> </where> </select> </mapper>
以上是关于Mybatis(动态sql标签)的主要内容,如果未能解决你的问题,请参考以下文章
[刘阳Java]_MyBatis_动态SQL标签用法_第7讲