mybatis的参数传递和resultMap的解析

参数传递的几种情况

在这里插入图片描述

<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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis 是一种用于 Java 开发的持久层框架,它可以简化数据库操作,并提供了强大的 SQL 映射功能。下面是对 MyBatis 中的 paramtype、parammapresultmapresulttype 的详细解释: 1. paramtype:它用于指定传入 SQL 语句的参数类型。在 MyBatis 中,可以通过在映射文件或注解中指定 paramtype 来告诉 MyBatis 如何解析传入的参数。例如,可以使用 paramtype="java.lang.Integer" 来指定传入的参数为整数类型。 2. parammap:它用于指定传入 SQL 语句的参数映射表。参数映射表是一个键值对,其中键为参数的名称,值为参数的值。通过 parammap,可以将多个参数打包成一个对象传递给 SQL 语句。在 MyBatis 中,可以使用 parammap 来指定参数映射表。例如,可以使用 parammap="param1" 来指定参数映射表为名为 param1 的对象。 3. resultmap:它用于指定 SQL 语句执行结果的映射表。结果映射表是一个键值对,其中键为结果的名称,值为结果的值。通过 resultmap,可以将 SQL 查询结果映射到 Java 对象或其他数据结构中。在 MyBatis 中,可以使用 resultmap 来指定结果映射表。例如,可以使用 resultmap="result1" 来指定结果映射表为名为 result1 的对象。 4. resulttype:它用于指定 SQL 语句执行结果的数据类型。在 MyBatis 中,可以通过在映射文件或注解中指定 resulttype 来告诉 MyBatis 如何解析 SQL 查询结果。例如,可以使用 resulttype="java.lang.String" 来指定 SQL 查询结果为字符串类型。 总结来说,paramtype 和 resulttype 主要用于指定参数和结果的数据类型,而 parammapresultmap 主要用于指定参数和结果的映射关系。它们在 MyBatis 中都起到了重要的作用,帮助开发者简化数据库操作和实现灵活的数据映射。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值