• mybatis框架使用resultMap实现高级结果映射,collection属性的使用


    需求:获取指定用户的用户信息和地址列表  

    修改user实体类  添加集合的引用。

    /**
    * 根绝用户id,获取该角色下的地址信息
    * @param userID
    * @return
    */
    public User getUserListAddressByUserID(@Param("userID")Integer userID);

    <resultMap type="User" id="userAddressList">
    <id property="id" column="id"/>
    <result property="userCode" column="userCode" />
    <result property="userName" column="userName" />
    <result property="userRole" column="userRole" />
    <!--User类中引用的List集合类 同样为了复用,也可以将collection的映射结果使用resultMap元素提到外边,这个和association的用法是相同的 -->
    <collection property="addressList" ofType="Address">
    <id property="id" column="b_id"/>
    <result property="contact" column="contact" />
    <result property="addressDesc" column="addressDesc" />
    <result property="tel" column="tel" />
    </collection>
    </resultMap>
    <select id="getUserListAddressByUserID" resultMap="userAddressList" parameterType="Integer">
    SELECT a.*,b.id as b_id,b.contact,b.addressdesc,b.tel from smbms_user a,smbms_address b where a.id=b.userid and a.id=#{userID}
    </select>

      1 package cn.smbms.pojo;
      2 
      3 import java.util.Date;
      4 import java.util.List;
      5 
      6 public class User {
      7     private Integer id; //id 
      8     private String userCode; //用户编码
      9     private String userName; //用户名称
     10     private String userPassword; //用户密码
     11     private Integer gender;  //性别
     12     private Date birthday;  //出生日期
     13     private String phone;   //电话
     14     private String address; //地址
     15     private Integer userRole;    //用户角色
     16     private Integer createdBy;   //创建者
     17     private Date creationDate; //创建时间
     18     private Integer modifyBy;     //更新者
     19     private Date modifyDate;   //更新时间
     20     private Role role;//用户角色
     21     private List<Address> addressList;//一个用户有多个地址列表
     22     
     23     
     24     
     25     public List<Address> getAddressList() {
     26         return addressList;
     27     }
     28     public void setAddressList(List<Address> addressList) {
     29         this.addressList = addressList;
     30     }
     31     public Role getRole() {
     32         return role;
     33     }
     34     public void setRole(Role role) {
     35         this.role = role;
     36     }
     37     public Integer getId() {
     38         return id;
     39     }
     40     public void setId(Integer id) {
     41         this.id = id;
     42     }
     43     public String getUserCode() {
     44         return userCode;
     45     }
     46     public void setUserCode(String userCode) {
     47         this.userCode = userCode;
     48     }
     49     public String getUserName() {
     50         return userName;
     51     }
     52     public void setUserName(String userName) {
     53         this.userName = userName;
     54     }
     55     public String getUserPassword() {
     56         return userPassword;
     57     }
     58     public void setUserPassword(String userPassword) {
     59         this.userPassword = userPassword;
     60     }
     61     public Integer getGender() {
     62         return gender;
     63     }
     64     public void setGender(Integer gender) {
     65         this.gender = gender;
     66     }
     67     public Date getBirthday() {
     68         return birthday;
     69     }
     70     public void setBirthday(Date birthday) {
     71         this.birthday = birthday;
     72     }
     73     public String getPhone() {
     74         return phone;
     75     }
     76     public void setPhone(String phone) {
     77         this.phone = phone;
     78     }
     79     public String getAddress() {
     80         return address;
     81     }
     82     public void setAddress(String address) {
     83         this.address = address;
     84     }
     85     public Integer getUserRole() {
     86         return userRole;
     87     }
     88     public void setUserRole(Integer userRole) {
     89         this.userRole = userRole;
     90     }
     91     public Integer getCreatedBy() {
     92         return createdBy;
     93     }
     94     public void setCreatedBy(Integer createdBy) {
     95         this.createdBy = createdBy;
     96     }
     97     public Date getCreationDate() {
     98         return creationDate;
     99     }
    100     public void setCreationDate(Date creationDate) {
    101         this.creationDate = creationDate;
    102     }
    103     public Integer getModifyBy() {
    104         return modifyBy;
    105     }
    106     public void setModifyBy(Integer modifyBy) {
    107         this.modifyBy = modifyBy;
    108     }
    109     public Date getModifyDate() {
    110         return modifyDate;
    111     }
    112     public void setModifyDate(Date modifyDate) {
    113         this.modifyDate = modifyDate;
    114     }
    115 }
     1 @Test
     2     public void testGetUserListAddressByUserId(){
     3         SqlSession sqlSession = null;
     4         List<User> userList = new ArrayList<User>();
     5         User user=new User();
     6         try {
     7             sqlSession = MyBatisUtil.createSqlSession();
     8             
     9         
    10             user = sqlSession.getMapper(UserMapper.class).getUserListAddressByUserID(1);
    11             
    12         } catch (Exception e) {
    13             // TODO: handle exception
    14             e.printStackTrace();
    15         }finally{
    16             MyBatisUtil.closeSqlSession(sqlSession);
    17         }
    18         //去掉role类的属性是可以的
    19         logger.debug("testGetUserListByRoleId roleid: " + user.getUserCode() + " and userName: " + user.getUserName()+"and userRoleName:"+11111111);
    20         //这种写法控制台一行日志是输不出来的,因为用到了Role类中的属性
    21         //    logger.debug("testGetUserListByRoleId roleid: " + user.getUserCode() + " and userName: " + user.getUserName()+"and userRoleName:"+user.getRole().getRoleName());
    22             for(Address address: user.getAddressList()){
    23                 logger.debug("testGetUserListAddressByUserId contact: " + address.getContact() + " and addressDesc: " + address.getAddressDesc()+"and tel:"+address.getTel());
    24             }
    25         
    26     }

  • 相关阅读:
    正则如何匹配div下的所有<li>标签?
    日历
    生成一定数量的不重复随机数
    PHP微信红包的算法实现探讨
    Flask 快速使用 —— (1)
    Django rest framework(8)---- 视图和渲染器
    Django 组件之 ----- content-type
    Django rest framework(7)----分页
    Django rest framework(6)----序列化(2)
    Django rest framework(5)----解析器
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/12006132.html
Copyright © 2020-2023  润新知