参数传递的几种情况
<mapper namespace="com.zks.dao.EmpMapper">
<select id="queryAll" resultType="com.zks.vo.Emp">
select * from emp
</select>
<!--基于object去传递参数-->
<select id="queryByObject" parameterType="com.zks.vo.Emp" resultType="com.zks.vo.Emp">
select * from emp where ename=#{ename}and deptno=#{deptno}
</select>
<!--基于map去传递参数-->
<select id="queryByMap" parameterType="hashmap" resultType="com.zks.vo.Emp">
select * from emp where hiredate between #{start} and #{end} order by ${ob}
</select>
</mapper>
/**
* 基于object传递参数
* @return
*/
public Emp queryByObject(){
//获取数据库链接
SqlSession sqlSession=MyBatiesUtils.getSqlSession();
Emp parameter=new Emp();
parameter.setEname("SMITH");
parameter.setDeptno(20);
//获取数据
Emp emp= sqlSession.selectOne("com.zks.dao.EmpMapper.queryByObject",parameter);
//关闭链接
sqlSession.close();
return emp;
}
/**
* 基于map传递参数
* @return
*/
public List<Emp> queryByMap() throws ParseException {
//获取数据库链接
SqlSession sqlSession=MyBatiesUtils.getSqlSession();
Map<String, Object> map=new HashMap<>();
map.put("start",new SimpleDateFormat("yyyy-MM-dd").parse("1981-01-01"));
map.put("end",new SimpleDateFormat("yyyy-MM-dd").parse("1981-06-30"));
map.put("ob","sal");
//获取数据
List<Emp>list= sqlSession.selectList("com.zks.dao.EmpMapper.queryByMap",map);
//关闭链接
sqlSession.close();
return list;
}
resultMap的解析之规则查询
子配置文件
<select id="selectDept" resultType="com.zks.vo.Dept">
select * from dept where deptno=10
</select>
<!-- 查询一个list集合-->
<select id="selectList" resultType="com.zks.vo.Dept">
select * from dept
</select>
<!-- 查询一个map集合-->
<select id="selectMap" resultType="com.zks.vo.Dept">
select * from dept
</select>
public class DeptMapper {
/**
* 查询一条数据
*/
public void selectDept(){
//获取数据库链接
SqlSession sqlSession= MyBatiesUtils.getSqlSession();
//获取数据
Dept dept=sqlSession.selectOne("com.zks.dao.DeptMapper.selectDept");
sqlSession.close();
System.out.println(dept);
}
/**
* 返回的是一个list
*/
public void selectList(){
//获取数据库链接
SqlSession sqlSession= MyBatiesUtils.getSqlSession();
//获取数据
List<Dept> list=sqlSession.selectList("com.zks.dao.DeptMapper.selectList");
sqlSession.close();
list.stream().forEach(System.out::println);
}
/**
* 返回一个map
*/
public void selectMap(){
//获取数据库链接
SqlSession sqlSession= MyBatiesUtils.getSqlSession();
//获取数据
Map<Integer,Dept> map=sqlSession.selectMap("com.zks.dao.DeptMapper.selectMap","deptno");
sqlSession.close();
map.entrySet().stream().forEach(System.out::println);
}
}
resultMap之不规则查询
子配置文件
<select id="selectIrregularInt" resultType="int">
select MAX(deptno) from dept
</select>
<!--不规则, 查询一行多列-->
<select id="selectIrregularMap" resultType="hashmap">
select deptno,dname from dept where deptno=(select MAX(deptno) from dept)
</select>
<!--不规则, 查询多行多列-->
<select id="selectIrregularList" resultType="hashmap">
select e.ename, d.dname,e.sal from dept d join emp e using(deptno)
</select>
在这里插入代码片
下面是java代码
/**
* 不规则查询一行一列
*/
public void selectIrregularInt(){
//获取数据库链接
SqlSession sqlSession= MyBatiesUtils.getSqlSession();
//获取数据
int max=sqlSession.selectOne(“com.zks.dao.DeptMapper.selectIrregularInt”);
sqlSession.close();
System.out.println(“DeptMapper.selectIrregularInt”+max);
}
/**
* 不规则 一行多列
*/
public void selectIrregularMap(){
//获取数据库链接
SqlSession sqlSession= MyBatiesUtils.getSqlSession();
//获取数据
Map<String,Object> map=sqlSession.selectOne("com.zks.dao.DeptMapper.selectIrregularMap");
sqlSession.close();
System.out.println("DeptMapper.selectIrregularMap"+map);
}
/**
* 不规则的 多行多列
*/
public void selectIrregularList(){
//获取数据库链接
SqlSession sqlSession= MyBatiesUtils.getSqlSession();
//获取数据
List<Map<String,Object>> list=sqlSession.selectList("com.zks.dao.DeptMapper.selectIrregularList");
sqlSession.close();
list.stream().forEach(System.out::println);
}