前面我们讲到了用接口的方式来查询数据,但是测试用的只说到了运用单条件来查询数据,并没有说到怎么用两个或连两个以上的条件查询数据,接下来大家就跟着我一起来学习下。
其实很简单,传递多个参数有两个方法:一种是使用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