spring boot整合mybatis,曾经的几个小困惑和踩的坑。

一、mybatis的结构

  mybatis和spring boot的整合,网上无数的教程,都是教你一步步集成,照着做没问题,但做下来令我这半桶水有些知其然不知其所以然的感觉。总结一下:

  • 结构:实体层(pojo类)+数据访问层(dao接口)+服务层(service类),然后就是在action层(controller类)使用service。
  • 数据绑定:dao层有两种方法将sql与方法连接起来,即xml或注解,各有各的好。
  • dao层标注:dao层需要被框架扫描到。可以在dao类中直接用@Mapper标注,也可以在启动类(XXXApplication)中用@MapperScan("xxx.dao")统一标注标注,也是各有各好
  • service层:有的人喜欢用interface+class implements的方式,先定义一个接口,然后再用继承接口方式来实现service。也可以简单一点直接定义service类。也是各有各好,个人认为简单项目就别整接口+继承的方式。不过无论哪种方法,都需要在service类中使用@Service注解来标注,否则不能被框架扫描到。
  • 参考链接:https://blog.csdn.net/winter_chen001/article/details/77249029、https://www.cnblogs.com/goloving/p/9126187.html。推荐后者,逻辑比较清晰。

二、mysql的自增字段

  oracle中有序列号来保证id字段唯一、自增且能在代码中获取。mysql也能,建表时先定义主键、自增:create table log (id int(8) not null primary key auto_increment,...);

  在mybatis的插入配置中定义自增类:useGeneratedKeys="true" keyProperty="id"

  在使用的时候注意:执行插入方法返回的并不是新记录的id值,新记录的id值需要从实体类中的id属性获取。

三、mysql的jdbc报错

  mysql的服务端和客户端jdbc需要匹配,主要有几个问题:

  • 6以上的jdbc,需要将com.mysql.jdbc.Driver 改为com.mysql.cj.jdbc.Driver
  • 5.5以上的服务器要求默认要求建立SSL连接,此时通过设置useSSL=false来显式禁用SSL连接:jdbc:mysql://localhost:3306/dev?useSSL=false
  • 8的服务器如果用低版本客户端连接报caching-sha2-password错误,需要修改相登录户名的密码规则:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';FLUSH PRIVILEGES;
  • 服务器版本和客户端版本不一致时可能报错:Unknown system variable 'query_cache_size',就需要在maven中根据服务器设置合适的jdbc版本

