java when otherwise_mybatis动态sql之分支选择(学习choose、when、otherwise标签)

EmployeeMapperDynamicsql.java

packagecom.gong.mybatis.mapper;importjava.util.List;java.util.Map;org.apache.ibatis.annotations.MapKey;com.gong.mybatis.bean.Employee;public interfaceEmployeeMapperDynamicsql {public ListgetEmpByConditionIf(Employee employee);

}

EmployeeMapperDynamicsql.xml

/p>

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

selectid="getEmpByConditionIf"resultType="com.gong.mybatis.bean.Employee">select * from tbl_employeewhere>

choose>

whentest="id!=null"id=#{id}

select>

mapper>

说明:当传入了id,就会根据id来查询,传入了lastName,就根据last_name来查询,传入了email,就根据email查询。否则就执行otherwise标签里面的。

测试:

com.gong.mybatis.test;java.io.IOException;java.io.InputStream;org.apache.ibatis.io.Resources;org.apache.ibatis.session.sqlSession;org.apache.ibatis.session.sqlSessionFactory;org.apache.ibatis.session.sqlSessionFactoryBuilder;org.junit.Test;com.gong.mybatis.bean.Employee;com.gong.mybatis.mapper.EmployeeMapperDynamicsql;classTestMybatis3 {public sqlSessionFactory getsqlSessionFactory() throwsIOException {

String resource= "mybatis-config.xml";

InputStream is=Resources.getResourceAsStream(resource);return newsqlSessionFactoryBuilder().build(is);

}

@Testvoid test() IOException {

sqlSessionFactory sqlSessionFactory=getsqlSessionFactory();

sqlSession openSession=sqlSessionFactory.openSession();try{

EmployeeMapperDynamicsql mapper= openSession.getMapper(EmployeeMapperDynamicsql.);

Employee employee= Employee();//employee.setId(3);employee.setLastName("%小%");employee.setEmail("xiaoming@qq.com");

List es =mapper.getEmpByConditionIf(employee);for(Employee e:es) {

System.err.println(e);

}

openSession.commit();

}finally{

openSession.close();

}

}

}

首先根据id=3进行查询:

DEBUG 01-21 13:45:17,288 ==> Preparing: select * from tbl_employee WHERE id=? (BaseJdbcLogger.java:145)

DEBUG 01-21 13:45:17,339 ==> Parameters: 3(Integer) (BaseJdbcLogger.java:145)

DEBUG 01-21 13:45:17,410== Total:1 (BaseJdbcLogger.java:145)

Employee [id=3,lastName=小红,1)">gender=0,1)">email=xiaohong@qq.com,1)">dept=null]

根据lastName="%小%"进行模糊查询:

DEBUG 01-21 13:46:04,385 ==> Preparing: select * from tbl_employee WHERE last_name like ? (BaseJdbcLogger.java:145)

DEBUG 01-21 13:46:04,417 ==> Parameters: %小%(String) (BaseJdbcLogger.java:145)

DEBUG 01-21 13:46:04,5022 (BaseJdbcLogger.java:145)

Employee [id=null]Employee [id=4,1)">=小明,1)">=xiaoming@qq.com,1)">=null]

根据email=xiximayou@qq.com进行查询:

DEBUG 01-21 13:46:43,284 ==> Preparing: select * from tbl_employee WHERE email=? (BaseJdbcLogger.java:145)

DEBUG 01-21 13:46:43,347 ==> Parameters: xiximayou@qq.com(String) (BaseJdbcLogger.java:145)

Employee [id=1,lastName=xiximayou,gender=1,email=xiximayou@qq.com,dept=null]

DEBUG 01-21 13:46:43,3941 (BaseJdbcLogger.java:145)

根据id=3,lastName=%小%进行查询:

DEBUG 01-21 13:47:30,447 ==> Preparing: select * from tbl_employee WHERE id=? (BaseJdbcLogger.java:145)

DEBUG 01-21 13:47:30,522 ==> Parameters: 3(Integer) (BaseJdbcLogger.java:145)

DEBUG 01-21 13:47:30,553=null]

不输入任何参数,默认查询:

DEBUG 01-21 14:18:25,159 ==> Preparing: select * from tbl_employee (BaseJdbcLogger.java:145)

DEBUG 01-21 14:18:25,243 ==> Parameters: (BaseJdbcLogger.java:145)

DEBUG 01-21 14:18:25,2744 (BaseJdbcLogger.java:145)

Employee [id=1,1)">=xiximayou,1)">=xiximayou@qq.com,1)">=2,1)">=jack,1)">=675544321@qq.com,1)">=null]

此时就会查询出所有的数据。

相关文章

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值