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. MySql 5.7.20版本免安装版配置过程

    下载地址为: https://dev.mysql.com/downloads/mysql/ 最下面根据自己的操作系统选择合适的型号 下载完以后解压缩到自定义的路径.这里注意的是路径中不要存在中文. 解 ...

  2. 模板-gcd

    GCD int gcd(int a, int b) { return b == 0 ? a : gcd(b, a%b); } EXGCD void ex_gcd(int a, int b, int & ...

  3. Ubuntu1404 开启定时任务 crontab

    crontab -e 这个 我使用vim编辑,所以选择3,进入到 写了两条,的确隔了一分钟在test.txt文件夹里面会多加一条Good morning进去.而且也会执行dingshi.sh这个she ...

  4. openstack之Neutron网络虚拟化

    第一:为什么需要网络虚拟化? 一.数据中心的现有网络不能满足云计算的物理需求: 互联网行业数据中心的基本特征就是服务器的规模偏大.进入云计算时代后,其业务特征变得更加复杂,包括:虚拟化支持.多业务承载 ...

  5. pygame-KidsCanCode系列jumpy-part2-加速度与摩擦力

    上一节,我们整理了一个游戏开发的新框架(即:Game类),本节将运用这个框架,实现基本的加速度及摩托力效果. 先定义游戏的精灵(下面代码命名为sprites.py) from part_02.sett ...

  6. 唯美PS转手绘之SAI篇_百度经验

    唯美PS转手绘之SAI篇 https://jingyan.baidu.com/article/fd8044fad3d5c05030137a5f.html

  7. [Web 前端] mobx教程(五)-Mobx常见问题及解决方案(1)Mobx使用严格模式

    copy from : https://blog.csdn.net/smk108/article/details/83185745 mobx在严格模式下,不允许在 action 外更改任何状态.但是不 ...

  8. 利用Caffe训练模型(solver、deploy、train_val) + python如何使用已训练模型

    版权声明:博主原创文章,微信公众号:素质云笔记,转载请注明来源“素质云博客”,谢谢合作!! https://blog.csdn.net/sinat_26917383/article/details/5 ...

  9. ninja-build环境安装

    ninja是一个小型构建系统,专注于速度,和常用的make类似,有一些软件就是基于ninja编译构建的,比如clickhouse数据库就需要依赖ninja,因为最近在研究clickhouse,需要依赖 ...

  10. 使用python实现深度神经网络 2(转)

    https://blog.csdn.net/oxuzhenyi/article/details/73026796 导数与梯度.矩阵运算性质.科学计算库numpy 一.实验介绍 1.1 实验内容 虽然在 ...