准备
SQL
1 | CREATE DATABASE test |
SQL
1 | CREATE DATABASE test |
mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper.xml、po..)
企业实际开发中,常用的逆向工程方式:由数据库的表生成java代码。
先附上官网链接:
我们系统为了提高系统并发,性能、一般对系统进行分布式部署(集群部署方式)
不使用分布缓存,缓存的数据在各各服务单独存储,不方便系统开发。所以要使用分布式缓存对缓存数据进行集中管理。
mybatis无法实现分布式缓存,需要和其它分布式缓存框架进行整合。
mybatis提供了一个cache
接口,如果要实现自己的缓存逻辑,实现cache
接口开发即可。
本文主要讲mybatis的二级缓存,二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。
mybatis提供查询缓存,用于减轻数据压力,提高数据库性能。
mybaits提供一级缓存,和二级缓存。
一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。
查询主表是:用户表
关联表:由于用户和商品没有直接关联,通过订单和订单明细进行关联,所以关联表:orders、orderdetail、items
1 | SELECT |
resultMap可以实现高级映射(使用association
、collection
实现一对一及一对多映射),association
、collection
具备延迟加载功能。
延迟加载:先从单表查询、需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张表速度要快。
需求:
如果查询订单并且关联查询用户信息。如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息。把对用户信息的按需去查询就是延迟加载。
确定主查询表:订单表
确定关联查询表:订单明细表
在一对一查询基础上添加订单明细表关联即可。
1 | SELECT |
分模块对每张表记录的内容进行熟悉,相当于你学习系统需求(功能)的过程。
非空字段、外键字段
外键关系
在分析表与表之间的业务关系时一定要建立在某个业务意义基础上去分析。
MyBatis Mapper 配置 resultType 与 resultMap
输出映射有两种方式
resultType
resultMap
resultType
进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。