
SpringBoot整合MyBatis
------ 既然你都开始整合Mybatis了,我相信基本的SpringBoot项目创建你自己肯定是可以搞定的,所以我在这里就不多赘述了,话不多B,让我们直奔主题
MyBatis---半自动ORM框架
现如今,常见的持久层框架有:Hibernate,MyBatis , JPA....
相对于Hibernate来说,MyBatis更容易上手一些
今天我就把SpringBoot如何整合Mybatis给大家演示一下,共同学习。
如果有没有接触过这两个技术栈的小伙伴,那你们可以先去康康,稍后再来~~。
这是一段来自百度百科的权威解释
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。
项目框架

Maven的pom.xml文件
需要导入的依赖---可以在创建SpringBoot项目时可以勾选导入的技术栈
<?xml version="1.0" encoding="UTF-8"?>
mapper配置文件
UserMapper.xml
==注意文件的位置==
<?
application.properties的配置
# 端口的配置
server.port=8081
# 数据库访问配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#将database_name改成自己的数据库的名称
spring.datasource.url=jdbc:mysql://localhost:3306/database_name?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456
application.yml的配置
# 配置Mybatis的包的别名,在mapper.xml文件中xxxType="xxx" 此处直接可以写实体类的类名即可,不需要将全类名都写上
controller
logincontroller.java
/**
mycontroller.java
/**
mapper
package
前端
将index.html文件放在template文件夹下
<!DOCTYPE html>
测试
测试登录操作
数据库的信息:





测试CRUD(即增删改查)
查询全部

根据ID查询

增加User
通过?和&传值


注意事项
1.mappe.xml文件的路径包括文件名必须同数据层的接口完全一致

2.application.properties文件和application.yml文件不需要都写,二选一即可,只不过这里我都写了而已
使开发更加便利的IDEA插件
给大家安利一款IDEA插件 : MyBatisX
作用: 在接口中写方法可以直接在mapper.xml文件中写CRUD方法生成相应的标签
图中使用的快捷键是 :==alt+enter==

MyBatis框架的优点
- 与JDBC相比,减少了50%以上的代码量。
- MyBatis是最简单的持久化框架,小巧并且简单易学。
- MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,并可重用。
- 提供XML标签,支持编写动态SQL语句。
- 提供映射标签,支持对象与数据库的ORM字段关系映射。
MyBatis框架的缺点
- SQL语句的编写工作量较大,尤其是字段多、关联表多时,更是如此,对开发人员编写SQL语句的功底有一定要求。
- SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。
SpringBoot整合Mybatis中遇到的Errors
这是我自己在整合的时候遇到的一些问题,希望自己走过的弯路可以多多帮助到大家。
There
解决方法:
添加了entity子类中的无参构造方法,异常消失
java
解决方法:==时区报错==
更改配置信息:
spring:
使用@Autowired注解有错误提示
使用Spring boot +mybatis框架时,在service实现类中使用Mapper类,给Mapper类添加@Autowired注解时发现有错误提示:could not autowire,no beans of "XXX" type found,但程序的编译和运行都正常。
处理方式:
方案一:@Autowired(required = false) 设置required 属性值为 false,错误消失
方案二:用@Resource注解替换@Autowired注解,错误消失
@Resource注解与@Autowired注解的异同点
这两个注解都是用作bean的注入时使用,都是为一个对象变量省去写get,set方法,自动为这个对象注入实例化对象(即注入依赖)注入的方式还是有所区别的 :
@Autowired是基于spring的注解org.springframework.beans.factory.annotation.Autowired,它默认是按类型进行的装配的,如果想要它按名字进行装配则需在@autowired下面添加@qualifier("name")`注解,都无法找到唯一的一个实现类的时候报错。@Autowired注解默认情况下必须要求依赖对象必须存在,如果要允许null值,则应该设置它的required属性为false,
@Resource 是基于j2ee的注解(可以减少了与spring的耦合),(JDK1.6以上支持)默认是按名字进行注解,若不指定装配bean的名字,当注解写在字段上时,默认取字段名,按照名称查找通过set方法进行装配,倘若有多个子类,则会报错。需要注意的是name属性一旦指定,就只会按照名称进行装配
解与@Autowired注解的异同点
这两个注解都是用作bean的注入时使用,都是为一个对象变量省去写get,set方法,自动为这个对象注入实例化对象(即注入依赖)注入的方式还是有所区别的 :
@Autowired是基于spring的注解org.springframework.beans.factory.annotation.Autowired,它默认是按类型进行的装配的,如果想要它按名字进行装配则需在@autowired下面添加@qualifier("name")`注解,都无法找到唯一的一个实现类的时候报错。@Autowired注解默认情况下必须要求依赖对象必须存在,如果要允许null值,则应该设置它的required属性为false,
@Resource 是基于j2ee的注解(可以减少了与spring的耦合),(JDK1.6以上支持)默认是按名字进行注解,若不指定装配bean的名字,当注解写在字段上时,默认取字段名,按照名称查找通过set方法进行装配,倘若有多个子类,则会报错。需要注意的是name属性一旦指定,就只会按照名称进行装配 ``
The Ending
----------每天进步“亿”点点----------