MyBatis 示例-简介
简介
为了全面熟悉 MyBatis 的使用,整理一个 MyBatis 的例子,案例中包含了映射器、动态 SQL 的使用。本章先介绍项目结构和配置。
项目结构
- 项目框架:Spring Boot、MyBatis、Mybatis-PageHelper、Druid、Swagger;
- db 目录存放数据库 SQL 文件,项目中使用的表可以通过该 SQL 创建;
- com.yjw.demo.mybatis.biz 目录存放业务相关的类;
- com.yjw.demo.mybatis.common 目录存放公共配置类;
- Application 类为启动类;
- resources 目录下存放配置文件;
如何启动项目
- 在数据库中建表,建表语句在 db 目录
- 修改 application.yml 配置,通过 Application 类启动项目
配置
数据源配置
#druid数据源
spring:
datasource:
druid:
url: jdbc:mysql://localhost:3306/mybatis-demo?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&allowMultiQueries=true&useSSL=true
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
initial-size: 5
max-active: 100
min-idle: 5
max-wait: 60000
pool-prepared-statements: false
max-pool-prepared-statement-per-connection-size: 200
validation-query: SELECT 'x'
test-on-borrow: false
test-on-return: false
test-while-idle: true
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
filters: stat
MyBatis 配置
#mybatis配置
mybatis:
type-aliases-package: com.yjw.demo.mybatis.biz.pojo.entity;com.yjw.demo.mybatis.biz.pojo.query
mapper-locations: classpath:mapper/*.xml
configuration:
lazy-loading-enabled: true
aggressive-lazy-loading: false
- type-aliases-package:它一般对应我们的实体类所在的包,这个时候会自动取对应包中类名作为别名,不区分大小写,多个 package 之间可以用逗号或者分号等来进行分隔;
- mapper-locations:映射文件地址;
- lazy-loading-enabled:开启延迟加载,使得关联属性都按需加载,而不自动加载;
- aggressive-lazy-loading:设置为 true 时,MyBatis 的内容按层级加载,相同层级的数据会被加载出来,比如加载学生信息的时候,它会根据鉴别器去找到健康的情况,而当我们访问课程成绩的时候,由于学生证和课程成绩是一个层级,它也会去访问学生证的信息;
lazy-loading-enabled、aggressive-lazy-loading 这两个配置在级联那块会详细描述。
注意:如果这里配置了 configuration,MyBatis 配置文件(mybatis-config.xml)中就不能再配置了,两个地方都配置存在冲突,不能共用。
Dao 扫描配置
/**
* 启动,配置类
*
* @author yinjianwei
* @date 2017/12/06
*/
@SpringBootApplication
@MapperScan("com.yjw.demo.mybatis.biz.dao")
public class Application { public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
} }
启动类 Application 中配置了 @MapperScan 会自动扫描该路径下的所有 Mapper 类。
MyBatis 实用篇
MyBatis 示例-简介的更多相关文章
- MyBatis 示例-传递多个参数
映射器的主要元素: 本章介绍 select 元素中传递多个参数的处理方式. 测试类:com.yjw.demo.MulParametersTest 使用 Map 传递参数(不建议使用) 使用 MyBat ...
- MyBatis 示例-类型处理器
MyBatis 提供了很多默认类型处理器,参考官网地址:链接,除了官网提供的类型处理器,我们也可以自定义类型处理器. 具体做法为:实现 org.apache.ibatis.type.TypeHandl ...
- MyBatis 示例-联合查询
简介 MyBatis 提供了两种联合查询的方式,一种是嵌套查询,一种是嵌套结果.先说结论:在项目中不建议使用嵌套查询,会出现性能问题,可以使用嵌套结果. 测试类:com.yjw.demo.JointQ ...
- MyBatis 示例-缓存
MyBatis 提供两种类型的缓存,一种是一级缓存,另一种是二级缓存,本章通过例子的形式描述 MyBatis 缓存的使用. 测试类:com.yjw.demo.CacheTest 一级缓存 MyBati ...
- MyBatis 示例-动态 SQL
MyBatis 的动态 SQL 包括以下几种元素: 详细的使用参考官网文档:http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html 本章内容简单描述这 ...
- MyBatis 示例-插件
简介 利用 MyBatis Plugin 插件技术实现分页功能. 分页插件实现思路如下: 业务代码在 ThreadLocal 中保存分页信息: MyBatis Interceptor 拦截查询请求,获 ...
- MyBatis 示例-主键回填
测试类:com.yjw.demo.PrimaryKeyTest 自增长列 数据库表的主键为自增长列,在写业务代码的时候,经常需要在表中新增一条数据后,能获得这条数据的主键 ID,MyBatis 提供了 ...
- Unit07: MyBatis框架简介 、 MyBatis基本应用
Unit07: MyBatis框架简介 . MyBatis基本应用 1. myBatis (1)myBatis是什么? 是一个开源的持久层框架. 注:myBatis底层仍然是jdbc. (2)编程步骤 ...
- Mybatis 示例之 复杂(complex)属性(property)
Mybatis示例专栏:http://blog.csdn.net/column/details/mybatis-sample.html Mybatis的复杂属性,Mybatis的这个特点很少被提及,但 ...
随机推荐
- ES6入门八:Promise异步编程与模拟实现源码
Promise的基本使用入门: ——实例化promise对象与注册回调 ——宏任务与微任务的执行顺序 ——then方法的链式调用与抛出错误(throw new Error) ——链式调用的返回值与传值 ...
- Widget 基础
一切皆Widget Widget 渲染过程 Flutter把视图数据的组织和渲染抽象为三部分,即 Widget.Element 和 RenderObject. Widget Widget 是空间实现的 ...
- 2018年蓝桥杯java b组第五题
标题:快速排序 以下代码可以从数组a[]中找出第k小的元素. 它使用了类似快速排序中的分治算法,期望时间复杂度是O(N)的. 请仔细阅读分析源码,填写划线部分缺失的内容. 我在使用(a, l, r, ...
- 第六届蓝桥杯java b组第四题
第四题 两个整数做除法,有时会产生循环小数,其循环部分称为:循环节. 比如,11/13=6=>0.846153846153….. 其循环节为[846153] 共有6位. 下面的方法,可以求出循环 ...
- layer.open打开一个新的jsp页面,如何关闭并刷新父页面问题
layer.open打开一个新的jsp页面弹框,如何关闭呢? 在新的页面提交完毕之后,关闭并刷新父页面列表. layer.closeAll(); parent.layer.closeAll(); wi ...
- ps 将图片四角变成圆角
1.用PS打开一张图片,用矩形选框工具,选出你要保留的的那一部分,“选择→修改→平滑”.在弹出的选框里添入数值,值越大角就越圆. 2.选择“选择→反选”,再按delete删除就ok了.
- 使用Hexo开源博客系统,轻松搭建你的个人博客(1)
Hexo 是一个轻量级.简洁.高效且高逼格的博客框架.Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页.同时有着丰富的主题,官网或者GitHub都可 ...
- Postgressql高可用(pgpool+异步流复制)
文档结构: 由于博主之前是Oracle dba,oracle 高可用一般是rac,以及搭建ADG,一个是基于实例的高可用,一个是基于数据的容灾,甚至也有rac+adg的方式.Postgres有同步和异 ...
- Python——Pandas速查手册中文版
转自——http://blog.csdn.net/qq_33399185/article/details/60872853,非常感谢大神的整理! 还有图片版,转自——https://zhuanlan. ...
- 洛谷:P3384 [HNOI2004]宠物收养场
原题地址:https://www.luogu.org/problemnew/show/P3384 题目简述 给定一些序列(没有重复数字),每个序列支持: 给定一些数k(对于每个序列不重复),每次在序列 ...