二 mybatis 动态sql

动态sql应用

 一 、什么是动态sql

1、where条件  动态查询

根据姓名或年龄或地址查询

UserMapper.xml
1 <select id="findUser" parameterType="cn.itcast.pojo.User" resultType="cn.itcast.pojo.User">
select * from user <where>
<if test="name != null">
name like '%${name}%'
</if>
<if test="age != null">
and age=#{age}
</if>
<if test="address != null">
and address like '%${address}%'
</if>
</where>
</select>

上面配置可以 把where条件抽取出来,如下面配置:

UserMapper.xml
1 <sql id="query_where">
<where> <if test="name != null">name like '%${name}%'</if>
<if test="age != null">and age=#{age}</if>
<if test="address != null">and address like '%${address}%'</if>
</where>
</sql>
<select id="countUser" parameterType="cn.itcast.pojo.User" resultType="int">
select count(*) from user
<include refid="query_where"/>
</select>

测试

  @Test
public void findUser(){ User u = new User();
//u.setName("zhao");
u.setAge(25);
List<User> list = sqlSession. selectList("cn.itcast.dao.UserMapper.findUser“,u); for(User ur : list){
System.out.println(ur);
}
}

2、update Table set 动态更新

UserMapper.xml
1 <update id="updateUser2" parameterType="cn.itcast.pojo.User">
update user
<set>
<if test="name != null">name=#{name},</if>
<if test="age != null">age=#{age},</if>
<if test="address != null">address=#{address}</if>
</set> where id=#{id}
</update>

 二 动态sql片段

sql判断

 UserMapper.xml
<sql id="query_where">
<where> <if test="name != null">name like '%${name}%'</if>
<if test="age != null">and age=#{age}</if>
<if test="address != null">and address like '%${address}%'</if>
</where>
</sql>

引用 <include refid="query_where"/>

<select id="countUser" parameterType="cn.itcast.pojo.User" resultType="int">
select count(*) from user
<include refid="query_where"/>
</select>

 三 foreach

  向sql传递数组或List,mybatis使用foreach解析

1.1.1     需求

在用户查询列表和查询总数的statement中增加多个id输入查询。

sql语句如下:

两种方法:

SELECT * FROM USER WHERE id=1 OR id=10 OR id=16

SELECT * FROM USER WHERE id IN(1,10,16)

1.1.2     在输入参数类型中添加List<Integer> ids传入多个id

 pubilc class UserQueryVo{
//传入多个id
private List<Integer> ids;

1.1.3     修改mapper.xml

WHERE id=1 OR id=10 OR id=16

在查询条件中,查询条件定义成一个sql片段,需要修改sql片段。

<!-- 定义sql片段
id:sql片段的唯 一标识 经验:是基于单表来定义sql片段,这样话这个sql片段可重用性才高
在sql片段中不要包括 where
-->
<sql id="query_user_where">
<if test="userCustom!=null">
<if test="userCustom.sex!=null and userCustom.sex!=''">
and user.sex = #{userCustom.sex}
</if>
<if test="userCustom.username!=null and userCustom.username!=''">
and user.username LIKE '%${userCustom.username}%'
</if>
<if test="ids!=null">
<!-- 使用 foreach遍历传入ids
collection:指定输入 对象中集合属性
item:每个遍历生成对象中
open:开始遍历时拼接的串
close:结束遍历时拼接的串
separator:遍历的两个对象中需要拼接的串
-->
<!-- 使用实现下边的sql拼接:
AND (id=1 OR id=10 OR id=16)
-->
<foreach collection="ids" item="user_id" open="AND (" close=")" separator="or">
<!-- 每个遍历需要拼接的串 -->
id=#{user_id}
</foreach> <!-- 实现 “ and id IN(1,10,16)”拼接 -->
<!-- <foreach collection="ids" item="user_id" open="and id IN(" close=")" separator=",">
每个遍历需要拼接的串
#{user_id}
</foreach> --> </if>
</if>
</sql>

1.1.4     测试代码

 //用户信息的综合 查询
@Test
public void testFindUserList() throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); //创建UserMapper对象,mybatis自动生成mapper代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //创建包装对象,设置查询条件
UserQueryVo userQueryVo = new UserQueryVo();
UserCustom userCustom = new UserCustom();
//由于这里使用动态sql,如果不设置某个值,条件不会拼接在sql中
// userCustom.setSex("1");
userCustom.setUsername("小明");
//传入多个id
List<Integer> ids = new ArrayList<Integer>();
ids.add(1);
ids.add(10);
ids.add(16);
//将ids通过userQueryVo传入statement中
userQueryVo.setIds(ids);
userQueryVo.setUserCustom(userCustom);
//调用userMapper的方法 List<UserCustom> list = userMapper.findUserList(userQueryVo); System.out.println(list); }

1.1.5     另外一个sql的实现:

aaarticlea/png;base64,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" alt="" />

上一篇:C#文件和文件夹输入输出流代码


下一篇:KeybMap 键盘映射工具更新至 V1.5(修订)