mybatis的Mapper文件配置

一、resultMap

  resultMap 元素是 MyBatis
中不过着重最劲的元素. 该配置节点下如下子节点配置

  • id – 一个 ID
    结果;标记结果作 ID 可以协助提高总体力量
  • constructor 
    类在实例化时,用来注入结果及构造方法中id – 一个 ID
    结果;标记结果当 ID 可以帮提高整体效益

    • idArg – ID 参数;标记结果作为 ID 可以帮助提高整体功能
    • arg – 注入及构造方法的一个一般性结果
  • result – 注入及字段或 JavaBean
    属性的普通结果
  • association 
    一个扑朔迷离的种涉及;许多结出将确保改成这种类型

    • 置于结果映射 – 结果映射自身的关系,或者参考一个
  • collection 
    复杂类型的集结

    • 内置结果映射 – 结果映射自身之汇,或者参考一个
  • discriminator 
    使用结果值来支配运用谁结果映射

    • case –
      基于某些价值的结果映射

      • 放置结果映射 –
        这种情况结果吧映照它本身,因此得以涵盖多相
        同的元素,或者其好参照一个标的结果映射。

  resultMap配置节点有所如下配置属性:

MyBatis 1

  id配备节点有所如下配置属性:

MyBatis 2

   剩余详细配置属性可参考文档:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html\#

 二、通过mapper配置实现有多关系查询

  1.第一我们建有限摆表,一张user表,一张campany表。(主要看 username 和
campany_name字段)

  MyBatis 3

  2.开立实体类表:

  user:(字段应该和数据库字段一一对应,因为要落实有基本上之齐查询,所以我们当user实体类中几近加了Campany实体类,表示一个总人口傻眼过的小卖部记录,每个字段都要起set和get方法)

  MyBatis 4

  campany:

  MyBatis 5

  3.创造dao接口类:(此处我们特开询问,所以仅定义一个术接口)

1 public interface UserDao {
2     public List<UserEntity> getUserInfo(int id);
3 }

 

  4.创办dao接口对应的mapper.xml(namespace=”dao.daoInterface.UserDao”
意为该mapper是UserDao的贯彻类似MyBatis,然后每个select,insert,update,delete标签节点的id都对应一个dao接口的点子,所以select的id应该同UserDao内要促成之主意一致)

 1 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 2     <mapper namespace="dao.daoInterface.UserDao">
 3     <resultMap id="UserMap" type="domain.UserEntity">
 4         <id property="id" column="uid" />
 5         <result property="username" column="username" />
 6         <result property="password" column="password"/>
 7         <result property="address" column="address"/>
 8         <result property="createTime" column="createTime"/>
 9         <result property="updateTime" column="updateTime"/>
10         <collection property="campanyEntity" resultMap="dao.daoInterface.CampanyDao.CampanyMap" />
11     </resultMap>
12 
13     <!-- 可以将sql语句独立出来,然后引用 -->
14     <sql id="selectMap">
15         u.username, u.address ,c.campany_name
16     </sql>
17 
18     <!-- 根据id查询用户 -->
19     <select id="getUserInfo" parameterType="int" resultMap="UserMap">
20             SELECT <include refid="selectMap"/>
21             FROM  user u left join campany c
22             ON u.username = c.username
23             WHERE id = #{id}
24             ORDER BY id ASC
25     </select>
26 
27 
28 </mapper>

 

  CampanyMapper.xml
(这间一直定义了一个map,该map可以让另外mapper文件引用,如齐部署:<collection property=”campanyEntity”
resultMap=”dao.daoInterface.CampanyDao.CampanyMap” />就引述了此mapper的resultMap,引用规则位,该mapper的贯彻的接口包名dao.daoInterface.CampanyDao

  • resultMap的id名称)

    1 2
    3
    4
    5
    6
    7

    8
    9

 

  6.测试方法:

1      List<UserEntity> uList = userService.getUserInfo(1);
2         if(uList.size() > 0){
3             for(int i=0;i<uList.size();i++){
4                 System.out.println(uList.get(i).getUsername()+"\t"+uList.get(i).getCampanyEntity().getCampanyName());
5             }
6         }

   7.周转结果

MyBatis 6

这么,就兑现了mapper配置实现有大抵干查询

 

网站地图xml地图