1.1动态sql语句
1.动态sq语句概述
Mybatis的映射文件中,前面我们的SQL都是比较简单的,有些时侯业务逻辑复杂时,我们的SQL是动态变化的,
此时在前面的学习中我们的SQL就不能满足要求了。
2.<if>
多条件选择
<?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.itheima.mapper.UserMapper">
<select id="findByCondition" parameterType="user" resultType="user">
select * from user
<where>
<if test="id!=0">
and id=#{id}
</if>
<if test="username!=null">
and username=#{username}
</if>
<if test="password!=null">
and password=#{password}
</if>
</where>
</select>
</mapper>
2.<foreavch>
循环执行sq的拼接操作,如:SELECT*FROM USER WHERE id IN(1,2,5)
<select id="findByIds" parameterType="list" resultType="user">
<include refid="selectUser"></include>
<where>
<foreach collection="list" open="id in(" close=")" item="id" separator=",">
#{id}
</foreach>
</where>
</select>
3.sql片段抽取
sql语句抽取片段 再引入
<?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.itheima.mapper.UserMapper">
<!--sql语句抽取-->
<sql id="selectUser">select * from user</sql>
<select id="findByIds" parameterType="list" resultType="user">
<include refid="selectUser"></include>
<where>
<foreach collection="list" open="id in(" close=")" item="id" separator=",">
#{id}
</foreach>
</where>
</select>
</mapper>
4.知识小结
MyBatis映射文件配置:
<select>:查询
<insert插入
<update>:修改
<delete>:除
<where>:where条件
<if>:f判断
<foreach>:循环
<sql>:sql片段抽取