使用的工具是IDEA,还需要一个数据库
【注:如需要了解包中的具体内容,可参考文件具体内容】
select * from table where <if test="lastName != null"> last_name=#{lastName} </if> <if test="email != null"> and email=#{email} </if>
trim自定义字符串:将条件包在trim中,可以添加前缀或者后缀,也可以去除拼接后的条件的前面或者后面的某个多余的字符;
<trim prefix="加前缀" prefixOverrides="去除某个字符前缀" suffix="加后缀" suffixOverrides="去除某个字符后缀"></trim>
使用类似于java中的Switch-case-default
<select id="getEmpByIfChoose" resultType="mybatis.bean.Employee"> select * from t_emp <where> <choose> <when test="id != null"> id =#{id} </when> <when test="lastName != null"> last_name like #{lastName}</when> <when test="email != null">email =#{email}</when> <otherwise>gender =0 </otherwise> </choose> </where> </select>
注:<when test=" "/>:表示当满足test的条件的时候就会去执行
<otherwise>:表示当前面所有的条件都不满足的时候去执行
foreach遍历,可以通过遍历来控制sql地参数,语句等相关地循环操作;也可以称为批量操作。
<select id="getEmpByListId" resultType="mybatis.bean.Employee"> select * from t_emp where id in(1,2,3) <foreach collection="ids" item="emp_id" separator="," open="(" close=")"> #{emp_id} </foreach> </select>
in后面的是查询的多个条件;
collection:指要遍历的集合
item:遍历集合时的元素存放的变量值
separator:指定遍历值的分隔符
两个内置参数分别是:
_parameter:指的是整个参数,如果需要获取参数使用paramter.属性名;通常放在使用where之前判断参数是否为空;
_databaseld:可以根据当前使用环境获取数据库别名
① _parameter
<insert id="addEmpByIdParam"> insert into t_emp(last_name,gender,email) values(#{_paramter.lastName}) select * from t_emp <if test="_parameter != null"> where id=#{id} </if> </insert>
② _databaseld
<select id="getEmpByDatabaseId" resultType="mybatis.bean.Employee"> <if test="_databaseId==mysql"> select * from t_emp </if> <if test="_databaseId=='oracle'"> select * from t_emp </if> </select>
bind:绑定;可以将传递过来的值,变成应该特定的变量;方便使用
<select id="getEmpByNameBind" resultType="mybatis.bean.Employee"> <bind name="_lastName" value=" '%' + lastName + '%' "/> select * from t_emp where last_name like #{_lastName} </select>
①抽取通用的sql代码块:可以将我们公共的sql语句放在sql标签中,使用时引用即可
1.id:指定该sql标签的唯一标签;可以被别的语句引用
【表示的是抽取公共部分】
<sql id="public_colum"> <if test="_databaseId == mysql"> last_name,gender,email </if> <if test="_databaseId == 'oracle'"> last_name01,gender01,email01 </if> </sql>
2. 使用include可以引用抽取的sql【在需要使用的地方进行操作】
3.include中还可以定义变量
<include refid="public_colum"></include>
以上的内容是自己总结的一些简单的知识点,希望大家多多支持!!