点滴记录
项目开发中经常用到的:
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重复