目录

generatorConfig.xml
- "1.0" encoding="UTF-8" ?>
- generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
- "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
- <generatorConfiguration>
-
- <properties resource="jdbc.properties"/>
-
-
- <classPathEntry location="D:\\SoftwareInstallPath\\repository\\mvn_repository\\mysql\\mysql-connector-java\\5.1.44\\mysql-connector-java-5.1.44.jar"/>
-
-
- <context id="infoGuardian">
-
- <commentGenerator>
- <property name="suppressAllComments" value="true"/>
- <property name="suppressDate" value="true"/>
- commentGenerator>
-
-
- <jdbcConnection driverClass="${jdbc.driver}"
- connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"/>
-
-
- <javaTypeResolver>
-
- <property name="forceBigDecimals" value="false"/>
- javaTypeResolver>
-
-
-
-
- <javaModelGenerator targetPackage="com.ouyang.ssm.Biz.model"
- targetProject="src/main/java">
-
- <property name="enableSubPackages" value="false"/>
-
- <property name="constructorBased" value="true"/>
-
- <property name="trimStrings" value="false"/>
-
- <property name="immutable" value="false"/>
- javaModelGenerator>
-
-
- <sqlMapGenerator targetPackage="com.ouyang.ssm.Biz.mapper"
- targetProject="src/main/java">
-
- <property name="enableSubPackages" value="false"/>
- sqlMapGenerator>
-
-
-
-
-
- <javaClientGenerator targetPackage="com.ouyang.ssm.Biz.mapper"
- targetProject="src/main/java" type="XMLMAPPER">
-
- <property name="enableSubPackages" value="false"/>
- javaClientGenerator>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <table schema="" tableName="t_hibernate_order" domainObjectName="Order"
- enableCountByExample="false" enableDeleteByExample="false"
- enableSelectByExample="false" enableUpdateByExample="false">
- table>
-
- <table schema="" tableName="t_hibernate_order_item" domainObjectName="OrderItem"
- enableCountByExample="false" enableDeleteByExample="false"
- enableSelectByExample="false" enableUpdateByExample="false">
- table>
-
- context>
- generatorConfiguration>

