zoukankan      html  css  js  c++  java
  • Mybatis多表查询

    多对一 :

     SqlMapConfig.xml

    <!--typeAliases标签用于起别名,这样package指定包中的实体类的类名可以在Mapper.xml的resultType中直接使用,无需写全限定类名-->
    <typeAliases>
    <package name="com.company.domain"/>
    </typeAliases>
    <environments default="mysql">
    ...
    </environments>

       实体类

      public class Account {

        private Integer id;
    private Integer uid;
    private Double money;
    /**
    * 多对一实体属性
    */
    private User user;
      setter和getter省略。。。
    }


    Mapper映射文件
    <resultMap id="accountMap" type="Account">
    <id property="id" column="aid"></id>
    <result property="uid" column="uid"></result>
    <result property="money" column="money"></result>  
      <!--配置多对一实体属性,javaType属性如果未在配置文件中取别名,则需写全限定类名-->
        <association property="user" javaType="user">
    <id property="id" column="id"></id>
    <result property="username" column="username"></result>
    <result property="birthday" column="birthday"></result>
    <result property="sex" column="sex"></result>
    <result property="address" column="address"></result>
    </association>
    </resultMap>
    <select id="findAll" resultMap="accountMap">

    SELECT
    a.id aid,
    a.uid,
    a.money,
    u.*
    FROM
    USER u
    RIGHT JOIN account a ON u.id = a.uid;

    </select>
    
    

    一对多 :
     实体类
    public class User {
    private Integer id;
    private String username;
    private Date birthday;
    private Character sex;
    private String address;

    private List<Account> accounts;

       setter和getter省略。。。
    }
      
     Mapper映射文件
      
    <resultMap id="userMap" type="user">
    <id property="id" column="id"></id>
    <result property="username" column="username"></result>
    <result property="birthday" column="birthday"></result>
    <result property="sex" column="sex"></result>
    <result property="address" column="address"></result>
    <!--配置一对多属性-->
    <collection property="accounts" ofType="Account">
    <id property="id" column="aid"></id>
    <result property="uid" column="uid"></result>
    <result property="money" column="money"></result>
    </collection>
    </resultMap>
    <select id="findAll" resultMap="userMap">
    SELECT
    u.*,
    a.id aid,
    a.uid,
    a.money
    FROM
    USER u
    LEFT JOIN account a ON u.id = a.uid;
    </select>
    
    
    多对多 :
      实体类  

    public class User {
    private Integer id;
    private String username;
    private Date birthday;
    private Character sex;
    private String address;

    private List<Account> accounts;

    private List<Role> roles;
    }
      Mapper映射文件
      
    <resultMap id="userMap" type="user">
    <id property="id" column="id"></id>
    <result property="username" column="username"></result>
    <result property="birthday" column="birthday"></result>
    <result property="sex" column="sex"></result>
    <result property="address" column="address"></result>
    <!--配置一对多属性,在role的dao中反向也一对多,即完成了多对多-->
    <collection property="accounts" ofType="Account">
    <id property="id" column="aid"></id>
    <result property="uid" column="uid"></result>
    <result property="money" column="money"></result>
    </collection>
    </resultMap>
    <select id="findRoleAll" resultMap="roleMap">
    SELECT
    u.*,
    r.id rid,
    r.role_desc,
    r.role_name
    FROM
    USER u
    LEFT JOIN user_role ur ON u.id = ur.uid
    LEFT JOIN role r ON ur.rid = r.id;
    </select>


  • 相关阅读:
    SQLMAP注入教程-11种常见SQLMAP使用方法详解
    VS2012/2013/2015/Visual Studio 2017 关闭单击文件进行预览的功能
    解决 IIS 反向代理ARR URLREWRITE 设置后,不能跨域跳转 return Redirect 问题
    Spring Data JPA one to one 共享主键关联
    JHipster 问题集中
    Spring Data JPA 定义超类
    Spring Data JPA查询关联数据
    maven命名
    maven仓库
    Jackson读取列表
  • 原文地址:https://www.cnblogs.com/zou-rong/p/12435289.html
Copyright © 2011-2022 走看看