Mybatis学习(十一)mybatis动态sql传入pojo的包装类型

学习Mybatis框架的话,如果没有学习他的动态sql的话等于白学了,浪费你的时间了,所以一定要学习Mybatis的动态sql,体验它的灵活性。

需求分析:

学习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类来达到我们多条件查询的目的。






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值