Mybatis学习(十一)mybatis动态sql传入pojo的包装类型
2015-06-11 10:17
555 查看
学习Mybatis框架的话,如果没有学习他的动态sql的话等于白学了,浪费你的时间了,所以一定要学习Mybatis的动态sql,体验它的灵活性。
需求分析:
学习Mybatis框架sql的动态灵活性。
详细设计:
我们做个简单的t_user表,查询出姓名中含有ss,并且为男性的用户(1)。
t_user表结构
UserCustom.java
UserQueryVO.java
测试类代码:
需求分析:
学习Mybatis框架sql的动态灵活性。
详细设计:
我们做个简单的t_user表,查询出姓名中含有ss,并且为男性的用户(1)。
t_user表结构
DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) DEFAULT NULL, `age` int(11) DEFAULT NULL, `sex` int(1) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of t_user -- ---------------------------- INSERT INTO `t_user` VALUES ('3', 'hello2', '22', '1'); INSERT INTO `t_user` VALUES ('4', 'huawei', '40', '1'); INSERT INTO `t_user` VALUES ('5', 'kkddkdk', '20', '0'); INSERT INTO `t_user` VALUES ('6', 'sdfdsw', '23', '0'); INSERT INTO `t_user` VALUES ('7', 'fdfdss', '45', '0');在这儿我们得简单的设计一个包装的pojo。
UserCustom.java
package cn.bj.mybatis.model; public class UserCustom extends User { //扩展用户的信息 }
UserQueryVO.java
package cn.bj.mybatis.model; public class UserQueryVO { <span style="white-space:pre"> </span>private UserCustom userCustom; <span style="white-space:pre"> </span>public UserCustom getUserCustom() { <span style="white-space:pre"> </span>return userCustom; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public void setUserCustom(UserCustom userCustom) { <span style="white-space:pre"> </span>this.userCustom = userCustom; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span> <span style="white-space:pre"> </span>//....加入订单。。。商品条件 }User.xml
<?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="cn.bj.mybatis.models.UserMapper"> --> <mapper namespace="cn.bj.mybatis.model.IUserOperation"> <select id="findUserList" parameterType="cn.bj.mybatis.model.UserQueryVO" resultType="cn.bj.mybatis.model.UserCustom"> select * from t_user where t_user.sex=#{userCustom.sex} and t_user.username like '%${userCustom.username}%' </select> </mapper>
测试类代码:
package cn.bj.mybatis.test; import java.io.IOException; import java.io.InputStream; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import cn.bj.mybatis.model.IUserOperation; import cn.bj.mybatis.model.UserCustom; import cn.bj.mybatis.model.UserQueryVO; public class MybatisTest { public static void main(String[] args){ SqlSessionFactory sqlSessionFactory = null; SqlSession session = null; String resource = "Configuration.xml"; InputStream inputStream; try { inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); session = sqlSessionFactory.openSession(); IUserOperation userOperation = (IUserOperation)session.getMapper(IUserOperation.class); UserQueryVO userQueryVO = new UserQueryVO(); UserCustom userCustom = new UserCustom(); userCustom.setUsername("ss"); userCustom.setSex(0); userQueryVO.setUserCustom(userCustom); try { List<UserCustom> userCustoms = userOperation.findUserList(userQueryVO); for(UserCustom u : userCustoms){ System.out.println(u.getUsername() + " " + u.getAge()); } } catch (Exception e) { e.printStackTrace(); } } catch (IOException e) { e.printStackTrace(); }finally{ if(session != null){ session.close(); } } } }这是在多个表查询时,条件比较多的情况下我们用一个包装过的pojo类来达到我们多条件查询的目的。
相关文章推荐
- Mysql 多表联合查询效率分析及优化
- 经典SQL语句大全(转载)
- 关于PowerDesigner导出数据库表到word文档
- 定时备份SQL SERVER的数据库并且把备份文件复制到另外一台服务器保存
- MongoDB C# CRUD (3)
- MySQL 性能优化的最佳 20+ 条经验
- mysql explain 的type解释
- 导入excel 数据到mysql出现的时间格式
- XAMPP的MYSQL无法启动
- SQL临时表&表变量
- PL/SQL Developer 9.x 注册码
- 数据库生成Json
- C#连接OleDBConnection数据库的操作
- oracle基础之function使用
- mysql int 10 字段长度
- MongoDB 2.0 常用命令(2)
- MongoDB 2.0 配置及相关操作(1)
- MongoDB Shell 经常使用的操作
- T-SQL_常用内置函数和操作
- mysql重设root 密码