Mapper课01

来源:互联网 发布:ddp软件 编辑:程序博客网 时间:2024/05/16 04:47

1.POJO对象类

1.1 User

private int id;private String username; // 用户姓名private String sex;      // 性别private Date birthday;   // 生日private String address;  // 地址//用户创建的订单列表private List<Orders> ordersList;



1.2 Orders

private Integer id;private Integer userId;private String number;private Date createtime;private String note;    //用户信息private User user;    //订单明细private List<Orderdetail> orderdetails;


1.3 Orderdetail

private Integer id;private Integer ordersId;private Integer itemsId;private Integer itemsNum;    //明细对应的商品信息private Items items;  // 不用生成getter&setter方法


1.4 Items

private Integer id;private String name;private Float price;private String pic;private Date createtime;private String detail;


2.Mapper.xml文件

模块设计

一对多查询

<!-- 订单及订单明细 --><resultMap type="com.app.mybatis.po.Orders" id="OrdersAndOrderDetailResultMap" extends="OrdersUserResultMap"><id column="id" property="id"/><result column="user_id" property="userId"/><result column="number" property="number"/><result column="createtime" property="createtime"/><result column="note" property="note"/><association property="user" javaType="com.app.mybatis.po.User"><id column="user_id" property="id"/><result column="username" property="username"/><result column="sex" property="sex"/><result column="address" property="address"/></association><collection property="orderdetails" ofType="com.app.mybatis.po.Orderdetail"><id column="orderdetail_id" property="id" /><result column="items_id" property="itemsId"/> <result column="items_num" property="itemsNum"/> <result column="orders_id" property="ordersId"/></collection></resultMap>
<!-- 订单及订单明细 --><select id="findOrdersAndOrderDetailResultMap" resultMap="OrdersAndOrderDetailResultMap">SELECT   orders.*,  USER.username,  USER.sex,  USER.address,  orderdetail.id orderdetail_id,  orderdetail.items_id,  orderdetail.items_num,  orderdetail.orders_idFROM  orders,  USER,  orderdetailWHERE orders.user_id = user.id AND orderdetail.orders_id=orders.id</select>



多对多查询

<!-- 查询用户及购买的商品 --><resultMap type="com.app.mybatis.po.User" id="UserAndItemsResultMap"><!-- 用户信息 --><id column="user_id" property="id" /><result column="sex" property="sex" /><result column="address" property="address" /><!-- 订单信息 --><collection property="ordersList" ofType="com.app.mybatis.po.Orders"><id column="id" property="id" /><result column="user_id" property="userId" /><result column="number" property="number" /><result column="createtime" property="createtime" /><result column="note" property="note" /><!-- 订单明细 --><collection property="orderdetails" ofType="com.app.mybatis.po.Orderdetail"><id column="orderdetail_id" property="id" /><result column="items_id" property="itemsId" /><result column="items_num" property="itemsNum" /><result column="orders_id" property="ordersId" /><!-- 商品信息 --><association property="items" javaType="com.app.mybatis.po.Items"><id column="items_id" property="id" /><result column="items_name" property="name" /><result column="items_detail" property="detail" /><result column="items_price" property="price" /></association></collection></collection></resultMap>
<!-- 查询用户及购买的商品 --><select id="findUserAndItemsResultMap" resultMap="UserAndItemsResultMap">SELECT    ORDERS.*,    USER.username,    USER.sex,    USER.address,    ORDERDETAIL.id orderdetail_id,    ORDERDETAIL.items_id,    ORDERDETAIL.items_num,    ORDERDETAIL.orders_id,    ITEMS.name items_name,    ITEMS.detail items_detail,    ITEMS.price items_priceFROM    ORDERS,    USER,    ORDERDETAIL,    ITEMSWHERE     ORDERS.user_id = user.id AND ORDERDETAIL.orders_id = orders.id</select>




延迟加载

<!-- 延迟加载resultMap --><resultMap type="com.app.mybatis.po.Orders" id="OrdersUserLazyLoadingResultMap"><id column="id" property="id" /><result column="user_id" property="userId" /><result column="number" property="number" /><result column="createtime" property="createtime" /><result column="note" property="note" /><!-- 实现对用户信息进行延迟加载 --><association property="user" javaType="com.app.mybatis.po.User" select="com.app.mybatis.mapper.UserMapper.findUserById" column="user_id"></association></resultMap><!-- 查询订单关联查询用户,用户信息需要延迟加载 --><select id="findOrdersUserLazyLoading" resultMap="OrdersUserLazyLoadingResultMap">SELECT * FROM ORDERS</select>

SqlMapConfig.xml中配置

<span style="white-space:pre"></span><settings><setting name="lazyLoadingEnabled" value="true" /><setting name="aggressiveLazyLoading" value="false" /></settings>





3.Mapper.java接口类

public interface OrdersMapperCustom

// 查询订单(关联用户)及订单明细public List<Orders> findOrdersAndOrderDetailResultMap() throws Exception;

// 查询用户及购买的商品public List<User> findUserAndItemsResultMap() throws Exception;

// 延迟加载public List<Orders> findOrdersUserLazyLoading() throws Exception;




4.实现接口类--单元测试

@Testpublic void testFindOrdersAndOrderDetailResultMap() throws Exception {SqlSession sqlSession = sqlSessionFactory.openSession();// 创建代理对象OrdersMapperCustom ordersMapperCustom = sqlSession.getMapper(OrdersMapperCustom.class);// 调用maper的方法List<Orders> list = ordersMapperCustom.findOrdersAndOrderDetailResultMap();System.out.println(list);sqlSession.close();}


查询用户及购买的商品

List<User> list = ordersMapperCustom.findUserAndItemsResultMap();


延迟加载

// 延迟加载@Testpublic void testFindOrdersUserLazyLoading() throws Exception {SqlSession sqlSession = sqlSessionFactory.openSession();// 创建代理对象OrdersMapperCustom ordersMapperCustom = sqlSession.getMapper(OrdersMapperCustom.class);// 调用maper的方法List<Orders> list = ordersMapperCustom.findOrdersUserLazyLoading();for (Orders orders:list) {User user = orders.getUser();System.out.println(user);}}



一级缓存测试

// 一级缓存测试@Testpublic void testCache1() throws Exception{SqlSession sqlSession = sqlSessionFactory.openSession();UserMapper userMapper = sqlSession.getMapper(UserMapper.class);User user1 = userMapper.findUserById(1);System.out.println(user1);/*user1.setUsername("测试用户2");userMapper.updateUser(user1);sqlSession.commit();*/User user2 = userMapper.findUserById(1);System.out.println(user2);sqlSession.close();}




5

6

0 0
原创粉丝点击