国王陛下万万岁

导航

 

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天假期后的第二天,今日不调休,不上班.
---------------------------------------------------------------------------------------------------

posted on 2022-10-09 00:29  国王陛下万万岁  阅读(957)  评论(0编辑  收藏  举报