yangshuaihahaha 2017-03-08 03:26 采纳率: 0%
浏览 11443

mybatis嵌套查询,一个resultMap中有多个association标签,怎么写sql语句?

1. 一下是我的实体类

  1. private int id;
  2. private Users users;//房屋持有者
  3. private Types types;//房屋类型
  4. private String title;
  5. private String description;
  6. private double price;
  7. private Date pubdate;//发布日期
  8. private int floorage;//建筑面积
  9. private int contact;//联系方式
  10. private Street street;//房屋所属街区
  11. public int getId() {
  12. return id;
  13. }
  14. public void setId(int id) {
  15. this.id = id;
  16. }
  17. public String getTitle() {
  18. return title;
  19. }
  20. public void setTitle(String title) {
  21. this.title = title;
  22. }
  23. public String getDescription() {
  24. return description;
  25. }
  26. public void setDescription(String description) {
  27. this.description = description;
  28. }
  29. public double getPrice() {
  30. return price;
  31. }
  32. public void setPrice(double price) {
  33. this.price = price;
  34. }
  35. public Date getPubdate() {
  36. return pubdate;
  37. }
  38. public void setPubdate(Date pubdate) {
  39. this.pubdate = pubdate;
  40. }
  41. public int getFloorage() {
  42. return floorage;
  43. }
  44. public void setFloorage(int floorage) {
  45. this.floorage = floorage;
  46. }
  47. public int getContact() {
  48. return contact;
  49. }
  50. public void setContact(int contact) {
  51. this.contact = contact;
  52. }
  53. public Users getUsers() {
  54. return users;
  55. }
  56. public void setUsers(Users users) {
  57. this.users = users;
  58. }
  59. public Types getTypes() {
  60. return types;
  61. }
  62. public void setTypes(Types types) {
  63. this.types = types;
  64. }
  65. public Street getStreet() {
  66. return street;
  67. }
  68. public void setStreet(Street street) {
  69. this.street = street;
  70. }

##下面是对应的xml文件,以及sql语句

 <mapper namespace="com.rhit.dao">

    <resultMap id="HouseMap" type="com.rhit.entity.House">
        <id property="id" column="ID" />

        <result property="title" column="TITLE" />
        <result property="description" column="DESCRIPTION" />
        <result property="price" column="PRICE" />
        <result property="pubdate" column="PUBDATE" />
        <result property="floorage" column="FLOORAGE" />
        <result property="contact" column="CONTACT" />

        <association property="types" javaType="Types">
        <id property="id" column="ID" />
        <result property="name" column="NAME" />
        </association>

        <association property="street" javaType="Street">
        <id property="id" column="ID" />
        <result property="name" column="NAME" />
        </association>

        <association property="users" javaType="Users">
        <id property="id" column="ID" />
        <result property="name" column="NAME" />
        <result property="password" column="PASSWORD" />
        <result property="telphone" column="TELEPHONE" />
        <result property="username" column="USERNAME" />
        <result property="isadmin" column="ISADMIN" />
        </association>


    </resultMap>


    <select id="getHouse" resultMap="HouseMap">

    select * from house h,users u,types t,street s where  u.id=h.user_id and t.id=h.type_id and s.id=h.street_id
    </select>

</mapper>

##下面是调用测试
public class Test {

public static void main(String[] args) {
    SqlSession session=MyBatisUtil.getSession();
    List<House> list=session.selectList("getHouse");

    System.out.println(list.get(0).getStreet().getName());
    System.out.println(list.get(0).getTypes().getName());
  System.out.println(list.get(0).getUsers().getName());
}

}

##问题
1.测试结果只获取到了user的名字,而types和street的名字跟user的名字一样?
2.一个resultMap中可以有多个association么?这种多对多的关系该怎么处理?
3.一个resultMap可以有多个collection么?怎么写sql语句呢?

求大神么解答,在线等,先谢过!

  • 写回答

2条回答 默认 最新

  • hit、run 2017-03-08 05:09
    关注

    1.配置多个一对一(association)的时候,默认执行第一个一对一,所以你取的结果都相同
    2.resultMap中不可以有多个association,多对多关系可以修改表结构,配置成2个一对多的表来实现,
    添加一个中间表,这样的话就可以通过collection标签来配置了
    3.不可以啊,resultMap中只有一个collection,或者一个association.
    sql语句和一对一类似,



    //这里把user的id传过去
    select="test.mybatis.dao.articleMapper.selectArticleListByUserId" />

    以下省略,类同,Mybatis会把结果封装成List类型。

    评论

报告相同问题?

悬赏问题

  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形