MyBatis-结果集封装map和pojo

本文探讨了在MyBatis中如何使用Map和POJO来封装查询结果集。对于Map存储,虽然灵活性高但可能降低代码可读性;而对于POJO,作为更推荐的方式,提供了良好的封装性和执行结果的校验。文中通过配置示例和测试步骤详细阐述了这两种方法的使用规范。
摘要由CSDN通过智能技术生成

使用map存储结果集

使用规范

  • 原则上,所有的结果集都可以存储到map
  • 但使用map存储,会大大降低阅读性
  • mapper文件中使用map存储结果的参考
    <select id="xxx" resultType="map">
    	...                           
    </select>                           
    

测试步骤参考

  • 全局配置文件和实体类省略
  • mapper文件配置
    <!--使用 map 存储结果集 -->                    
    <select id="get_map" resultType="map">  
    	select * from emp                   
    </select>                               
    
  • mapper接口省略
  • 主要测试类部分截取
    Test_resultType dao = session.getMapper(Test_resultType.class);
    // 将结果对象依次封装到 map 实例中
    // 以 key-value 的形式
    // key 表示属性; value 表示属性值
    List<Map<?, ?>> list = dao.get_map();
    for (Map<?, ?> map : list)
    {
    	log.info(map);
    }
    
  • 校验输出部分截取
    DEBUG 2019-01-13 00:18:24,865 org.apache.ibatis.logging.jdbc.BaseJdbcLogger : <==      Total: 15
     INFO 2019-01-13 00:18:24,866 siye.ibatis.test.Test_mapper_conf : {sex=1, name=xiaoli, id=1, age=23}
     INFO 2019-01-13 00:18:24,866 siye.ibatis.test.Test_mapper_conf : {sex=1, name=xiaohong, id=2, age=28}
     INFO 2019-01-13 00:18:24,866 siye.ibatis.test.Test_mapper_conf : {sex=1, name=xiaofang, id=3, age=28}
     INFO 2019-01-13 00:18:24,866 siye.ibatis.test.Test_mapper_conf : {sex=1, name=xiaofang, id=4, age=28}
     INFO 2019-01-13 00:18:24,867 siye.ibatis.test.Test_mapper_conf : {sex=1, name=xiaofang, id=5, age=28}
     INFO 2019-01-13 00:18:24,867 siye.ibatis.test.Test_mapper_conf : {sex=1, name=xiaofang, id=6, age=28}
     INFO 2019-01-13 00:18:24,867 siye.ibatis.test.Test_mapper_conf : {sex=0, name=xiaoHua, id=7, age=90}
     INFO 2019-01-13 00:18:24,867 siye.ibatis.test.Test_mapper_conf : {sex=0, name=xiaoHua, id=8, age=87}
     INFO 2019-01-13 00:18:24,867 siye.ibatis.test.Test_mapper_conf : {sex=0, name=xiaoLi, id=9, age=66}
     INFO 2019-01-13 00:18:24,867 siye.ibatis.test.Test_mapper_conf : {sex=0, name=Rose, id=10, age=23}
     INFO 2019-01-13 00:18:24,867 siye.ibatis.test.Test_mapper_conf : {name=xiao_zhu, id=11}
     INFO 2019-01-13 00:18:24,868 siye.ibatis.test.Test_mapper_conf : {name=xiao_zhu, id=12}
     INFO 2019-01-13 00:18:24,868 siye.ibatis.test.Test_mapper_conf : {name=xiao_zhu, id=13}
     INFO 2019-01-13 00:18:24,868 siye.ibatis.test.Test_mapper_conf : {sex=0, name=xiaoHua, id=14, age=34}
     INFO 2019-01-13 00:18:24,868 siye.ibatis.test.Test_mapper_conf : {sex=0, name=xiaoHua, id=15, age=83}
    

使用POJO存储结果集

使用规范

  • 只需指定合法的POJO类对象的正确包路径即可
  • 可以是完全限定名,也可以是别名
  • 强大的可读性,和对执行结果的便捷操作,较为推荐的方式
  • mapper文件中使用POJO存储结果集的参考
    <select id="xxx" resultType="object_qualifier_name"> 
    	...                                              
    </select>                                            
    

测试步骤参考

  • 全局配置文件和实体类省略
  • mapper文件的配置
    <!--使用 POJO 存储结果集 -->                                      
    <select id="get_pojo" resultType="siye.ibatis.entity.Emp"> 
    	select * from emp                                      
    </select>                                                  
    
  • mapper接口省略
  • 主要测试类部分截取
    Test_resultType dao = session.getMapper(Test_resultType.class);
    // 依据 POJO 映射封装,依次填入到 list 实例中
    List<Emp> list = dao.get_pojo();
    for (Emp emp : list)
    {
    	log.info(emp);
    }
    
  • 校验输出部分截取
    DEBUG 2019-01-13 00:25:10,463 org.apache.ibatis.logging.jdbc.BaseJdbcLogger : <==      Total: 15
     INFO 2019-01-13 00:25:10,463 siye.ibatis.test.Test_mapper_conf : siye.ibatis.entity.Emp@150c158
     INFO 2019-01-13 00:25:10,464 siye.ibatis.test.Test_mapper_conf : siye.ibatis.entity.Emp@124411f
     INFO 2019-01-13 00:25:10,464 siye.ibatis.test.Test_mapper_conf : siye.ibatis.entity.Emp@1e7803
     INFO 2019-01-13 00:25:10,464 siye.ibatis.test.Test_mapper_conf : siye.ibatis.entity.Emp@dba097
     INFO 2019-01-13 00:25:10,464 siye.ibatis.test.Test_mapper_conf : siye.ibatis.entity.Emp@186f9d5
     INFO 2019-01-13 00:25:10,464 siye.ibatis.test.Test_mapper_conf : siye.ibatis.entity.Emp@4d6e83
     INFO 2019-01-13 00:25:10,464 siye.ibatis.test.Test_mapper_conf : siye.ibatis.entity.Emp@1a0cee9
     INFO 2019-01-13 00:25:10,464 siye.ibatis.test.Test_mapper_conf : siye.ibatis.entity.Emp@b21112
     INFO 2019-01-13 00:25:10,465 siye.ibatis.test.Test_mapper_conf : siye.ibatis.entity.Emp@da0940
     INFO 2019-01-13 00:25:10,465 siye.ibatis.test.Test_mapper_conf : siye.ibatis.entity.Emp@178436e
     INFO 2019-01-13 00:25:10,465 siye.ibatis.test.Test_mapper_conf : siye.ibatis.entity.Emp@6a04ae
     INFO 2019-01-13 00:25:10,465 siye.ibatis.test.Test_mapper_conf : siye.ibatis.entity.Emp@ceb130
     INFO 2019-01-13 00:25:10,465 siye.ibatis.test.Test_mapper_conf : siye.ibatis.entity.Emp@a035a0
     INFO 2019-01-13 00:25:10,465 siye.ibatis.test.Test_mapper_conf : siye.ibatis.entity.Emp@1b467e9
     INFO 2019-01-13 00:25:10,465 siye.ibatis.test.Test_mapper_conf : siye.ibatis.entity.Emp@1db50c5
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值