• Mybatis的返回值类型resultMap


    Mybatis的查询结果除了可以设置为resultType以外,还可以设置为resultMap.

    1.方式一:把resultType的值设置为Map

    mapper 文件:

    <select id="selectReturnMap"  resultType="java.util.HashMap">
    select id, actno from bankdb.t_account  where id = #{id}
    </select>

    接口方法:

    Map<Object,Object> selectReturnMap(int id);

    测试方法:

    AccountDao dao = sqlSession.getMapper(AccountDao.class);
    Map<Object,Object> map=dao.selectReturnMap(1001);
    System.out.println("Map=:"+map);

    注意:

    这里我们并没有设置数据库列名与map的key的对应关系,并且我们也没有指定map里面有些什么key。

    mybatis会自动把数据库的列名当作map的key,列值转化成map的value。

    SQL返回值只能是一行,多余一行,则无法与map对应,就会报错。

    org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 4

    2.方式二:设置返回值类型为resultMap

    2.1.使用resultMap:
    1)需要先用resultMap标签定义一个map
    2)在select标签中引用我们定义的map
    2.2 resultMap的定义方法
    1)id:自定义resultMap的名称
    2)type:java实体类的全限定名称
    column:数据库表的列名
    property:java实体类的属性名

    mapper文件:
    <resultMap id="accountMap" type="com.galaxy.bank.pojo.Account">
    <!--        column:数据库表的列名-->
    <!--        property:java实体类的属性名-->
            <id column="id" property="id"/>
    <!--        非主键列使用result标签-->
            <result column="actno" property="actno"/>
            <result column="balance" property="balance"/>
            <result column="holder_name" property="holderName"/>
            <result column="country" property="country"/>
        </resultMap>
    
        <select id="selectAllAccountsMap" resultMap="accountMap">
            select id, actno, balance, holder_name, country
            from bankdb.t_account
        </select>

    Java Dao接口:

    注意:返回值类型是List

    List<Account> selectAllAccountsMap();

    测试类:

      @Test
        public void test09() {
            SqlSession sqlSession = MybatisUtil.getSqlSession();
            AccountDao dao = sqlSession.getMapper(AccountDao.class);
           List<Account> accounts=dao.selectAllAccountsMap();
           accounts.forEach(account -> {
               System.out.println("Account=:"+account);
           });
    
            sqlSession.close();
        }

    -------------------------------------------------------------------------------------------------
    2022年10月9日,农历九月十四,星期日,阴天有小雨,气温较冷,上海。
    凌晨:01:16国庆节7天假期后的第二天,今日不调休,不上班.
    ---------------------------------------------------------------------------------------------------

  • 相关阅读:
    记处理PostgreSQL连接太多的问题
    记服务器迁移上云出现故障
    PostgreSQL-迁移同步序列
    为什么你的pgbouncer连接这么慢
    TS基础知识储备
    前端实在好用的工具类库 【后续持续添加若有请留言添加积累供大家使用】
    Vue 3 + Typescript + Vite2.0 搭建移动端 代码规范以及注意的点
    flutter2.0 环境搭建(window环境下Mac自行查看官网即可)
    vite2.0+vue3+ts前端最新热门技术项目搭建
    React官方状态管理库—— Recoil
  • 原文地址:https://www.cnblogs.com/majestyking/p/16770770.html
Copyright © 2020-2023  润新知