• 04、关联关系映射


    目录

    一、一对多

    二、多对多


    一、一对多

    概念:比如一个老师对应多个班

     步骤:

    ①修改generatorConfig.xml,然后逆向生成

    1. generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
    2. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
    3. <generatorConfiguration>
    4. <properties resource="jdbc.properties"/>
    5. <classPathEntry location="E:\\Maven\\mvn_baoc\\mysql\\mysql-connector-java\\5.1.44\\mysql-connector-java-5.1.44.jar"/>
    6. <context id="infoGuardian">
    7. <commentGenerator>
    8. <property name="suppressAllComments" value="true"/>
    9. <property name="suppressDate" value="true"/>
    10. commentGenerator>
    11. <jdbcConnection driverClass="${jdbc.driver}"
    12. connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"/>
    13. <javaTypeResolver>
    14. <property name="forceBigDecimals" value="false"/>
    15. javaTypeResolver>
    16. <javaModelGenerator targetPackage="com.mgy.ssm.model"
    17. targetProject="src/main/java">
    18. <property name="enableSubPackages" value="false"/>
    19. <property name="constructorBased" value="true"/>
    20. <property name="trimStrings" value="false"/>
    21. <property name="immutable" value="false"/>
    22. javaModelGenerator>
    23. <sqlMapGenerator targetPackage="com.mgy.ssm.mapper"
    24. targetProject="src/main/java">
    25. <property name="enableSubPackages" value="false"/>
    26. sqlMapGenerator>
    27. <javaClientGenerator targetPackage="com.mgy.ssm.mapper"
    28. targetProject="src/main/java" type="XMLMAPPER">
    29. <property name="enableSubPackages" value="false"/>
    30. javaClientGenerator>
    31. <table schema="" tableName="t_hibernate_order" domainObjectName="Oreder"
    32. enableCountByExample="false" enableDeleteByExample="false"
    33. enableSelectByExample="false" enableUpdateByExample="false">
    34. table>
    35. <table schema="" tableName="t_hibernate_order_item" domainObjectName="OrederItem"
    36. enableCountByExample="false" enableDeleteByExample="false"
    37. enableSelectByExample="false" enableUpdateByExample="false">
    38. table>
    39. context>
    40. generatorConfiguration>

     

    ②、 创建两个类

    OrderVo:

    1. package com.mgy.ssm.model.vo;
    2. import com.mgy.ssm.model.Oreder;
    3. import com.mgy.ssm.model.OrederItem;
    4. import java.util.List;
    5. /**
    6. * @author 云鹤衫
    7. * @site www.yunheshan.com
    8. * @company xxx公司
    9. * @create  2022-08-15 23:10
    10. *
    11. * vo类不仅仅包含当前表的信息,还能包含相关联表的信息
    12. *
    13. * 当前订单会有一个或者多个订单项,多个订单项必须集合进行接受
    14. */
    15. public class OrderVo extends Oreder{
    16. // 通过订单号查询本次订单的详细信息及对应的所有订单项信息
    17. private List orederItems;
    18. public List getOrederItems() {
    19. return orederItems;
    20. }
    21. public void setOrederItems(List orederItems) {
    22. this.orederItems = orederItems;
    23. }
    24. }

     OrderItemVo类:

    1. package com.mgy.ssm.model.vo;
    2. import com.mgy.ssm.model.Oreder;
    3. import com.mgy.ssm.model.OrederItem;
    4. /**
    5. * @author 云鹤衫
    6. * @site www.yunheshan.com
    7. * @company xxx公司
    8. * @create  2022-08-15 23:14
    9. * 某一个订单项一定属于某个订单的
    10. */
    11. public class OrederItemVo extends OrederItem {
    12. private Oreder oreder;
    13. public Oreder getOreder() {
    14. return oreder;
    15. }
    16. public void setOreder(Oreder oreder) {
    17. this.oreder = oreder;
    18. }
    19. }

     ③、修改OrderMapper.xml

    1. mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    2. <mapper namespace="com.mgy.ssm.mapper.OrederMapper" >
    3. <resultMap id="BaseResultMap" type="com.mgy.ssm.model.Oreder" >
    4. <constructor >
    5. <idArg column="order_id" jdbcType="INTEGER" javaType="java.lang.Integer" />
    6. <arg column="order_no" jdbcType="VARCHAR" javaType="java.lang.String" />
    7. constructor>
    8. resultMap>
    9. <resultMap id="OrderVoMap" type="com.mgy.ssm.model.vo.OrderVo" >
    10. <result column="order_id" property="orderId">result>
    11. <result column="order_no" property="orderNo">result>
    12. <collection property="orederItems" ofType="com.mgy.ssm.model.OrederItem">
    13. <result column="order_item_id" property="orderItemId">result>
    14. <result column="product_id" property="productId">result>
    15. <result column="quantity" property="quantity">result>
    16. <result column="oid" property="oid">result>
    17. collection>
    18. resultMap>
    19. <sql id="Base_Column_List" >
    20. order_id, order_no
    21. sql>
    22. <select id="queryOrderVoByOrderId" resultMap="OrderVoMap" parameterType="java.lang.Integer" >
    23. select
    24. <include refid="Base_Column_List" />
    25. from t_hibernate_order
    26. where order_id = #{orderId,jdbcType=INTEGER}
    27. select>
    28. <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
    29. select * from t_hibernate_order o,t_hibernate_order_item oi
    30. where o.order_id = oi.oid and o.order_id =#{orderId}
    31. select>
    32. <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
    33. delete from t_hibernate_order
    34. where order_id = #{orderId,jdbcType=INTEGER}
    35. delete>
    36. <insert id="insert" parameterType="com.mgy.ssm.model.Oreder" >
    37. insert into t_hibernate_order (order_id, order_no)
    38. values (#{orderId,jdbcType=INTEGER}, #{orderNo,jdbcType=VARCHAR})
    39. insert>
    40. <insert id="insertSelective" parameterType="com.mgy.ssm.model.Oreder" >
    41. insert into t_hibernate_order
    42. <trim prefix="(" suffix=")" suffixOverrides="," >
    43. <if test="orderId != null" >
    44. order_id,
    45. if>
    46. <if test="orderNo != null" >
    47. order_no,
    48. if>
    49. trim>
    50. <trim prefix="values (" suffix=")" suffixOverrides="," >
    51. <if test="orderId != null" >
    52. #{orderId,jdbcType=INTEGER},
    53. if>
    54. <if test="orderNo != null" >
    55. #{orderNo,jdbcType=VARCHAR},
    56. if>
    57. trim>
    58. insert>
    59. <update id="updateByPrimaryKeySelective" parameterType="com.mgy.ssm.model.Oreder" >
    60. update t_hibernate_order
    61. <set >
    62. <if test="orderNo != null" >
    63. order_no = #{orderNo,jdbcType=VARCHAR},
    64. if>
    65. set>
    66. where order_id = #{orderId,jdbcType=INTEGER}
    67. update>
    68. <update id="updateByPrimaryKey" parameterType="com.mgy.ssm.model.Oreder" >
    69. update t_hibernate_order
    70. set order_no = #{orderNo,jdbcType=VARCHAR}
    71. where order_id = #{orderId,jdbcType=INTEGER}
    72. update>
    73. mapper>

     再将以下方法加入到OrederMapper

        OrderVo queryOrderVoByOrderId(@Param("orderId") Integer orderId);
    

     创建OrederBiz接口

    1. package com.mgy.ssm.biz;
    2. import com.mgy.ssm.model.Oreder;
    3. import com.mgy.ssm.model.vo.OrderVo;
    4. import org.apache.ibatis.annotations.Param;
    5. public interface OredeBiz {
    6. int deleteByPrimaryKey(Integer orderId);
    7. int insert(Oreder record);
    8. int insertSelective(Oreder record);
    9. Oreder selectByPrimaryKey(Integer orderId);
    10. OrderVo queryOrderVoByOrderId(Integer orderId);
    11. int updateByPrimaryKeySelective(Oreder record);
    12. int updateByPrimaryKey(Oreder record);
    13. }

     实现类:

    1. package com.mgy.ssm.biz.impl;
    2. import com.mgy.ssm.biz.OredeBiz;
    3. import com.mgy.ssm.mapper.OrederMapper;
    4. import com.mgy.ssm.model.Oreder;
    5. import com.mgy.ssm.model.vo.OrderVo;
    6. import org.springframework.beans.factory.annotation.Autowired;
    7. import org.springframework.stereotype.Service;
    8. /**
    9. * @author 云鹤衫
    10. * @site www.yunheshan.com
    11. * @company xxx公司
    12. * @create  2022-08-15 23:31
    13. */
    14. @Service
    15. public class OredeBizImpl implements OredeBiz {
    16. @Autowired
    17. private OrederMapper orederMapper;
    18. @Override
    19. public int deleteByPrimaryKey(Integer orderId) {
    20. return 0;
    21. }
    22. @Override
    23. public int insert(Oreder record) {
    24. return 0;
    25. }
    26. @Override
    27. public int insertSelective(Oreder record) {
    28. return 0;
    29. }
    30. @Override
    31. public Oreder selectByPrimaryKey(Integer orderId) {
    32. return null;
    33. }
    34. @Override
    35. public OrderVo queryOrderVoByOrderId(Integer orderId) {
    36. return orederMapper.queryOrderVoByOrderId(orderId);
    37. }
    38. @Override
    39. public int updateByPrimaryKeySelective(Oreder record) {
    40. return 0;
    41. }
    42. @Override
    43. public int updateByPrimaryKey(Oreder record) {
    44. return 0;
    45. }
    46. }

     测试类:

    1. package com.mgy.ssm.biz.impl;
    2. import com.mgy.ssm.biz.OredeBiz;
    3. import com.mgy.ssm.model.Oreder;
    4. import com.mgy.ssm.model.vo.OrderVo;
    5. import org.junit.Test;
    6. import org.junit.runner.RunWith;
    7. import org.springframework.beans.factory.annotation.Autowired;
    8. import org.springframework.test.context.ContextConfiguration;
    9. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    10. import static org.junit.Assert.*;
    11. /**
    12. * @author 云鹤衫
    13. * @site www.yunheshan.com
    14. * @company xxx公司
    15. * @create  2022-08-15 23:33
    16. */
    17. @RunWith(SpringJUnit4ClassRunner.class)
    18. @ContextConfiguration(locations={"classpath:applicationContext-mybatis.xml"})
    19. public class OredeBizImplTest {
    20. @Autowired
    21. private OredeBiz oredeBiz;
    22. @Test
    23. public void queryOrderVoByOrderId() {
    24. OrderVo oredervo=oredeBiz.queryOrderVoByOrderId(9);
    25. System.out.println(oredervo);
    26. }
    27. }

     Oreder:

    1. package com.mgy.ssm.model;
    2. import lombok.AllArgsConstructor;
    3. import lombok.Data;
    4. import lombok.NoArgsConstructor;
    5. //t_hibernate_order
    6. // 相当于添加了set/get方法,同时田间tostring方法
    7. /*@NoArgsConstructor
    8. @AllArgsConstructor*/
    9. @Data
    10. public class Oreder {
    11. private Integer orderId;
    12. private String orderNo;
    13. }

    效果:

     ④、修改OrederItemMapper.xml:

    1. mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    2. <mapper namespace="com.mgy.ssm.mapper.OrederItemMapper" >
    3. <resultMap id="BaseResultMap" type="com.mgy.ssm.model.OrederItem" >
    4. <constructor >
    5. <idArg column="order_item_id" jdbcType="INTEGER" javaType="java.lang.Integer" />
    6. <arg column="product_id" jdbcType="INTEGER" javaType="java.lang.Integer" />
    7. <arg column="quantity" jdbcType="INTEGER" javaType="java.lang.Integer" />
    8. <arg column="oid" jdbcType="INTEGER" javaType="java.lang.Integer" />
    9. constructor>
    10. resultMap>
    11. <resultMap id="OrderItemVoMap" type="com.mgy.ssm.model.vo.OrederItemVo" >
    12. <result column="order_item_id" property="orderItemId">result>
    13. <result column="product_id" property="productId">result>
    14. <result column="quantity" property="quantity">result>
    15. <result column="oid" property="oid">result>
    16. <association property="oreder" javaType="com.mgy.ssm.model.Oreder">
    17. <result column="order_id" property="orderId">result>
    18. <result column="order_no" property="orderNo">result>
    19. association>
    20. resultMap>
    21. <sql id="Base_Column_List" >
    22. order_item_id, product_id, quantity, oid
    23. sql>
    24. <select id="queryOrderItemVoByOrderItemId" resultMap="OrderItemVoMap" parameterType="java.lang.Integer" >
    25. select * from t_hibernate_order o,t_hibernate_order_item oi
    26. where o.order_id = oi.oid and oi.order_item_id=#{orderItemId}
    27. select>
    28. <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
    29. select
    30. <include refid="Base_Column_List" />
    31. from t_hibernate_order_item
    32. where order_item_id = #{orderItemId,jdbcType=INTEGER}
    33. select>
    34. <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
    35. delete from t_hibernate_order_item
    36. where order_item_id = #{orderItemId,jdbcType=INTEGER}
    37. delete>
    38. <insert id="insert" parameterType="com.mgy.ssm.model.OrederItem" >
    39. insert into t_hibernate_order_item (order_item_id, product_id, quantity,
    40. oid)
    41. values (#{orderItemId,jdbcType=INTEGER}, #{productId,jdbcType=INTEGER}, #{quantity,jdbcType=INTEGER},
    42. #{oid,jdbcType=INTEGER})
    43. insert>
    44. <insert id="insertSelective" parameterType="com.mgy.ssm.model.OrederItem" >
    45. insert into t_hibernate_order_item
    46. <trim prefix="(" suffix=")" suffixOverrides="," >
    47. <if test="orderItemId != null" >
    48. order_item_id,
    49. if>
    50. <if test="productId != null" >
    51. product_id,
    52. if>
    53. <if test="quantity != null" >
    54. quantity,
    55. if>
    56. <if test="oid != null" >
    57. oid,
    58. if>
    59. trim>
    60. <trim prefix="values (" suffix=")" suffixOverrides="," >
    61. <if test="orderItemId != null" >
    62. #{orderItemId,jdbcType=INTEGER},
    63. if>
    64. <if test="productId != null" >
    65. #{productId,jdbcType=INTEGER},
    66. if>
    67. <if test="quantity != null" >
    68. #{quantity,jdbcType=INTEGER},
    69. if>
    70. <if test="oid != null" >
    71. #{oid,jdbcType=INTEGER},
    72. if>
    73. trim>
    74. insert>
    75. <update id="updateByPrimaryKeySelective" parameterType="com.mgy.ssm.model.OrederItem" >
    76. update t_hibernate_order_item
    77. <set >
    78. <if test="productId != null" >
    79. product_id = #{productId,jdbcType=INTEGER},
    80. if>
    81. <if test="quantity != null" >
    82. quantity = #{quantity,jdbcType=INTEGER},
    83. if>
    84. <if test="oid != null" >
    85. oid = #{oid,jdbcType=INTEGER},
    86. if>
    87. set>
    88. where order_item_id = #{orderItemId,jdbcType=INTEGER}
    89. update>
    90. <update id="updateByPrimaryKey" parameterType="com.mgy.ssm.model.OrederItem" >
    91. update t_hibernate_order_item
    92. set product_id = #{productId,jdbcType=INTEGER},
    93. quantity = #{quantity,jdbcType=INTEGER},
    94. oid = #{oid,jdbcType=INTEGER}
    95. where order_item_id = #{orderItemId,jdbcType=INTEGER}
    96. update>
    97. mapper>

     Collection:一对多的一方,对应关联属性用ofType

    Assoctation:一对多的多方,对应关联属性用javaType

    将以下方法加入到OrederItemMapper

        OrederItemVo queryOrderItemVoByOrderItemId(@Param("orderItemId")Integer orderItemId);
    

     生成接口:

    1. package com.mgy.ssm.biz;
    2. import com.mgy.ssm.model.OrederItem;
    3. import com.mgy.ssm.model.vo.OrederItemVo;
    4. import org.apache.ibatis.annotations.Param;
    5. public interface OrederItemBiz {
    6. int deleteByPrimaryKey(Integer orderItemId);
    7. int insert(OrederItem record);
    8. int insertSelective(OrederItem record);
    9. OrederItem selectByPrimaryKey(Integer orderItemId);
    10. OrederItemVo queryOrderItemVoByOrderItemId(@Param("orderItemId") Integer orderItemId);
    11. int updateByPrimaryKeySelective(OrederItem record);
    12. int updateByPrimaryKey(OrederItem record);
    13. }

    实现类:

    1. package com.mgy.ssm.biz.impl;
    2. import com.mgy.ssm.biz.OrederItemBiz;
    3. import com.mgy.ssm.mapper.OrederItemMapper;
    4. import com.mgy.ssm.model.OrederItem;
    5. import com.mgy.ssm.model.vo.OrederItemVo;
    6. import org.springframework.beans.factory.annotation.Autowired;
    7. import org.springframework.stereotype.Service;
    8. /**
    9. * @author 云鹤衫
    10. * @site www.yunheshan.com
    11. * @company xxx公司
    12. * @create  2022-08-16 0:32
    13. */
    14. @Service
    15. public class OrederItemBizImpl implements OrederItemBiz {
    16. @Autowired
    17. private OrederItemMapper orederItemMapper;
    18. @Override
    19. public int deleteByPrimaryKey(Integer orderItemId) {
    20. return 0;
    21. }
    22. @Override
    23. public int insert(OrederItem record) {
    24. return 0;
    25. }
    26. @Override
    27. public int insertSelective(OrederItem record) {
    28. return 0;
    29. }
    30. @Override
    31. public OrederItem selectByPrimaryKey(Integer orderItemId) {
    32. return null;
    33. }
    34. @Override
    35. public OrederItemVo queryOrderItemVoByOrderItemId(Integer orderItemId) {
    36. return orederItemMapper.queryOrderItemVoByOrderItemId(orderItemId);
    37. }
    38. @Override
    39. public int updateByPrimaryKeySelective(OrederItem record) {
    40. return 0;
    41. }
    42. @Override
    43. public int updateByPrimaryKey(OrederItem record) {
    44. return 0;
    45. }
    46. }

     测试类:

    1. package com.mgy.ssm.biz.impl;
    2. import com.mgy.ssm.biz.OrederItemBiz;
    3. import com.mgy.ssm.model.vo.OrederItemVo;
    4. import org.junit.Test;
    5. import org.junit.runner.RunWith;
    6. import org.springframework.beans.factory.annotation.Autowired;
    7. import org.springframework.test.context.ContextConfiguration;
    8. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    9. import static org.junit.Assert.*;
    10. /**
    11. * @author 云鹤衫
    12. * @site www.yunheshan.com
    13. * @company xxx公司
    14. * @create  2022-08-16 0:36
    15. */
    16. @RunWith(SpringJUnit4ClassRunner.class)
    17. @ContextConfiguration(locations={"classpath:applicationContext-mybatis.xml"})
    18. public class OrederItemBizImplTest {
    19. @Autowired
    20. private OrederItemBiz orederItemBiz;
    21. @Test
    22. public void queryOrderItemVoByOrderItemId() {
    23. OrederItemVo orederItemVo= orederItemBiz.queryOrderItemVoByOrderItemId(43);
    24. System.out.println(orederItemVo);
    25. }
    26. }

     将@ToString加入到OrderItem类上

    效果: 

     

    二、多对多

    概念:比如一本书籍有多个类别,多个类别对多本书

     多对多就是两个一对多

    修改generatorConfig.xml,然后逆向生成

    1. generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
    2. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
    3. <generatorConfiguration>
    4. <properties resource="jdbc.properties"/>
    5. <classPathEntry location="E:\\Maven\\mvn_baoc\\mysql\\mysql-connector-java\\5.1.44\\mysql-connector-java-5.1.44.jar"/>
    6. <context id="infoGuardian">
    7. <commentGenerator>
    8. <property name="suppressAllComments" value="true"/>
    9. <property name="suppressDate" value="true"/>
    10. commentGenerator>
    11. <jdbcConnection driverClass="${jdbc.driver}"
    12. connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"/>
    13. <javaTypeResolver>
    14. <property name="forceBigDecimals" value="false"/>
    15. javaTypeResolver>
    16. <javaModelGenerator targetPackage="com.mgy.ssm.model"
    17. targetProject="src/main/java">
    18. <property name="enableSubPackages" value="false"/>
    19. <property name="constructorBased" value="true"/>
    20. <property name="trimStrings" value="false"/>
    21. <property name="immutable" value="false"/>
    22. javaModelGenerator>
    23. <sqlMapGenerator targetPackage="com.mgy.ssm.mapper"
    24. targetProject="src/main/java">
    25. <property name="enableSubPackages" value="false"/>
    26. sqlMapGenerator>
    27. <javaClientGenerator targetPackage="com.mgy.ssm.mapper"
    28. targetProject="src/main/java" type="XMLMAPPER">
    29. <property name="enableSubPackages" value="false"/>
    30. javaClientGenerator>
    31. <table schema="" tableName="t_hibernate_Book" domainObjectName="Hbook"
    32. enableCountByExample="false" enableDeleteByExample="false"
    33. enableSelectByExample="false" enableUpdateByExample="false">
    34. table>
    35. <table schema="" tableName="t_hibernate_category" domainObjectName="Category"
    36. enableCountByExample="false" enableDeleteByExample="false"
    37. enableSelectByExample="false" enableUpdateByExample="false">
    38. table>
    39. <table schema="" tableName="t_hibernate_book_category" domainObjectName="HbookCategory"
    40. enableCountByExample="false" enableDeleteByExample="false"
    41. enableSelectByExample="false" enableUpdateByExample="false">
    42. table>
    43. context>
    44. generatorConfiguration>

     ②、修改HbookCategoryMapper.xml

    1. mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    2. <mapper namespace="com.mgy.ssm.mapper.HbookCategoryMapper" >
    3. <resultMap id="BaseResultMap" type="com.mgy.ssm.model.HbookCategory" >
    4. <constructor >
    5. <idArg column="bcid" jdbcType="INTEGER" javaType="java.lang.Integer" />
    6. <arg column="bid" jdbcType="INTEGER" javaType="java.lang.Integer" />
    7. <arg column="cid" jdbcType="INTEGER" javaType="java.lang.Integer" />
    8. constructor>
    9. resultMap>
    10. <sql id="Base_Column_List" >
    11. bcid, bid, cid
    12. sql>
    13. <resultMap id="HbookVoMap" type="com.mgy.ssm.model.vo.HbookVo">
    14. <result property="bookId" column="book_id">result>
    15. <result property="bookName" column="book_name">result>
    16. <collection property="categories" ofType="com.mgy.ssm.model.Category">
    17. <result property="categoryId" column="category_id">result>
    18. <result property="categoryName" column="category_name">result>
    19. collection>
    20. resultMap>
    21. <resultMap id="CategoryVoMap" type="com.mgy.ssm.model.vo.CategoryVo">
    22. <result property="categoryId" column="category_id">result>
    23. <result property="categoryName" column="category_name">result>
    24. <collection property="hbooks" ofType="com.mgy.ssm.model.Hbook">
    25. <result property="bookId" column="book_id">result>
    26. <result property="bookName" column="book_name">result>
    27. collection>
    28. resultMap>
    29. <select id="queryByBookId" resultMap="HbookVoMap" parameterType="java.lang.Integer">
    30. select * from t_hibernate_book b,t_hibernate_book_category bc,t_hibernate_category c
    31. where b.book_id = bc.bid and bc.cid = c.category_id and b.book_id = #{bookId}
    32. select>
    33. <select id="queryByCid" resultMap="CategoryVoMap" parameterType="java.lang.Integer">
    34. select * from t_hibernate_book b,t_hibernate_book_category bc,t_hibernate_category c
    35. where b.book_id = bc.bid and bc.cid = c.category_id and c.category_id=#{cid}
    36. select>
    37. <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
    38. select
    39. <include refid="Base_Column_List" />
    40. from t_hibernate_book_category
    41. where bcid = #{bcid,jdbcType=INTEGER}
    42. select>
    43. <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
    44. delete from t_hibernate_book_category
    45. where bcid = #{bcid,jdbcType=INTEGER}
    46. delete>
    47. <insert id="insert" parameterType="com.mgy.ssm.model.HbookCategory" >
    48. insert into t_hibernate_book_category (bcid, bid, cid
    49. )
    50. values (#{bcid,jdbcType=INTEGER}, #{bid,jdbcType=INTEGER}, #{cid,jdbcType=INTEGER}
    51. )
    52. insert>
    53. <insert id="insertSelective" parameterType="com.mgy.ssm.model.HbookCategory" >
    54. insert into t_hibernate_book_category
    55. <trim prefix="(" suffix=")" suffixOverrides="," >
    56. <if test="bcid != null" >
    57. bcid,
    58. if>
    59. <if test="bid != null" >
    60. bid,
    61. if>
    62. <if test="cid != null" >
    63. cid,
    64. if>
    65. trim>
    66. <trim prefix="values (" suffix=")" suffixOverrides="," >
    67. <if test="bcid != null" >
    68. #{bcid,jdbcType=INTEGER},
    69. if>
    70. <if test="bid != null" >
    71. #{bid,jdbcType=INTEGER},
    72. if>
    73. <if test="cid != null" >
    74. #{cid,jdbcType=INTEGER},
    75. if>
    76. trim>
    77. insert>
    78. <update id="updateByPrimaryKeySelective" parameterType="com.mgy.ssm.model.HbookCategory" >
    79. update t_hibernate_book_category
    80. <set >
    81. <if test="bid != null" >
    82. bid = #{bid,jdbcType=INTEGER},
    83. if>
    84. <if test="cid != null" >
    85. cid = #{cid,jdbcType=INTEGER},
    86. if>
    87. set>
    88. where bcid = #{bcid,jdbcType=INTEGER}
    89. update>
    90. <update id="updateByPrimaryKey" parameterType="com.mgy.ssm.model.HbookCategory" >
    91. update t_hibernate_book_category
    92. set bid = #{bid,jdbcType=INTEGER},
    93. cid = #{cid,jdbcType=INTEGER}
    94. where bcid = #{bcid,jdbcType=INTEGER}
    95. update>
    96. mapper>

    创建两个类

    1. package com.mgy.ssm.model.vo;
    2. import com.mgy.ssm.model.Category;
    3. import com.mgy.ssm.model.Hbook;
    4. import java.util.List;
    5. /**
    6. * @author 云鹤衫
    7. * @site www.yunheshan.com
    8. * @company xxx公司
    9. * @create  2022-08-16 0:59
    10. */
    11. public class HbookVo extends Hbook {
    12. private List categories;
    13. public List getCategories() {
    14. return categories;
    15. }
    16. public void setCategories(List categories) {
    17. this.categories = categories;
    18. }
    19. }
    1. package com.mgy.ssm.model.vo;
    2. import com.mgy.ssm.model.Category;
    3. import com.mgy.ssm.model.Hbook;
    4. import java.util.List;
    5. /**
    6. * @author 云鹤衫
    7. * @site www.yunheshan.com
    8. * @company xxx公司
    9. * @create  2022-08-16 1:10
    10. */
    11. public class CategoryVo extends Category {
    12. private List hbooks;
    13. public List getHbooks() {
    14. return hbooks;
    15. }
    16. public void setHbooks(List hbooks) {
    17. this.hbooks = hbooks;
    18. }
    19. }
    将以下代码加入HbookCategoryMapper中
    1. HbookVo queryByBookId(@Param("bookId") Integer bookId);
    2. CategoryVo queryByCid(@Param("cid") Integer cid);

    Biz类:

    1. package com.mgy.ssm.biz;
    2. import com.mgy.ssm.model.HbookCategory;
    3. import com.mgy.ssm.model.vo.CategoryVo;
    4. import com.mgy.ssm.model.vo.HbookVo;
    5. import org.apache.ibatis.annotations.Param;
    6. public interface HbookCategoryBiz {
    7. int deleteByPrimaryKey(Integer bcid);
    8. int insert(HbookCategory record);
    9. int insertSelective(HbookCategory record);
    10. HbookCategory selectByPrimaryKey(Integer bcid);
    11. int updateByPrimaryKeySelective(HbookCategory record);
    12. int updateByPrimaryKey(HbookCategory record);
    13. HbookVo queryByBookId(Integer bookId);
    14. CategoryVo queryByCid(Integer cid);
    15. }

    实现类:

    1. package com.mgy.ssm.biz.impl;
    2. import com.mgy.ssm.biz.HbookCategoryBiz;
    3. import com.mgy.ssm.mapper.HbookCategoryMapper;
    4. import com.mgy.ssm.model.HbookCategory;
    5. import com.mgy.ssm.model.vo.CategoryVo;
    6. import com.mgy.ssm.model.vo.HbookVo;
    7. import org.springframework.beans.factory.annotation.Autowired;
    8. import org.springframework.stereotype.Service;
    9. /**
    10. * @author 云鹤衫
    11. * @site www.yunheshan.com
    12. * @company xxx公司
    13. * @create  2022-08-16 1:37
    14. */
    15. @Service
    16. public class HbookCategoryBizImpl implements HbookCategoryBiz {
    17. @Autowired
    18. private HbookCategoryMapper hbookCategoryMapper;
    19. @Override
    20. public int deleteByPrimaryKey(Integer bcid) {
    21. return 0;
    22. }
    23. @Override
    24. public int insert(HbookCategory record) {
    25. return 0;
    26. }
    27. @Override
    28. public int insertSelective(HbookCategory record) {
    29. return 0;
    30. }
    31. @Override
    32. public HbookCategory selectByPrimaryKey(Integer bcid) {
    33. return null;
    34. }
    35. @Override
    36. public int updateByPrimaryKeySelective(HbookCategory record) {
    37. return 0;
    38. }
    39. @Override
    40. public int updateByPrimaryKey(HbookCategory record) {
    41. return 0;
    42. }
    43. @Override
    44. public HbookVo queryByBookId(Integer bookId) {
    45. return hbookCategoryMapper.queryByBookId(bookId);
    46. }
    47. @Override
    48. public CategoryVo queryByCid(Integer cid) {
    49. return hbookCategoryMapper.queryByCid(cid);
    50. }
    51. }

     测试类:

    1. package com.mgy.ssm.biz.impl;
    2. import com.mgy.ssm.biz.HbookCategoryBiz;
    3. import com.mgy.ssm.model.vo.CategoryVo;
    4. import com.mgy.ssm.model.vo.HbookVo;
    5. import org.junit.Test;
    6. import org.junit.runner.RunWith;
    7. import org.springframework.beans.factory.annotation.Autowired;
    8. import org.springframework.test.context.ContextConfiguration;
    9. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    10. import static org.junit.Assert.*;
    11. /**
    12. * @author 云鹤衫
    13. * @site www.yunheshan.com
    14. * @company xxx公司
    15. * @create  2022-08-16 1:39
    16. */
    17. @RunWith(SpringJUnit4ClassRunner.class)
    18. @ContextConfiguration(locations={"classpath:applicationContext-mybatis.xml"})
    19. public class HbookCategoryBizImplTest {
    20. @Autowired
    21. private HbookCategoryBiz hbookCategoryBiz;
    22. @Test
    23. public void queryByBookId(){
    24. HbookVo hbookVo=hbookCategoryBiz.queryByBookId(8);
    25. System.out.println(hbookVo);
    26. hbookVo.getCategories().forEach(System.out::println);
    27. }
    28. @Test
    29. public void queryByCid(){
    30. CategoryVo categoryVo=hbookCategoryBiz.queryByCid(8);
    31. System.out.println(categoryVo);
    32. categoryVo.getHbooks().forEach(System.out::println);
    33. }
    34. }
    queryByBookId方法效果:
    

     queryByCid方法效果:

     

    
                    
  • 相关阅读:
    记一次 .NET 某零售管理系统 存储不足分析
    VSCode配置MingW编译调试环境
    MySQL VARCHAR(M)最多能存储多少数据
    服务器配置怎么查看
    spring boot在idea中热部署自动更新
    Nacos 2.2.3 部署到linux
    Python多任务编程
    css 利用 linear-gradient 实现条纹背景
    软件测试曾拿过十几份offer的简历是什么样子的?
    [附源码]计算机毕业设计SpringBoot四川景区管理系统
  • 原文地址:https://blog.csdn.net/m0_62604616/article/details/126355709