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