1, Mybatis简介

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

2, Mybatis安装

将下面的 dependency 代码置于 pom.xml 文件中:

<dependency>

<groupId>org.mybatis.spring.boot</groupId>

<artifactId>mybatis-spring-boot-starter</artifactId>

<version>1.3.0</version>

</dependency>

3, Mybatis配置

/**

* 构建Mybatis所需要的数据源,事务,SqlSessionFactory,sqlSessionTemplate

*

* @author

*/

@Configuration

@EnableTransactionManagement

public class MyBatisConfig implements TransactionManagementConfigurer

{

@Override

public PlatformTransactionManager annotationDrivenTransactionManager()

{

return new DataSourceTransactionManager(dataSource());

}

/**

* 设置数据库的数据源

*

* @return DataSource

*/

@Bean(name = "dataSource")

public DataSource dataSource()

{

DruidDataSource DruidDataSource = new DruidDataSource();

DruidDataSource.setDriverClassName(dataSourceProperties.getDriverClassName());

DruidDataSource.setUrl(dataSourceProperties.getUrl());

DruidDataSource.setUsername(dataSourceProperties.getUsername());

DruidDataSource.setPassword(dataSourceProperties.getPassword());

return DruidDataSource;

}

/**

* 用于构建SqlSessionFactory

*

* @return SqlSessionFactory

* @throws Exception

*/

@Bean(name = "sqlSessionFactory")

public SqlSessionFactory sqlSessionFactoryBean() throws Exception

{

PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();

SqlSessionFactoryBean bean = new SqlSessionFactoryBean();

bean.setDataSource(dataSource());

bean.setMapperLocations(resolver.getResources("classpath*:com/eversec/**/*.xml"));

return bean.getObject();

}

/**

* 通过 sqlSessionFactory 构建 SqlSessionTemplate

*

* @param sqlSessionFactory

* @return SqlSessionTemplate

*/

@Bean(name = "sqlSessionTemplate")

public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory)

{

return new SqlSessionTemplate(sqlSessionFactory);

}

@Resource(name = "dataSourceProperties")

private DataSourceProperties dataSourceProperties;

}

/**

* 描述:配置Mapper

*

* @author

*

*/

@Configuration

@AutoConfigureAfter(MyBatisConfig.class)

public class MyBatisMapperScannerConfig

{

@Bean

public MapperScannerConfigurer mapperScannerConfigurer()

{

MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();

mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");

mapperScannerConfigurer.setBasePackage("com.eversec.**.sqlmapper");

return mapperScannerConfigurer;

}

}

4, Mybatis 反向生成代码

4.1 将下面的 plugin 代码置于 pom.xml 文件中:

<plugin>

<groupId>org.mybatis.generator</groupId>

<artifactId>mybatis-generator-maven-plugin</artifactId>

<version>1.3.2</version>

<configuration>

<verbose>true</verbose>

<overwrite>true</overwrite>

</configuration>

</plugin>

4.2 将generatorConfig.xml置于src/main/resource文件夹中

generatorConfig.xml 的内容大致如下:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >

<generatorConfiguration>

<classPathEntry location="D:\mysql-connector-java-5.1.39.jar" />

<context id="context1" targetRuntime="MyBatis3">

<jdbcConnection driverClass="com.mysql.jdbc.Driver"

connectionURL="jdbc:mysql://IP:3306/database?useUnicode=true&amp;characterEncoding=UTF-8"

userId="root" password="123456" />

<javaModelGenerator targetPackage="com.entity"

targetProject="D:\workspace\xxxx\src\main\java" />

<sqlMapGenerator targetPackage="com.sqlmapper"

targetProject="D:\workspace\xxxx\src\main\java" />

<javaClientGenerator targetPackage="com.sqlmapper"

targetProject="D:\workspace\xxxx\src\main\java" type="XMLMAPPER" />

<table  tableName="table" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" />

</context>

</generatorConfiguration>

4.3 执行

右键pom.xml, 依次选择Run As >> Maven build... ,然后输入Goals中输入mybatis-generator:generate,最好点击Run按钮。

5, MyBatis的框架图

看到Mybatis的框架图,可以清晰的看到Mybatis的整体核心对象,我更喜欢用自己的图来表达Mybatis的整个的执行流程。如下图所示:

原理详解:

MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,一处是配置文件,一处是Java代码的注解,获取一个SqlSession。SqlSession包含了执行sql所需要的所有方法,可以通过SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完之后关闭SqlSession。

官网地址:http://www.mybatis.org/mybatis-3/zh/index.html

