maven整合@data注解_SpringBoot整合MyBatis---一篇就够了

本文详细介绍SpringBoot整合MyBatis的过程,包括项目框架搭建、Maven依赖导入、配置文件设置、控制器与映射器编写等。还提及测试方法、注意事项,介绍了MyBatis框架优缺点,以及整合中遇到的问题及解决办法,同时推荐了便利的IDEA插件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

4595f1106e2986fd0f9121e7b470b588.png

SpringBoot整合MyBatis

------ 既然你都开始整合Mybatis了,我相信基本的SpringBoot项目创建你自己肯定是可以搞定的,所以我在这里就不多赘述了,话不多B,让我们直奔主题

MyBatis---半自动ORM框架

现如今,常见的持久层框架有:HibernateMyBatis , 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对象)映射成数据库中的记录。

项目框架

cdaaf935d01fce65ef8d8c7fae9400e6.png

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>

测试

测试登录操作

数据库的信息:

60b82cd66f212cc7465351205778807e.png

d3e15a4912d1a3a4584746f4fa9ce1b4.png

c11f1069f80e8872e4ff5b9d53b5eb0a.png

6a02068351e27f2fde1e4f3d2b022b3b.png

fa9d2683d1c3949e04af7203c180a091.png

测试CRUD(即增删改查)

查询全部

4585b2020b28fb2e88a4baf686e44be2.png

根据ID查询

1f15efe146cd4c6e4f78cd04e4fc0e9e.png

增加User

通过?和&传值

654a1a8331b72996c0e5cf955e3e4b40.png

ffc6a7abddc264bd7f97b51959a8465d.png

注意事项

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

b32dd32facfbe7724e95a1f0f6081d3c.png

2.application.properties文件和application.yml文件不需要都写,二选一即可,只不过这里我都写了而已


使开发更加便利的IDEA插件

给大家安利一款IDEA插件 : MyBatisX

作用: 在接口中写方法可以直接在mapper.xml文件中写CRUD方法生成相应的标签

图中使用的快捷键是==alt+enter==

2f6e99892864420fe262b268120e4d98.png

MyBatis框架的优点

  1. 与JDBC相比,减少了50%以上的代码量。
  2. MyBatis是最简单的持久化框架,小巧并且简单易学。
  3. MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,并可重用。
  4. 提供XML标签,支持编写动态SQL语句。
  5. 提供映射标签,支持对象与数据库的ORM字段关系映射。

MyBatis框架的缺点

  1. SQL语句的编写工作量较大,尤其是字段多、关联表多时,更是如此,对开发人员编写SQL语句的功底有一定要求。
  2. 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

----------每天进步“亿”点点----------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值