一、概述

我们的Spring Boot后续项目使用的都是MySQL。Spring Boot连接MySQL的方式包括JDBC,Spring JPA,Hibeirnate,Mybatis等,本文主要带大家实践Mybatis的集成。

MyBatis 前身是apache的一个开源项目iBatis,2010年由apache software foundation 迁移到了google code,更名为MyBatis,在2013年11月迁移到Github。

MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Ordinary Java Objects,普通的Java对象)映射成数据库中的记录。

二、创建数据库和表

MySQL的安装参考之前的文章,全网首例全栈实践(一)Mac安装使用MySQL。

使用workbench或命令行创建数据库test。

create database test;

如果是命令行:

use test;

如果使用工具直接连接到数据库,然后创建表user,输入:

DROP TABLE IF EXISTS `user`;CREATE TABLE `user1` ( `id` int(**11**) NOT NULL AUTO_INCREMENT, `name` varchar(**255**) DEFAULT NULL, `password` varchar(**255**) DEFAULT NULL, `email` varchar(**255**) DEFAULT NULL, `phone` varchar(**100**) DEFAULT NULL, `register_time` datetime DEFAULT NULL, `login_time` datetime DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=**1**DEFAULT CHARSET=utf8;

user表包含的字段有id(记录id),name(姓名),password(密码),phone(手机号码),register_time(注册时间),login_time(登录时间)。

三、MySQL、MyBatis配置

yml文件配置:

#开发配置spring: profiles: dev #数据库配置 datasource: url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 username: root password: xxx driver-class-name: com.mysql.jdbc.Driver

pom文件配置:

mysql mysql-connector-java runtimeorg.mybatis.spring.boot mybatis-spring-boot-starter 1.3.2

四、MyBatis目录设置

MyBatis 强大之处在于它的映射语句,由于它的异常强大,映射器的XML 文件就显得相对简单。因此在集成MyBatis后,我们的项目结构设置如下。

src目录下分别新建entity实体和mapper层,mapper本质上相当于传统的dao层,只是dao层用MyBatis的特性实现。resources目录下新建mapping目录,该目录下即是MyBatis的XML实现,每个xml文件对应mapper目录下的一个文件。

五、MyBatis XML映射文件

MyBatis 是针对SQL 构建的,SQL 映射文件有很少的几个顶级元素。

  • cache – 给定命名空间的缓存配置。
  • cache-ref – 其他命名空间缓存配置的引用。
  • resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。
  • parameterMap – 已废弃!老式风格的参数映射。内联参数是首选,这个元素可能在将来被移除,这里不会记录。
  • sql – 可被其他语句引用的可重用语句块。
  • insert – 映射插入语句
  • update – 映射更新语句
  • delete – 映射删除语句
  • select – 映射查询语句

接下来我们举几个经常使用的例子来说明映射语句如何使用。

  1. select

查询语句是MyBatis 中最常用的元素之一,使用示例如下:

 SELECT * FROM PERSON WHERE ID = #{id}

这个语句被称作selectPerson,接受一个int(或Integer)类型的参数,并返回一个HashMap 类型的对象,其中的键是列名,值便是结果行中的对应值。

注意参数符号:

#{id}

这就告诉MyBatis 创建一个预处理语句参数,通过JDBC,这样的一个参数在SQL 中会由一个“?”来标识,并被传递到一个新的预处理语句中。

select元素有很多属性可供配置:

id在命名空间中唯一的标识符,可以被用来引用这条语句。parameterType将会传入这条语句的参数类的完全限定名或别名。这个属性是可选的,因为 MyBatis 可以通过 TypeHandler 推断出具体传入语句的参数,默认值为 unset。parameterMap这是引用外部 parameterMap 的已经被废弃的方法。使用内联参数映射和 parameterType 属性。resultType从这条语句中返回的期望类型的类的完全限定名或别名。注意如果是集合情形,那应该是集合可以包含的类型,而不能是集合本身。使用 resultType 或 resultMap,但不能同时使用。resultMap外部 resultMap 的命名引用。结果集的映射是 MyBatis 最强大的特性,对其有一个很好的理解的话,许多复杂映射的情形都能迎刃而解。使用 resultMap 或 resultType,但不能同时使用。flushCache将其设置为 true,任何时候只要语句被调用,都会导致本地缓存和二级缓存都会被清空,默认值:false。useCache将其设置为 true,将会导致本条语句的结果被二级缓存,默认值:对 select 元素为 true。timeout这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数。默认值为 unset(依赖驱动)。fetchSize这是尝试影响驱动程序每次批量返回的结果行数和这个设置值相等。默认值为 unset(依赖驱动)。statementTypeSTATEMENT,PREPARED 或 CALLABLE 的一个。这会让 MyBatis 分别使用 Statement,PreparedStatement 或 CallableStatement,默认值:PREPARED。resultSetTypeFORWARD_ONLY,SCROLL_SENSITIVE 或 SCROLL_INSENSITIVE 中的一个,默认值为 unset (依赖驱动)。databaseId如果配置了 databaseIdProvider,MyBatis 会加载所有的不带 databaseId 或匹配当前 databaseId 的语句;如果带或者不带的语句都有,则不带的会被忽略。resultOrdered这个设置仅针对嵌套结果 select 语句适用:如果为 true,就是假设包含了嵌套结果集或是分组了,这样的话当返回一个主结果行的时候,就不会发生有对前面结果集的引用的情况。这就使得在获取嵌套的结果集的时候不至于导致内存不够用。默认值:false。resultSets这个设置仅对多结果集的情况适用,它将列出语句执行后返回的结果集并每个结果集给一个名称,名称是逗号分隔的。
  1. insert,update和delete

示例如下:

 insert into Author (id,username,password,email,bio) values (#{id},#{username},#{password},#{email},#{bio}) update Author set username = #{username}, password = #{password}, email = #{email}, bio = #{bio} where id = #{id} delete from Author where id = #{id}

属性配置包括如下:

id命名空间中的唯一标识符,可被用来代表这条语句。parameterType将要传入语句的参数的完全限定类名或别名。这个属性是可选的,因为 MyBatis 可以通过 TypeHandler 推断出具体传入语句的参数,默认值为 unset。parameterMap这是引用外部 parameterMap 的已经被废弃的方法。使用内联参数映射和 parameterType 属性。flushCache将其设置为 true,任何时候只要语句被调用,都会导致本地缓存和二级缓存都会被清空,默认值:true(对应插入、更新和删除语句)。timeout这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数。默认值为 unset(依赖驱动)。statementTypeSTATEMENT,PREPARED 或 CALLABLE 的一个。这会让 MyBatis 分别使用 Statement,PreparedStatement 或 CallableStatement,默认值:PREPARED。useGeneratedKeys(仅对 insert 和 update 有用)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系数据库管理系统的自动递增字段),默认值:false。keyProperty(仅对 insert 和 update 有用)唯一标记一个属性,MyBatis 会通过 getGeneratedKeys 的返回值或者通过 insert 语句的 selectKey 子元素设置它的键值,默认:unset。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。keyColumn(仅对 insert 和 update 有用)通过生成的键值设置表中的列名,这个设置仅在某些数据库(像 PostgreSQL)是必须的,当主键列不是表中的第一列的时候需要设置。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。databaseId如果配置了 databaseIdProvider,MyBatis 会加载所有的不带 databaseId 或匹配当前 databaseId 的语句;如果带或者不带的语句都有,则不带的会被忽略。

MyBatis的集成就讲到这里,具体的使用我们放在之后用户的注册、登录等接口创建过程中细讲。

mybatis映射longtext类型数据_全网首例全栈实践(五)Spring Boot 集成Mybatis相关推荐

  1. Spring Boot系列六 Spring boot集成mybatis、分页插件pagehelper

    1. 概述 本文的内容包括如下内容: Spring Boot集成mybatis Spring Boot集成pagehelper分页插件,定义分页的相关类 实现工具类:model转dto,实现数据层和传 ...

  2. Spring Boot 集成 Mybatis 实现双数据源

    转载自   Spring Boot 集成 Mybatis 实现双数据源 这里用到了Spring Boot + Mybatis + DynamicDataSource配置动态双数据源,可以动态切换数据源 ...

  3. spring boot 集成Mybatis时 Invalid bound statement (not found)

    spring boot 集成Mybatis时,运行提示 org.apache.ibatis.binding.BindingException: Invalid bound statement (not ...

  4. Spring Boot 集成MyBatis

    Spring Boot 集成MyBatis Spring Boot 系列 Spring Boot 入门 Spring Boot 属性配置和使用 Spring Boot 集成MyBatis Spring ...

  5. Spring Boot 集成 MyBatis 与 c3p0

    *对应的目录结构 一.添加依赖 <!-- 添加对 mybatis 的依赖 --><dependency><groupId>org.mybatis.spring.bo ...

  6. spring boot集成mybatis+事务控制

    一下代码为DEMO演示,采用注解的方式完成Spring boot和Mybatis的集成,并进行事物的控制 数据源的配置: 1 spring.datasource.url=jdbc:mysql://lo ...

  7. MBG真香 Spring Boot集成Mybatis Generator插件

    Mybatis中文官网对mybatis-generator的介绍:http://www.mybatis.cn/archives/885.html Mybatis官网对mybatis-generator ...

  8. Spring Boot 集成 MyBatis和 SQL Server实践

    文章共 509字,阅读大约需要 2分钟 ! 概 述 Spring Boot工程集成 MyBatis来实现 MySQL访问的示例我们见过很多,而最近用到了微软的 SQL Server数据库,于是本文则给 ...

  9. spring boot集成mybatis

    1.在pom中添加依赖: #mybatis依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> &l ...

最新文章

  1. hung-yi lee_p5-7_Gradient Descent(梯度下降)
  2. 134个预训练模型、精度高达85.1%,百度视觉算法最强基石PaddleClas全新升级
  3. [转载]hadoop集群默认配置和常用配置
  4. struts2下的helloworld(如何让第一个struts2跑起来)——struts2第一讲
  5. 关于Verilog中begin···end语句执行顺序
  6. php strchr和strrchr,strrchr与Strchr
  7. 从双11看技术趋势:金融行业总动员之阿里金融云
  8. 我眼中的服务提供和服务消费
  9. java项目上线mysql查询慢_Java Web应用程序在缓慢的MySQL查询中停滞不前
  10. 六石管理学:行政人员也要学会使用SVN保存文档
  11. 【ANSYS命令流】加载与求解技术(四):面载荷(节点)的施加 [重点]
  12. 按键脚本c语言,按键精灵脚本代码大全 按键精灵命令使用方法
  13. Himawari8注册后发来信息下载数据
  14. class文件反编译后的汉字乱码问题
  15. 关于DMM实现定位功能(二)—react-native-amap3d的配置简单使用
  16. [转] ubuntu上安装 ibus Google拼音输入法
  17. C语言 一步步教你做一个带有图形界面的冒险小游戏
  18. 分布式的Key-Value存储系统voldemort
  19. 一文带你了解,色环电阻失效相关知识
  20. 细说安装php的webp文件格式支持

热门文章

  1. 前端开发 常见的网页导航制作 0228
  2. linux-文件的类型
  3. mysql-表记录之增删改操作
  4. pthon-递归实战-操作文件
  5. linux-文件路径-相对路径-绝对路径
  6. redis中文显示问题
  7. SQL2005存储过程解密
  8. 使用apache搭建tomcat集群
  9. 类加载是为了执行静态方法
  10. 时间:2014年3月27日20:08:01网站建表实战与优化意识