15_动态SQL
2016-08-12 00:24
253 查看
【UserMapper.xml】和之前的作对比
【UserMapper.java】接口
【UserMapperTest.java】测试
<mapper namespace="com.Higgin.Mybatis.mapper.UserMapper"> <!-- 用户信息的综合查询(复杂查询) #{userCustom.sex}:取出pojo包装对象中的"性别"值 #{userCusotm.username}:取出pojo包装类中用户名称 --> <select id="findUserList" parameterType="com.Higgin.Mybatis.po.UserQueryVo" resultType="com.Higgin.Mybatis.po.UserCustom"> SELECT * FROM USER WHERE user.sex =#{userCustom.sex} AND user.username LIKE '%${userCustom.username}%' </select> <!-- 用户信息的综合查询(复杂查询) 使用动态SQL的方式 --> <select id="findUserList2" parameterType="com.Higgin.Mybatis.po.UserQueryVo" resultType="com.Higgin.Mybatis.po.UserCustom"> SELECT * FROM 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> </where> </select> </mapper>
【UserMapper.java】接口
public interface UserMapper { //用户信息综合查询findUserList public List<UserCustom> findUserList(UserQueryVo userQueryVo) throws Exception;//动态SQL:用户信息综合查询findUserList2 public List<UserCustom> findUserList2(UserQueryVo userQueryVo) throws Exception; }
【UserMapperTest.java】测试
/** * 用户信息的综合查询 * @throws Exception */ @Test public void testFindUserList2() throws Exception { SqlSession sqlSession =sqlSessionFactory.openSession(); //创建一个UserMapper对象,Mybatis自动生成mapper代理对象 UserMapper userMapper=sqlSession.getMapper(UserMapper.class); //创建包装对象,设置查询条件 UserQueryVo userQueryVo=new UserQueryVo(); UserCustom userCustom=new UserCustom(); userCustom.setSex("1"); userCustom.setUsername("6"); //这两句分别被注释,将会忽略被注释的条件进行查询 userQueryVo.setUserCustom(userCustom); //调用UserMapper的方法 List<UserCustom> list=userMapper.findUserList2(userCustom); //传入的参数为null时,不会进行查询,且不会报错!!!之前的方式传入参数为null会报错 System.out.println(list.size()); }
相关文章推荐
- 在论坛中出现的比较难的sql问题:15(生成动态删除列语句 分组内多行转为多列)
- .net 动态sql 参数应用 oracle和sql server的比较
- 动态SQL中DESCRIPTOR的应用
- 运用设计模式实现Sql语句动态转换
- SQLSERVER 动态执行SQL sp_executesql与EXEC
- 关于动态SQL的使用
- T-SQL,动态聚合查询
- 动态SQL和PL/SQL的EXECUTE IMMEDIATE选项
- 动态SQL和PL/SQL的EXECUTE IMMEDIATE选项(转载)
- 动态SQL和PL/SQL的EXECUTE IMMEDIATE选项(选择自 NinGoo 的 Blog)
- 动态SQL语句
- 对于“不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成”问题的解决
- 关于动态SQL的使用
- DataGrid连接Access的快速分页法——动态生成SQL语句
- Oracle动态SQL语句的简单执行
- DataGrid连接Access的快速分页法(4)——动态生成SQL语句
- 动态SQL语句
- 关于统计的一个sql问题,使用动态sql语句实现。
- 动态sql语句基本语法
- 动态SQL和PL/SQL的EXECUTE IMMEDIATE选项(转)