当前位置: 首页 > news >正文

Spring Boot + MyBatis

一、配置依赖

<!-- MyBatis -->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.5.3</version>
</dependency>
<!-- junit测试依赖 -->
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope>
</dependency>
<!-- lombok依赖 为了简化实体类的编写代码量 -->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
</dependency>

不知道为什么,maven配置的远程仓库(阿里云)一直找不到org.mybatis.spring.boot: mybatis-spring-boot-starter,报如下错误:

Cannot resolve org.mybatis.spring.boot:mybatis-spring-boot-starter:unknown

最终的解决方案是使用MyBatis-plus来替代MyBatis,所以最终使用的是如下依赖信息:

<!-- MyBatis Plus-->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.1</version>
</dependency>
<!-- junit测试依赖 -->
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope>
</dependency>
<!-- lombok依赖 为了简化实体类的编写代码量 -->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
</dependency>

二、配置文件信息

        如果是SpringBoot,在resources目录下创建application.yml文件,这个文件中存放mybaits的相关配置信息。

# 配置数据库的连接字符串
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/你的数据库?characterEncoding=utf8username: 你的数据库用户名password: 你的数据库密码driver-class-name: com.mysql.cj.jdbc.Driver# 设置 Mybatis 的 xml 保存路径
mybatis:mapper-locations: classpath:mapper/*Mapper.xml #实现mapper.java接口和mapper.xml的绑定type-aliases-package: com.xj.dao.model #解释参考里有说明configuration: # 配置打印 MyBatis 执行的 SQLlog-impl: org.apache.ibatis.logging.stdout.StdOutImpl #需要lombok框架支持,可以添加# 配置打印 MyBatis 执行的 SQL
logging:level:com:example:demo: debug

三、项目举例

1.创建一个Spring Boot项目

参考:Spring Boot之创建一个Spring Boot项目(一)_<plugin> <groupid>org.springframework.boot</groupi-CSDN博客

2.项目架构

3.代码实现

pom.xml:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.xj</groupId><artifactId>SpringBootStudyProject</artifactId><version>1.0-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.5</version><relativePath/></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--导入JDBC的场景启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><!--jquery引入--><dependency><groupId>org.webjars</groupId><artifactId>jquery</artifactId><version>3.6.0</version></dependency><!--Thymeleaf 启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!--导入数据库驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!-- MyBatis Plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.1</version></dependency><!-- junit测试依赖 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency><!-- lombok依赖 为了简化实体类的编写代码量 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies><!--build标签描述了如何来编译及打包项目,而具体的编译和打包工作是通过build中配置的 plugin 来完成--><build><plugins><!--使用SpringBoot的打包插件--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>
</project>

application.yml:

#默认配置
server:port: 8080spring:datasource: #数据源连接信息username: rootpassword: 12345url: jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=UTF-8driver-class-name: com.mysql.cj.jdbc.Driverprofiles:active: dev #切换配置,指定使用哪个profile# 设置 Mybatis 的 xml 保存路径
mybatis-plus:mapper-locations: classpath:mapper/*Mapper.xmltype-aliases-package: com.xj.dao.modelconfiguration: # 配置打印 MyBatis 执行的 SQLlog-impl: org.apache.ibatis.logging.stdout.StdOutImpl #需要lombok框架支持,可以添加# 配置打印 MyBatis 执行的 SQL
logging:level:com:example:demo: debug---
#开发环境
server:port: 8081spring:config:activate:on-profile: dev
---
#测试环境
server:port: 8082spring:config:activate:on-profile: test
---
#生产环境
server:port: 8083spring:config:activate:on-profile: prodlogging:config: classpath:logback-spring.xml #指定使用哪个日志配置文件

Student.java:

package com.xj.dao.model;import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import org.springframework.data.relational.core.mapping.Column;
import java.io.Serializable;/*** @Author: xjfu* @Create: 2024/03/25 16:20* @Description:*/
@Data
public class Student implements Serializable {private static final long serialVersionUID = 1L;@TableId(value = "name")private String name;@Column(value = "age")private Integer age;
}

StudentMapper.java:

package com.xj.dao.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xj.dao.model.Student;
import org.springframework.stereotype.Repository;
import java.util.List;/*** @Author: xjfu* @Create: 2024/03/25 16:26* @Description:*/
@Repository
public interface StudentMapper extends BaseMapper<Student> {public List<Student> selectAll();
}

