简介

为了全面熟悉 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 目录下存放配置文件;

如何启动项目

  1. 在数据库中建表,建表语句在 db 目录
  2. 修改 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 示例-简介

MyBatis 示例-类型处理器

MyBatis 示例-传递多个参数

MyBatis 示例-主键回填

MyBatis 示例-动态 SQL

MyBatis 示例-联合查询

MyBatis 示例-缓存

MyBatis 示例-插件

MyBatis 示例-简介的更多相关文章

  1. MyBatis 示例-传递多个参数

    映射器的主要元素: 本章介绍 select 元素中传递多个参数的处理方式. 测试类:com.yjw.demo.MulParametersTest 使用 Map 传递参数(不建议使用) 使用 MyBat ...

  2. MyBatis 示例-类型处理器

    MyBatis 提供了很多默认类型处理器,参考官网地址:链接,除了官网提供的类型处理器,我们也可以自定义类型处理器. 具体做法为:实现 org.apache.ibatis.type.TypeHandl ...

  3. MyBatis 示例-联合查询

    简介 MyBatis 提供了两种联合查询的方式,一种是嵌套查询,一种是嵌套结果.先说结论:在项目中不建议使用嵌套查询,会出现性能问题,可以使用嵌套结果. 测试类:com.yjw.demo.JointQ ...

  4. MyBatis 示例-缓存

    MyBatis 提供两种类型的缓存,一种是一级缓存,另一种是二级缓存,本章通过例子的形式描述 MyBatis 缓存的使用. 测试类:com.yjw.demo.CacheTest 一级缓存 MyBati ...

  5. MyBatis 示例-动态 SQL

    MyBatis 的动态 SQL 包括以下几种元素: 详细的使用参考官网文档:http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html 本章内容简单描述这 ...

  6. MyBatis 示例-插件

    简介 利用 MyBatis Plugin 插件技术实现分页功能. 分页插件实现思路如下: 业务代码在 ThreadLocal 中保存分页信息: MyBatis Interceptor 拦截查询请求,获 ...

  7. MyBatis 示例-主键回填

    测试类:com.yjw.demo.PrimaryKeyTest 自增长列 数据库表的主键为自增长列,在写业务代码的时候,经常需要在表中新增一条数据后,能获得这条数据的主键 ID,MyBatis 提供了 ...

  8. Unit07: MyBatis框架简介 、 MyBatis基本应用

    Unit07: MyBatis框架简介 . MyBatis基本应用 1. myBatis (1)myBatis是什么? 是一个开源的持久层框架. 注:myBatis底层仍然是jdbc. (2)编程步骤 ...

  9. Mybatis 示例之 复杂(complex)属性(property)

    Mybatis示例专栏:http://blog.csdn.net/column/details/mybatis-sample.html Mybatis的复杂属性,Mybatis的这个特点很少被提及,但 ...

随机推荐

  1. 查看mysql中的用户和密码

    use mysql; select host,user,password from user; 设置密码 set password for root@localhost=password('root' ...

  2. [C++] 类的设计(2)——拷贝控制(1)

    1.一个类通过定义五种特殊的成员函数来控制此类型对象的拷贝.移动.赋值和销毁:拷贝构造函数.拷贝赋值运算符.移动构造函数.移动赋值运算符和析构函数.(拷贝.移动.析构)   2.拷贝和移动构造函数定义 ...

  3. Python3.7.4入门-3函数

    3 函数 3.1 定义函数 def fib(n): # write Fibonacci series up to n """Print a Fibonacci serie ...

  4. Python必备收藏!Pycharm 常用快捷键思维导图!

    本内容首发公众号[计算机视觉联盟],关注获取更多资料! 考虑到可能图片压缩,将思维导图的pdf和jpg版本都上传了百度云,大家可以下载打印一张A4纸,方便查询! 公众号后台回复关键词: 2019082 ...

  5. 使用 Jest 进行 Vue 单元测试

    本文介绍:1.vue-cli3下jest环境的搭建2.vue组件基本的测试方法 环境配置 vue-cli3 的插件使安装流程变得格外简单,通过 vue ui 启动可视化管理系统,在插件栏,点击 ‘添加 ...

  6. 使Flask的url支持正则表达式以及一个api小demo

    from flask import Flask from flask import jsonify from flask import request from werkzeug.routing im ...

  7. Android Studio [TextView]

    MainAcitvity package com.xdw.secondapp; import android.content.Intent;import android.os.Bundle;impor ...

  8. Django REST Framework之权限组件

    权限控制是如何实现的? 一般来说,先有认证才有权限,也就是用户登录后才能判断其权限,未登录用户给他一个默认权限. Django接收到一个请求,首先经过权限的检查,如果通过检查,拥有访问的权限,则予以放 ...

  9. 【Django】中间件,csrf,缓存,信号

    中间件(middleware) 描述:Middlewares 是修改 Django request 或者 response 对象的钩子. 在django中,中间件其实就是一个类,在请求到来和结束后,d ...

  10. 【干货总结】:可能是史上最全的MySQL和PGSQL对比材料

    [干货总结]:可能是史上最全的MySQL和PGSQL的对比材料 运维了MySQL和PGSQL已经有一段时间了,最近接到一个数据库选型需求,于是便开始收集资料整理了一下,然后就有了下面的对比表 关键词: ...