Mybatis实战教程之三多条件与单条件查询之分

  前面我们讲到了用接口的方式来查询数据,但是测试用的只说到了运用单条件来查询数据,并没有说到怎么用两个或连两个以上的条件查询数据,接下来大家就跟着我一起来学习下。

  其实很简单,传递多个参数有两个方法:一种是使用Map,另一种是使用JavaBean。现在大家应该知道了吧,不知道的人可以看我后面的实例。


使用传递Map参数的步骤:
第一步,改变UserMapper.java接口类的代码,内容为: 

package dao;

import java.util.Map;
import entity.User;
/**
 * 对数据库进行操作的接口类,做增,删,改,查工作
 * @author gaoli
 * @date 2015-01-09
 */
public interface UserMapper {
	public User getById(Map<String,Object>map);
}
第二步,修改UserMapper.xml中parameterType中的值为map。
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
	"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.UserMapper">
    <select id="getById" parameterType="map" resultType="User" >
         select * from user where id = #{id} and username = #{username}
    </select>
</mapper>
第三步,修改MyBatisUtil.java类中的内容:
package util;

import java.io.IOException;
import java.io.Reader;
import java.util.HashMap;
import java.util.Map;

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 dao.UserMapper;

import entity.User;
/**
 * 数据库配置类
 * @author gaoli
 * @date 2015-01-09
 */
public class MyBatisUtil {
	private static SqlSessionFactory ssf;
	static {
		try {
			//加载配置文件configuration.xml
			Reader reader = Resources.getResourceAsReader("configuration.xml");
			//实例化SqlSessionFactory对象
			ssf = new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			System.out.println("找不到该文件,文件加载失败!");
		}
	}
	public static void main(String[] args) {
		SqlSession session= ssf.openSession();
		try{
			Map<String,Object>map = new HashMap<String, Object>();
			map.put("id",1);
			map.put("username","Lina");
			//得到了一个UserMapper的代理
			UserMapper userMapper = session.getMapper(UserMapper.class);
			User user = userMapper.getById(map);
			System.out.println("user:"+user.getUsername());
			System.out.println("pass:"+user.getPassword());
		}finally{
			//session开启后,执行完数据库操作,必须关闭。
			session.close();
		}
	}
}
结果为:
user:Lina
pass:123123

另一种使用传递JavaBeans参数的步骤:
第一步,改变UserMapper.java接口类的代码,内容为:

package dao;

import entity.User;
/**
 * 对数据库进行操作的接口类,做增,删,改,查工作
 * @author gaoli
 * @date 2015-01-09
 */
public interface UserMapper {
	public User getById(User user);
}
第二部,修改Usermapper.xml中parameterType中的值为User(JavaBeans名称)。

<?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="dao.UserMapper">
    <select id="getById" parameterType="User" resultType="User" >
         select * from user where id = #{id} and username = #{username}
    </select>
</mapper>
第三步,修改MyBatisUtil.java类中的内容:

package util;

import java.io.IOException;
import java.io.Reader;
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 dao.UserMapper;

import entity.User;
/**
 * 数据库配置类
 * @author gaoli
 * @date 2015-01-09
 */
public class MyBatisUtil {
	private static SqlSessionFactory ssf;
	static {
		try {
			//加载配置文件configuration.xml
			Reader reader = Resources.getResourceAsReader("configuration.xml");
			//实例化SqlSessionFactory对象
			ssf = new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			System.out.println("找不到该文件,文件加载失败!");
		}
	}
	public static void main(String[] args) {
		SqlSession session= ssf.openSession();
		try{
			User user = new User();
                        user.setId(1);
                        user.setUsername("Lina"); 
                        //得到了一个UserMapper的代理
			UserMapper userMapper = session.getMapper(UserMapper.class);
			user = userMapper.getById(user);
			System.out.println("user:"+user.getUsername());
			System.out.println("pass:"+user.getPassword());
		}finally{
			//session开启后,执行完数据库操作,必须关闭。
			session.close();
		}
	}
}
结果为:
user:Lina
pass:123123



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值