StudentMapper.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xj.dao.mapper.StudentMapper"><resultMap id="BaseResultMap" type="com.xj.dao.model.Student"><result column="name" property="name" /><result column="age" property="age" /></resultMap><select id="selectAll" resultType="com.xj.dao.model.Student">SELECT *FROM student;</select></mapper>

MainApplication.java:

package com.xj.main;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;/*** @Author : xjfu* @Date : 2022/6/8 8:38* @Description :Spring Boot 启动类*/
@ComponentScan("com.xj")
@SpringBootApplication
@MapperScan("com.xj.dao.mapper")
public class MainApplication {public static void main(String[] args) {try{SpringApplication.run(MainApplication.class, args);}catch (Exception e){e.printStackTrace();}}
}

MyBatisTest:

package com.xj.main;import com.xj.dao.mapper.StudentMapper;
import com.xj.dao.model.Student;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.sql.SQLException;
import java.util.List;/*** @Author : xjfu* @Date : 2024/3/35 16:34* @Description : MyBatis 测试类*/
@SpringBootTest(classes = MainApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class MyBatisTest {private static final Logger log = LoggerFactory.getLogger(MyBatisTest.class);@AutowiredStudentMapper studentMapper;@Testvoid testJdbc() throws SQLException{List<Student> students = studentMapper.selectAll();for (Student s : students){System.out.println(s.toString());}}
}

数据库:

CREATE TABLE `student` (`name` varchar(255) DEFAULT NULL,`age` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

4.运行结果

四、参考

1.在 SpringBoot 中 初步使用 MyBatis_springboot mybatis-CSDN博客

2.SpringBoot结合MyBatis 【超详细】_springboot mybatis-CSDN博客

3.Cannot resolve org.mybatis.spring.bootmybatis-spring-boot-_cannot resolve org.mybatis.spring.boot:mybatis-spr-CSDN博客

4.SpringBoot:CONDITIONS EVALUATION REPORT-CSDN博客 

5.@MapperScan注解使用-CSDN博客

6.mybatis的mapper-locations配置_mapperlocations属性怎么配置-CSDN博客

7.type-aliases-package的用法-CSDN博客

8.什么是MyBatis-CSDN博客

9.mybatis – MyBatis 3 | XML 映射器

相关文章:

  • uniapp的配置文件、入口文件、主组件、页面管理部分
  • io的学习4
  • 力扣热门算法题 89. 格雷编码,92. 反转链表 II,93. 复原 IP 地址
  • 如何学习VBA_3.2.19:利用Shell函数运行可执行程序
  • 宜搭低代码高级认证实操题2 faas连接器加密解密
  • 【快速解决】解决谷歌自动更新的问题,禁止谷歌自动更新,如何防止chrome自动升级 chrome浏览器禁止自动升级设置方法
  • 网络安全-文件包含
  • 龙蜥 Anolis OS 7.9 一键安装 Oracle 11GR2(231017)单机版
  • 牛客NC218 检测循环依赖【中等 图 Java,Go,PHP】
  • oracle切换ADG后JVM组件查询报错ORA-29516处理
  • QT深入解析数控机床或激光切割机的nc文件包括读取与数据处理技巧
  • Redis分布式锁—SETNX+Lua脚本实现
  • 手机网页视频无水印采集工具|抖音视频关键词批量下载软件
  • 详解多模态 AI
  • 10.2024
  • [case10]使用RSQL实现端到端的动态查询
  • 「译」Node.js Streams 基础
  • 【刷算法】求1+2+3+...+n
  • Angular 4.x 动态创建组件
  • CentOS7 安装JDK
  • js作用域和this的理解
  • leetcode386. Lexicographical Numbers
  • leetcode388. Longest Absolute File Path
  • leetcode46 Permutation 排列组合
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • PAT A1017 优先队列
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • Yii源码解读-服务定位器(Service Locator)
  • 彻底搞懂浏览器Event-loop
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 利用jquery编写加法运算验证码
  • 深入 Nginx 之配置篇
  • 使用 @font-face
  • 网络应用优化——时延与带宽
  • 微信小程序设置上一页数据
  • NLPIR智能语义技术让大数据挖掘更简单
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (二)PySpark3:SparkSQL编程
  • ./configure,make,make install的作用(转)
  • .form文件_SSM框架文件上传篇
  • .jks文件(JAVA KeyStore)
  • .NET CLR Hosting 简介
  • .NET CORE Aws S3 使用
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .Net小白的大学四年,内含面经
  • .Net转前端开发-启航篇,如何定制博客园主题
  • [ai笔记9] openAI Sora技术文档引用文献汇总