vo类
view Object:视图对象
OrderVo
- package com.ouyang.ssm.Biz.model.vo;
-
- import com.ouyang.ssm.Biz.model.Order;
- import com.ouyang.ssm.Biz.model.OrderItem;
-
- import java.util.List;
-
- /**
- * @author oyang
- * @site https://blog.csdn.net
- * @qq 1828190940
- * @create 2022-08-16 11:44
- *
- * vo类不仅仅包含当前表的信息,还能包含相关联表的信息
- *
- * 当前订单可能会有一个或多个订单项,多个订单项必须要用集合进行接收
- */
-
- public class OrderVo extends Order {
- //通过订单号查询本次订单的详细信息以及对应所有订单
- private List
orderItems; -
- public List
getOrderItems() { - return orderItems;
- }
-
- public void setOrderItems(List
orderItems) { - this.orderItems = orderItems;
- }
- }
OrderItemVo
- package com.ouyang.ssm.Biz.model.vo;
-
- import com.ouyang.ssm.Biz.model.Order;
-
- /**
- * @author oyang
- * @site https://blog.csdn.net
- * @qq 1828190940
- * @create 2022-08-16 11:47
- *
- * 某一个订单项一定属于某个订单的
- *
- */
- public class OrderItemVo {
- private Order order;
-
- public Order getOrder() {
- return order;
- }
-
- public void setOrder(Order order) {
- this.order = order;
- }
- }
@Data相当于添加了set/get/tostr方法
@NoArgsConstructor //无参构造器
@AllArgsConstructor //有参构造器@ToString //toString
- package com.ouyang.ssm.Biz.model;
-
- import lombok.Data;
-
- //t_hibernate_order
- //@Data相当于添加了set/get/tostr方法
- //@NoArgsConstructor //无参构造器
- //@AllArgsConstructor //有参构造器
- @Data
- public class Order {
- private String orderId;
-
- private String orderNo;
-
- /* public Order(String orderId, String orderNo) {
- this.orderId = orderId;
- this.orderNo = orderNo;
- }
- public Order() {
- super();
- }
- public String getOrderId() {
- return orderId;
- }
- public void setOrderId(String orderId) {
- this.orderId = orderId;
- }
- public String getOrderNo() {
- return orderNo;
- }
- public void setOrderNo(String orderNo) {
- this.orderNo = orderNo;
- }*/
- }
- package com.ouyang.ssm.Biz.model;
-
- import lombok.ToString;
-
- @ToString
- public class OrderItem {
- private String orderItemId;
-
- private String productId;
-
- private String quantity;
-
- private String oid;
-
- public OrderItem(String orderItemId, String productId, String quantity, String oid) {
- this.orderItemId = orderItemId;
- this.productId = productId;
- this.quantity = quantity;
- this.oid = oid;
- }
-
- public OrderItem() {
- super();
- }
-
- public String getOrderItemId() {
- return orderItemId;
- }
-
- public void setOrderItemId(String orderItemId) {
- this.orderItemId = orderItemId;
- }
-
- public String getProductId() {
- return productId;
- }
-
- public void setProductId(String productId) {
- this.productId = productId;
- }
-
- public String getQuantity() {
- return quantity;
- }
-
- public void setQuantity(String quantity) {
- this.quantity = quantity;
- }
-
- public String getOid() {
- return oid;
- }
-
- public void setOid(String oid) {
- this.oid = oid;
- }
- }
一条记录属于哪一条主记录的从记录
修改OrderMapper.xml
- "1.0" encoding="UTF-8" ?>
- mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
- <mapper namespace="com.ouyang.ssm.Biz.mapper.OrderMapper" >
- <resultMap id="BaseResultMap" type="com.ouyang.ssm.Biz.model.Order" >
- <constructor >
- <arg column="order_id" jdbcType="VARCHAR" javaType="java.lang.String" />
- <arg column="order_no" jdbcType="VARCHAR" javaType="java.lang.String" />
- constructor>
- resultMap>
-
- <resultMap id="OrderVoMap" type="com.ouyang.ssm.Biz.model.vo.OrderVo" >
- <result column="order_id" property="orderId">result>
- <result column="order_no" property="orderNo">result>
- <collection property="orderItems" ofType="com.ouyang.ssm.Biz.model.OrderItem">
- <result column="order_item_id" property="orderItemId">result>
- <result column="product_id" property="productId">result>
- <result column="quantity" property="quantity">result>
- <result column="oid" property="oid">result>
- collection>
- resultMap>
-
- <sql id="Base_Column_List">
- order_id,order_no
- sql>
- <select id="queryOrderVoByOrderId" resultMap="OrderVoMap" parameterType="java.lang.Integer">
- select * from t_hibernate_order o,t_hibernate_order_item oi
- where o.order_id = oi.oid and o.order_id=#{orderId}
- select>
- <insert id="insert" parameterType="com.ouyang.ssm.Biz.model.Order" >
- insert into t_hibernate_order (order_id, order_no)
- values (#{orderId,jdbcType=VARCHAR}, #{orderNo,jdbcType=VARCHAR})
- insert>
- <insert id="insertSelective" parameterType="com.ouyang.ssm.Biz.model.Order" >
- insert into t_hibernate_order
- <trim prefix="(" suffix=")" suffixOverrides="," >
- <if test="orderId != null" >
- order_id,
- if>
- <if test="orderNo != null" >
- order_no,
- if>
- trim>
- <trim prefix="values (" suffix=")" suffixOverrides="," >
- <if test="orderId != null" >
- #{orderId,jdbcType=VARCHAR},
- if>
- <if test="orderNo != null" >
- #{orderNo,jdbcType=VARCHAR},
- if>
- trim>
- insert>
- mapper>
OrderMapper
- package com.ouyang.ssm.Biz.mapper;
-
- import com.ouyang.ssm.Biz.model.vo.OrderVo;
- import org.apache.ibatis.annotations.Param;
-
- public interface OrderMapper {
-
- OrderVo queryOrderVoByOrderId(@Param("orderId") Integer orderId);
- }
OrederBiz接口
- package com.ouyang.ssm.Biz;
-
- import com.ouyang.ssm.Biz.model.vo.OrderVo;
-
- /**
- * @author oyang
- * @site https://blog.csdn.net
- * @qq 1828190940
- * @create 2022-08-16 12:02
- */
- public interface OrderBiz {
- OrderVo queryOrderVoByOrderId(Integer orderId);
-
- }
OrderBizImpl 实现Oreder接口
- package com.ouyang.ssm.Biz.impl;
-
- import com.ouyang.ssm.Biz.OrderBiz;
- import com.ouyang.ssm.Biz.mapper.OrderMapper;
- import com.ouyang.ssm.Biz.model.Order;
- import com.ouyang.ssm.Biz.model.vo.OrderVo;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
-
- /**
- * @author oyang
- * @site https://blog.csdn.net
- * @qq 1828190940
- * @create 2022-08-16 12:04
- */
- @Service
- public class OrderBizImpl implements OrderBiz {
- @Autowired
- private OrderMapper orderMapper;
- @Override
- public OrderVo queryOrderVoByOrderId(Integer orderId) {
- return orderMapper.queryOrderVoByOrderId(orderId);
- }
- }
测试
- package com.ouyang.ssm.Biz.impl;
-
- import com.ouyang.ssm.Biz.OrderBiz;
- import com.ouyang.ssm.Biz.model.vo.OrderVo;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.test.context.ContextConfiguration;
- import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
- /**
- * @author oyang
- * @site https://blog.csdn.net
- * @qq 1828190940
- * @create 2022-08-16 12:16
- */
- @RunWith(SpringJUnit4ClassRunner.class)
- @ContextConfiguration(locations={"classpath:applocationContext-mybatis.xml"})
- public class OrderBizImplTest {
- @Autowired
- private OrderBiz orderBiz;
- @Test
- public void queryOrderVoByOrderId() {
- OrderVo orderVo = orderBiz.queryOrderVoByOrderId(9);
- System.out.println(orderVo);
- }
- }

修改OrderItemMapper.xml
- "1.0" encoding="UTF-8" ?>
- mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
- <mapper namespace="com.ouyang.ssm.Biz.mapper.OrderItemMapper" >
- <resultMap id="BaseResultMap" type="com.ouyang.ssm.Biz.model.OrderItem" >
- <constructor >
- <arg column="order_item_id" jdbcType="VARCHAR" javaType="java.lang.String" />
- <arg column="product_id" jdbcType="VARCHAR" javaType="java.lang.String" />
- <arg column="quantity" jdbcType="VARCHAR" javaType="java.lang.String" />
- <arg column="oid" jdbcType="VARCHAR" javaType="java.lang.String" />
- constructor>
- resultMap>
-
- <resultMap id="OrderItemVoMap" type="com.ouyang.ssm.Biz.model.vo.OrderItemVo" >
- <result column="order_item_id" property="orderItemId">result>
- <result column="product_id" property="productId">result>
- <result column="quantity" property="quantity">result>
- <result column="oid" property="oid">result>
- <association property="order" javaType="com.ouyang.ssm.Biz.model.Order">
- <result column="order_id" property="orderId">result>
- <result column="order_no" property="orderNo">result>
- association>
- resultMap>
-
- <sql id="Base_Column_List">
- order_item_id,product_id,quantity,oid
- sql>
-
- <select id="queryOrderVoByOrderItemId" resultMap="OrderItemVoMap" parameterType="java.lang.Integer">
- select * from t_hibernate_order o,t_hibernate_order_item oi
- where o.order_id = oi.oid and oi.order_item_id=#{orderItemId}
- select>
-
- <insert id="insert" parameterType="com.ouyang.ssm.Biz.model.OrderItem" >
- insert into t_hibernate_order_item (order_item_id, product_id, quantity,
- oid)
- values (#{orderItemId,jdbcType=VARCHAR}, #{productId,jdbcType=VARCHAR}, #{quantity,jdbcType=VARCHAR},
- #{oid,jdbcType=VARCHAR})
- insert>
- <insert id="insertSelective" parameterType="com.ouyang.ssm.Biz.model.OrderItem" >
- insert into t_hibernate_order_item
- <trim prefix="(" suffix=")" suffixOverrides="," >
- <if test="orderItemId != null" >
- order_item_id,
- if>
- <if test="productId != null" >
- product_id,
- if>
- <if test="quantity != null" >
- quantity,
- if>
- <if test="oid != null" >
- oid,
- if>
- trim>
- <trim prefix="values (" suffix=")" suffixOverrides="," >
- <if test="orderItemId != null" >
- #{orderItemId,jdbcType=VARCHAR},
- if>
- <if test="productId != null" >
- #{productId,jdbcType=VARCHAR},
- if>
- <if test="quantity != null" >
- #{quantity,jdbcType=VARCHAR},
- if>
- <if test="oid != null" >
- #{oid,jdbcType=VARCHAR},
- if>
- trim>
- insert>
- mapper>
OrderItemMapper
- package com.ouyang.ssm.Biz.mapper;
-
- import com.ouyang.ssm.Biz.model.OrderItem;
- import com.ouyang.ssm.Biz.model.vo.OrderItemVo;
- import org.apache.ibatis.annotations.Param;
-
- public interface OrderItemMapper {
- int insert(OrderItem record);
-
- int insertSelective(OrderItem record);
-
- OrderItemVo queryOrderVoByOrderItemId(@Param("orderItemId")Integer orderItemId);
- }
OrderItemBiz
- package com.ouyang.ssm.Biz;
-
- import com.ouyang.ssm.Biz.model.OrderItem;
- import com.ouyang.ssm.Biz.model.vo.OrderItemVo;
-
- public interface OrderItemBiz {
- int insert(OrderItem record);
-
- int insertSelective(OrderItem record);
-
- OrderItemVo queryOrderVoByOrderItemId(Integer orderItemId);
- }
OrderItemBizImpl 实现OrderItemBiz接口
- package com.ouyang.ssm.Biz.impl;
-
- import com.ouyang.ssm.Biz.OrderItemBiz;
- import com.ouyang.ssm.Biz.model.OrderItem;
- import com.ouyang.ssm.Biz.model.vo.OrderItemVo;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
-
- /**
- * @author oyang
- * @site https://blog.csdn.net
- * @qq 1828190940
- * @create 2022-08-16 12:26
- */
- @Service
- public class OrderItemBizImpl implements OrderItemBiz {
- @Autowired
- private OrderItemBiz orderItemBiz;
- @Override
- public int insert(OrderItem record) {
- return 0;
- }
-
- @Override
- public int insertSelective(OrderItem record) {
- return 0;
- }
-
- @Override
- public OrderItemVo queryOrderVoByOrderItemId(Integer orderItemId) {
-
- return orderItemBiz.queryOrderVoByOrderItemId(orderItemId);
- }
- }
测试
- package com.ouyang.ssm.Biz.impl;
-
- import com.ouyang.ssm.Biz.OrderItemBiz;
- import com.ouyang.ssm.Biz.model.vo.OrderItemVo;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.test.context.ContextConfiguration;
- import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
- /**
- * @author oyang
- * @site https://blog.csdn.net
- * @qq 1828190940
- * @create 2022-08-16 12:28
- */
- @RunWith(SpringJUnit4ClassRunner.class)
- @ContextConfiguration(locations={"classpath:applocationContext-mybatis.xml"})
- public class OrderItemBizImplTest {
- @Autowired
- private OrderItemBiz orderItemBiz;
-
- @Test
- public void queryOrderVoByOrderItemId() {
- OrderItemVo orderItemVo = orderItemBiz.queryOrderVoByOrderItemId(42);
- System.out.println(orderItemVo);
- System.out.println(orderItemVo.getOrder());
- }
- }

Collection:一对多的一方,对应关联属性用ofType
Assoctation:一对多的多方,对应关联属性用javaType
概念:比如一本书籍有多个类别,多个类别对多本书

generatorConfig.xml
- "1.0" encoding="UTF-8" ?>
- generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
- "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
- <generatorConfiguration>
-
- <properties resource="jdbc.properties"/>
-
-
- <classPathEntry location="D:\\SoftwareInstallPath\\repository\\mvn_repository\\mysql\\mysql-connector-java\\5.1.44\\mysql-connector-java-5.1.44.jar"/>
-
-
- <context id="infoGuardian">
-
- <commentGenerator>
- <property name="suppressAllComments" value="true"/>
- <property name="suppressDate" value="true"/>
- commentGenerator>
-
-
- <jdbcConnection driverClass="${jdbc.driver}"
- connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"/>
-
-
- <javaTypeResolver>
-
- <property name="forceBigDecimals" value="false"/>
- javaTypeResolver>
-
-
-
-
- <javaModelGenerator targetPackage="com.ouyang.ssm.Biz.model"
- targetProject="src/main/java">
-
- <property name="enableSubPackages" value="false"/>
-
- <property name="constructorBased" value="true"/>
-
- <property name="trimStrings" value="false"/>
-
- <property name="immutable" value="false"/>
- javaModelGenerator>
-
-
- <sqlMapGenerator targetPackage="com.ouyang.ssm.Biz.mapper"
- targetProject="src/main/java">
-
- <property name="enableSubPackages" value="false"/>
- sqlMapGenerator>
-
-
-
-
-
- <javaClientGenerator targetPackage="com.ouyang.ssm.Biz.mapper"
- targetProject="src/main/java" type="XMLMAPPER">
-
- <property name="enableSubPackages" value="false"/>
- javaClientGenerator>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <table schema="" tableName="t_hibernate_book" domainObjectName="Book"
- enableCountByExample="false" enableDeleteByExample="false"
- enableSelectByExample="false" enableUpdateByExample="false">
- table>
-
- <table schema="" tableName="t_hibernate_category" domainObjectName="Category"
- enableCountByExample="false" enableDeleteByExample="false"
- enableSelectByExample="false" enableUpdateByExample="false">
- table>
-
- <table schema="" tableName="t_hibernate_book_category" domainObjectName="BookCategory"
- enableCountByExample="false" enableDeleteByExample="false"
- enableSelectByExample="false" enableUpdateByExample="false">
- table>
- context>
- generatorConfiguration>

BookVo
- package com.ouyang.ssm.Biz.model.vo;
-
- import com.ouyang.ssm.Biz.model.Book;
- import com.ouyang.ssm.Biz.model.Category;
-
- import java.util.List;
-
- /**
- * @author oyang
- * @site https://blog.csdn.net
- * @qq 1828190940
- * @create 2022-08-17 8:24
- */
- public class BookVo extends Book {
- private List
categories; -
- public List
getCategories() { - return categories;
- }
-
- public void setCategories(List
categories) { - this.categories = categories;
- }
- }
CategoryVo
- package com.ouyang.ssm.Biz.model.vo;
-
- import com.ouyang.ssm.Biz.model.Book;
- import com.ouyang.ssm.Biz.model.Category;
-
- import java.util.List;
-
- /**
- * @author oyang
- * @site https://blog.csdn.net
- * @qq 1828190940
- * @create 2022-08-17 8:27
- */
- public class CategoryVo extends Category {
- private List
books; -
- public List
getBooks() { - return books;
- }
-
- public void setBooks(List
books) { - this.books = books;
- }
- }
BookCategoryVo
- package com.ouyang.ssm.Biz.model.vo;
-
- import com.ouyang.ssm.Biz.model.Book;
- import com.ouyang.ssm.Biz.model.BookCategory;
-
- import java.util.List;
-
- /**
- * @author oyang
- * @site https://blog.csdn.net
- * @qq 1828190940
- * @create 2022-08-17 8:25
- */
- public class BookCategoryVo extends BookCategory {
- private List
books; -
- public List
getBooks() { - return books;
- }
-
- public void setBooks(List
books) { - this.books = books;
- }
- }