Mybatis集成到spring boot的更多相关文章

  1. Redis篇之操作、lettuce客户端、Spring集成以及Spring Boot配置

    Redis篇之操作.lettuce客户端.Spring集成以及Spring Boot配置 目录 一.Redis简介 1.1 数据结构的操作 1.2 重要概念分析 二.Redis客户端 2.1 简介 2 ...

  2. 一键式Spring集成工具 Spring Boot

    最近公司使用Spring boot进行开发,稍微了解一下,不过自我感觉把集中式配置applicate.properties搞明白,注解用过Spring MVC的boot绝对没问题的 比如拦截器:@As ...

  3. 持续集成之 Spring Boot 实战篇

    本文作者: CODING 用户 - 何健 这次实战篇,我们借助「CODING 持续集成」,实现一个简单的 Spring Boot 项目从编码到最后部署的完整过程.本教程还有 B 站视频版,帮助读者更好 ...

  4. MyBatis集成到Spring时配置MapperScannerConfigurer出错

    问题描述 在web项目中同时集成了spring mvc和mybatis. 将jdbc配置参数独立在外部配置文件中,然后通过<context:property-placeholder>引入. ...

  5. 【swagger】1.swagger提供开发者文档--简单集成到spring boot中【spring mvc】【spring boot】

    swagger提供开发者文档 ======================================================== 作用:想使用swagger的同学,一定是想用它来做前后台 ...

  6. docker搭建elasticsearch、kibana,并集成至spring boot

    步骤如下: 一.基于docker搭建elasticsearch环境 1.拉取镜像 docker pull elasticsearch5.6.8 2.制作elasticsearch的配置文件 maste ...

  7. mybatis集成到spring理解

  8. Spring Boot (八)MyBatis + Docker + MongoDB 4.x

    一.MongoDB简介 1.1 MongoDB介绍 MongoDB是一个强大.灵活,且易于扩展的通用型数据库.MongoDB是C++编写的文档型数据库,有着丰富的关系型数据库的功能,并在4.0之后添加 ...

  9. spring boot集成mybatis(1)

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

随机推荐

  1. 生成器&迭代器

    通过列表生成式,我们可以快速创建一个列表,但是受到内存的限制,列表容量是有限的,而且一个包含100万个元素的列表不仅占用很大的存储空间,如果我们仅仅需要访问当前几个元素,那后面绝大多数元素占用的空间都 ...

  2. 如何实现VM框架中的数据绑定

    作者:佳杰 本文原创,转载请注明作者及出处 如何实现VM框架中的数据绑定 一:数据绑定概述 视图(view)和数据(model)之间的绑定 二:数据绑定目的 不用手动调用方法渲染视图,提高开发效率:统 ...

  3. 【转载】从头编写 asp.net core 2.0 web api 基础框架 (4) EF配置

    Github源码地址:https://github.com/solenovex/Building-asp.net-core-2-web-api-starter-template-from-scratc ...

  4. 前端构建工具gulp之基本介绍

    1.基本介绍 gulp.js是一个自动化构建工具,是自动化项目的构建利器.可以对网站的资源进行优化,将开发过程中一些重复的任务通过执行命令自动完成.这样能很大的提高我们的工作效率. gulp.js是基 ...

  5. GStreamer Windows tutorial demo 开发环境配置

    GStreamer 示例程序在 Windows 环境配置时坑比较多,好不容易配置成功了,写篇文档分享一下安装的关键步骤 官方文档见:https://gstreamer.freedesktop.org/ ...

  6. Ajax方式分页加载列表实现

    在前面: 最近需要用到这个功能,所以这几天一直在研究这个,目前大致功能已实现,后续需要完善,但需要的功能点已完成,记录下: 1.分页功能引入bootstrap的分页插件: <script typ ...

  7. 2017ecjtu-summer training #5 UVA10382

    题意 问最少可用几个圆覆盖矩形区域. 解析 将圆形转换成矩形有效区域,直径小于等于宽度的圆不考虑,从而转化成区间覆盖问题,然后贪心出最少圆. 贪心思想 每次选择出区域左界比上次选出的区域右界小的且区域 ...

  8. 移动App,AJAX异步请求,实现简单的增、删、改、查

    用ajax发异步请求时,要注意url."AppServer"为后台项目名,"LoginServlet.action"为web.xml中的<url-patt ...

  9. 使用Redis和jackson操作json中遇到的坑

    前言(可以略过) 最近在开发一个智能电表的管理系统,与常规的面向业务的系统不同.智能电表特点是每30分钟会向服务器发一次请求,报道自己目前的电表情况.然后服务器根据电表情况统计此电表的电量使用情况,包 ...

  10. js onclick传递 对象

    在html onclick中如果参数直接传递一个参数js会报错. 如果想要onclick传递参数需要这么做: var user = {id:1, name:'hk'}; var ele = '< ...