zoukankan      html  css  js  c++  java
  • Mybatis框架的输出映射类型

      Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心。

    resultType(输出类型)

    1.输出简单类型

    (1)我们在UserMapper接口中定义查找数据库中用户总人数的方法:

      public Integer findUserCount();

    (2)在UserMapper.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接口代理实现编写规则:
    1.映射文件中namespace要等于接口的全路径
    2.通过sql语句实现数据库的操作
    3.映射文件中sql语句id要等与于接口的方法名称
    4.映射文件中传入参数类型要等于接口方法的传入参数类型
    5.映射文件中返回结果集类型要等于接口方法的返回值类型
     -->
    <mapper namespace="com.huida.mapper.UserMapper">
        <select id="findUserCount" resultType="int">
            <!-- 当我们的返回记录只有一行一列的时候后,返回结果类型为基本数据类型,除了这种情况,返回类型均为po类型 -->
            select count(*) from user;
        </select>
    
    </mapper>

    (3)测试代码为:

    package com.huida.test;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    import javax.management.Query;
    
    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 org.junit.Before;
    import org.junit.Test;
    import org.omg.PortableInterceptor.USER_EXCEPTION;
    
    import com.huida.mapper.UserMapper;
    import com.huida.po.User;
    import com.huida.vo.QueryVo;
    
    public class UserMapperTest {
    
        private SqlSessionFactory factory=null;
        @Before
        public void init() throws Exception{
            //通过流将核心配置文件读取进来
            InputStream inputStream=Resources.getResourceAsStream("config/SqlMapConfig.xml");
            //通过核心配置文件输入流来创建工厂
            factory=new SqlSessionFactoryBuilder().build(inputStream);
        }
    
        @Test
        public void testfindUserCount(){
            //创建SqlSession
            SqlSession openSession=factory.openSession();
            //通过会话的getMapper方法来实例化接口(实现类的对象)
            UserMapper userMapper=openSession.getMapper(UserMapper.class);//参数放接口的字节码文件
            Integer count=userMapper.findUserCount();
            System.out.println(count);
            
        }
        
        
    }
      当我们的返回记录只有一行一列的时候后,返回结果类型为基本数据类型,除了这种情况,返回类型均为po类型。

      输出简单类型必须查询出来的结果集有一条记录,最终将第一个字段的值转换为输出类型。使用sessionselectOne可查询单条记录。

    2.输出po对象

      可以参考我之前查询单条记录的博文。

    3.输出po对象列表

      可以参考我之前模糊查询的博文(可以查询到多条记录)。

    4.resultMap

      resultType可以指定pojo将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功。

      如果sql查询字段名和pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系 ,resultMap实质上还需要将查询结果映射到pojo对象中。

      resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojolist实现一对一查询和一对多查询。

  • 相关阅读:
    过度效果
    JQ 滚动图片
    清除Css中select的下拉箭头样式
    利用原生 js 模拟出 JSON.parse 和 JSON.stringify
    利用 qrcode 在图片生成二维码
    JavaScript--正则表达式
    2、less的用法
    模拟select下拉框之多选(数据源采用模拟Ajax数据--原创)
    模拟 ES6 SET 数组去重
    前端方式导入导出xlsx
  • 原文地址:https://www.cnblogs.com/wyhluckdog/p/10155459.html
Copyright © 2011-2022 走看看