Mybatis返回类型和Java常见对象类型

点滴记录

项目开发中经常用到的:

1.resultMap

使用这个返回需要实体类和数据库字段关系映射如下面的:BaseResultMap

<?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 namespace="BusiDuebillMapper">
  <resultMap id="BaseResultMap" type="BusiDuebill">
    <result column="duebillno" jdbcType="VARCHAR" property="duebillno"/>
    <result column="putout_no" jdbcType="VARCHAR" property="putoutNo"/>
  </resultMap>
  <resultMap id="BaseResultMapVO" type="BusiDuebillVO" extends="BaseResultMap">
    <result column="cusid" jdbcType="VARCHAR" property="cusid"/>
    <result column="cert_no" jdbcType="VARCHAR" property="certNo"/>
    <result column="mobileTel" jdbcType="VARCHAR" property="mobileTel"/>
  </resultMap>

  <sql id="Base_Column_List">
      duebillno,putout_no
  </sql>

  <select id="find111" parameterType="java.lang.String" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List"/>
    from xd_busi_duebill
    where DUEBILLNO = #{duebillno}
  </select>

  <select id="select123" resultMap="BaseResultMapVO" parameterType="BusiDuebillVO">
    select *
    FROM xd_busi_duebill xd
    LEFT JOIN ur_user uu on uu.id = xd.client_id
  </select>
</mapper>

几个点:

①BaseResultMap基础映射,一般都是数据库表和实体(Entity)一一对应的

②如果要关联查询别的表的字段,比如页面上展示别的相关信息,可采用BaseResultMapVo,继承BaseResultMap.关系一目了然

③既然映射用了VO还有继承,那当然实体类也需要相应继承:BusiDuebillVO显然继承BusiDuebill,扩展的字段用于展示页面多余的信息.

④项目中用的比较多的就是上面说的Vo继承Entity方便作页面扩展字段的展示,其他实体相关的类的介绍和用法可参考这俩篇:

一篇文章讲清楚VO,BO,PO,DO,DTO的区别_cowcomic的专栏-CSDN博客

PO、VO、BO、DTO、POJO、DAO、DO之间的关系_lisheng19870305的专栏-CSDN博客

领会精神,灵活运用即可

2.resultType

返回类型就可以任意返回Sting,int,HashMap等

<?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 namespace="com.bang.loan.mapper.MenuMapper">
    <select id="getAllMenus" resultType="java.util.HashMap">
       select m.id,
       m.pattern,
       mr.id    as mrid,
       mr.mid   as mid,
       mr.rid   as rid,
       r.name   as name,
       r.nameZh as nameZh
from menu m
         left join menu_role mr
                   on m.id = mr.mid
         left join role r
                   on mr.rid = r.id
    </select>

</mapper>
@Mapper
@Repository("/menuMapper")
public interface MenuMapper {
    List<Map<String, Object>> getAllMenus();
}

返回值一般用HashMap.速度稍快些.几种Map区别:

JAVA中MAP的四种类型区别和常见的简单用法_王世春的博客-CSDN博客_map类型

常见错误:

不用别名导致不同表有相同字段名称时,只存第一个key.比如上面m.id和mr.id字段名都是id,不用别名最后返回map就会少一个key,因为一般map不允许key重复

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值