spring boot+mybatis+mysql的更多相关文章

  1. Spring boot+Mybatis+MySQL插入中文乱码

    转载:https://www.jianshu.com/p/bd0311a33c16 现象: 搭建spring boot+mybatis+mysql时出现插入mysql的中文出现乱码???.   mys ...

  2. 使用spring boot+mybatis+mysql 构建RESTful Service

    开发目标 开发两个RESTful Service Method Url Description GET /article/findAll POST /article/insert 主要使用到的技术 j ...

  3. 从.Net到Java学习第三篇——spring boot+mybatis+mysql

    从.Net到Java学习第一篇——开篇 环境:mysql5.7 新建mysql数据库demo,然后执行如下sql脚本进行数据表创建和数据初始化: -- ------------------------ ...

  4. spring boot+mybatis+mysql增删改查分页

    server: port: servlet: context-path: /springBootMybatis spring: datasource: name: test url: jdbc:mys ...

  5. Spring Boot+MyBatis+MySQL读写分离

    读写分离要做的事情就是对于一条sql语句该选择去哪个数据库执行,至于谁来做选择数据库的事情,无非两个,1:中间件(比如MyCat):二:程序自己去做分离操作. 但是从程序成眠去做读写分离最大的弱点就是 ...

  6. Spring Boot + MyBatis + MySQL 实现读写分离

    读写分离要做的事情就是对于一条SQL该选择哪个数据库去执行,至于谁来做选择数据库这件事儿,无非两个,要么中间件帮我们做,要么程序自己做. 读写分离有两种实现方式: 第一种是依靠中间件(比如:MyCat ...

  7. Spring boot + mybatis + mysql代码生成器

    引入依赖: 在pom文件最下边: <build> <plugins> <!--逆向工程--> <plugin> <groupId>org.m ...

  8. Spring Boot + Mybatis 实现动态数据源

    动态数据源 在很多具体应用场景的时候,我们需要用到动态数据源的情况,比如多租户的场景,系统登录时需要根据用户信息切换到用户对应的数据库.又比如业务A要访问A数据库,业务B要访问B数据库等,都可以使用动 ...

  9. (45). Spring Boot MyBatis连接Mysql数据库【从零开始学Spring Boot】

    大家在开发的时候,会喜欢jdbcTemplate操作数据库,有喜欢JPA操作数据库的,有喜欢MyBatis操作数据库的,对于这些我个人觉得哪个使用顺手就使用哪个就好了,并没有一定要使用哪个,个人在实际 ...

随机推荐

  1. NEO区块链-DAPP开发直通车-第零篇

    什么是DAPP DAPP 是以太坊发明的词汇 Decentralized Application. 目前基于区块链技术开发的应用程序广泛的接受使用了这一名称.   NEL将为开发DAPP提供全面的服务 ...

  2. 详解~实现Runnable方法创建线程之为什么要将Runnable接口的子类对象传递给Thread的构造函数

    /** * @author zhao * @TIME 0419 22:56 End *定义线程的第二种方法:实现Runnable接口(不考虑安全问题) *步骤:1,定义一个子类实现Runnable接口 ...

  3. 利用select检索数据

    没错这就是DQL,数据查询语言.来看看怎么用. select语句按照复杂程度来说分为简单查询.where查询.多表查询.子查询等. 先来看看select的语法 1.select 2.[distince ...

  4. K Besk [POJ 3111]

    描述 Demy有n颗宝石.她的每个珠宝都有一些价值vi和重量wi.自从丈夫约翰在最近的金融危机爆发后,已经决定出售一些珠宝.她决定自己会保留最好的珠宝.她决定保留这样的宝石,使他们的具体价值尽可能大. ...

  5. 2017.08.05【NOIP提高组】模拟赛B组

    Summary 这次比赛打得非常差,第一题我以为是个难题,于是推了一下就没再去想了,然而考场上一堆人AC.第二题状态设错了,导致结果有后效性.结束后pascal卡常卡了36次.第三题别人n²就过了,我 ...

  6. yii2 basic版基础部分

    Yii2.0 basic 版 yii 官方网站:http://www.yiiframework.com/ 一.安装: 1.下载地址:http://www.yiichina.com/download 从 ...

  7. PhantomJS、CasperJS安装配置图文详解

    目前网站主流的加载方式: 一种是同步加载:另一种是异步加载,也即我们常说的用ajax.对于同步加载的网站,普通的爬虫程序轻松就能搞定.但是对于那种异步请求数据的网站,通常使用selenium+Phan ...

  8. 重新看待Jar包冲突问题及解决方案

    Jar包冲突是老生常谈的问题,几乎每一个Java程序猿都不可避免地遇到过,并且也都能想到通常的原因一般是同一个Jar包由于maven传递依赖等原因被引进了多个不同的版本而导致,可采用依赖排除.依赖管理 ...

  9. pytorch0.4版的CNN对minist分类

    卷积神经网络(Convolutional Neural Network, CNN)是深度学习技术中极具代表的网络结构之一,在图像处理领域取得了很大的成功,在国际标准的ImageNet数据集上,许多成功 ...

  10. JSP(2)—绝对路径与相对路径、配置Servlet与Servlet注解

    一.绝对路径和相对路径 ①开发时建议使用据对路径,使用绝对路径肯定没有问题,但是用相对路径可能会有问题. 在由Servlet转发到JSP页面时,此时在浏览器地址栏显示Sevvlet路径,若JSP页面的 ...