spring cloud+vue在线视频网站 2.整合mybatis并将system模块公共组件分离

news/2024/5/9 23:57:14/文章来源:https://blog.csdn.net/Mosiclone/article/details/108674746

文章目录

  • 1 system 模块集成 Mybatis
    • 1.1 建立数据库
    • 1.2 导入mybatis 包
    • 1.3 增加数据库连接
    • 1.4 测试 Mybatis 集成情况
  • 2 测试 Mybatis 集成情况
    • 2.1 java文件
    • 2.2 Mybatis xml文件
  • 3 搭建服务模块 Server
    • 3.1 新建 server 模块
    • 3.2 system 集成 server 模块
    • 3.3 集中部署
  • 4 集成 mybatis generator
    • 4.1 添加 IDEA 插件
    • 4.2 添加配置文件
    • 4.3 添加 Maven 命令
    • 4.4 使用 selectByExample 例子
      • tip 集成热部署步骤

1 system 模块集成 Mybatis

1.1 建立数据库

首先建立一个数据库 course ,在数据库中新建一个表 test 来测试后面 mybatis 持久层的配置情况。

create database courseuse courseCREATE TABLE `test` (`id` varchar(255) NOT NULL,`name` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;insert into test (id , name) values (1,'admin')

也可以用 navicat 来创建数据库和表。

1.2 导入mybatis 包

在父 Maven 项目中的 pom.xml 文件添加 mybatis 和 mysql 的包,同时在 system 中的 pom.xml 文件中添加(版本管理全部放在父项目的xml文件中),代码如下。

		<!--父项目中的pom.xml--><!--集成mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version></dependency><!--system中的pom.xml--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>

1.3 增加数据库连接

在 system 模块的 application.properties 文件中添加数据库的连接,代码如下。

spring.datasource.url=jdbc:mysql://localhost:3306/course?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
spring.datasource.username= root
spring.datasource.password= 123456spring.datasource.driver-class-name=com.mysql.jdbc.Driver

由于一个小错误导致后面运行时数据库一直报错,查了许多原因也看到了许多坑。有时用户的密码设置会导致明文的密码不被允许,这时可以添加allowPublicKeyRetrieval=true。mysql 数据库到8.0版本之后需要设置时区,IDEA 中连接数据库如果不设置时区是连接不上的。

1.4 测试 Mybatis 集成情况

在这里插入图片描述

2 测试 Mybatis 集成情况

新建如图的包结构和文件。controller 为请求的入口,即调用 service 中方法;service负责逻辑,即调用 mapper 进行查询;mapper 负责持久层,其中 TestMapper.java 文件中的 list 方法和后面的 TestMapper.xml 文件中的 sql 语句进行合作,在数据库进行查询。各类代码如下。

2.1 java文件

test.java

package com.course.system.controller;import com.course.system.domain.Test;
import com.course.system.service.TestService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;
import java.util.List;@RestController
public class test {@Resourceprivate TestService testService;@RequestMapping("/test")public List<Test> test(){return testService.list();}
}

Test.java

package com.course.system.domain;public class Test {private String id;private String name;public Test() {}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() { return name; }public void setName(String name) {this.name = name;}
}

TestMapper.java

package com.course.system.mapper;import com.course.system.domain.Test;
import java.util.List;public interface TestMapper {public List<Test> list();
}

TestService.java

package com.course.system.service;import com.course.system.domain.Test;
import com.course.system.mapper.TestMapper;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.util.List;@Service
public class TestService {@Resourceprivate TestMapper testMapper;public List<Test> list(){return testMapper.list();};
}

2.2 Mybatis xml文件

resources 包结构和代码如下。
在这里插入图片描述
TestMapper.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"><!-- namespace为命名空间,应该是mapper接口的全称-->
<mapper namespace="com.course.system.mapper.TestMapper"><select id="list" resultType="com.course.system.domain.Test">select id, name from test</select></mapper>

同时需要在 system 启动文件中添加注解@MapperScan("com.course.system.mapper")扫描所有mapper文件夹下的文件,告诉 spring boot 此文件夹下是 mybatis 的 mapper 文件,在 application.properties 文件中添加 mybatis.mapper-locations=classpath:/mapper/*.xml说明 mapper 的路径是 mapper 所有文件夹中的 xml 文件。

此时,进入 http://127.0.0.1:9001/system/test 可以看到查询返回的数据。
在这里插入图片描述

3 搭建服务模块 Server

为了应对业务扩展之后的复杂程度,这里将 system 的部分分离到新的模块 server 中,这样如果新建一个类似的模块就只需要引入 server 的包而不需要重新写,并且修改会简单许多。

3.1 新建 server 模块

新建 server 模块,将 system 中的 com.course.system 包复制到 server 的 java 包中,重构 rename 包的路径为 com.course.server,因为 server 模块不会单独启动,所以可以将 controller 包和 启动类 删掉。如果有报红一般为路径问题,修改正确后即可。

3.2 system 集成 server 模块

首先将 system 模块中的 service 包、domain 包、mapper 包和 resource 中的 mapper 包删掉,此时因为缺少许多类会报错。
在父项目的 pom.xml 文件中导入 server 包,并且在 system 模块中也添加进去。代码如下,其中版本管理在父项目。

<dependency><groupId>com.course</groupId><artifactId>server</artifactId><version>0.0.1-SNAPSHOT</version>
</dependency>

修改 controller 包中文件代码路径 system 包为 server 包,在启动类中添加注解@ComponentScan("com.course")@MapperScan("com.course.server.mapper")

此时运行成功,表示 system 模块成功集成 server 模块。
在这里插入图片描述

3.3 集中部署

将 java 包都集中管理之后,application.properties 文件也有许多公共的地方,此时如果直接将 properties 文件放到 server 的 resources 包下的话,因为 system 模块下面也有 application.properties 文件,所以只会读取自己本身的文件。此时可以在 resources 文件下新建 config 文件夹,将公共设置放到 config 中,这样就可以生效啦。
其中,修改后的 system 中的 properties 文件代码和 server 中 config 包中的 properties 文件代码如下。

#system 下的 application.properties
spring.application.name=system
server.port=9001server.servlet.context-path=/systemeureka.client.service-url.defaultZone=http://localhost:8761/eureka/
#server 下的 application.properties
#数据库连接
#url 连接端口 数据库名
#username 登陆用户名
#password 登陆密码
spring.datasource.url=jdbc:mysql://localhost:3306/course?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
spring.datasource.username= root
spring.datasource.password= 123456spring.datasource.driver-class-name=com.mysql.jdbc.Drivermybatis.mapper-locations=classpath:/mapper/*.xmllogging.level.com.course.server.mapper=trace

4 集成 mybatis generator

4.1 添加 IDEA 插件

在父项目的 pom.xml 文件中添加

<plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.7</version><configuration><configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile><overwrite>true</overwrite><verbose>true</verbose></configuration><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version></dependency></dependencies>
</plugin>

4.2 添加配置文件

然后在 server 的 resources 文件夹下面添加 generator 包,并在包中添加 generatorConfig.xml 文件,代码如下。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><context id="Mysql" targetRuntime="MyBatis3" defaultModelType="flat"><!-- 添加后sql语句中的关键字和表用``区分--><property name="beginningDelimiter" value="`"/><property name="endingDelimiter" value="`"/><!--  生成xml文件自动覆盖之前的文件  --><plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"/><!--  生成实例类的tostring方法   --><plugin type="org.mybatis.generator.plugins.ToStringPlugin"/><!--  删除所有注释--><commentGenerator><property name="suppressAllComments" value="true"/></commentGenerator><!--连接数据库,修改自己的数据库名用户名密码--><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/course"userId="root"password="123456"></jdbcConnection><!-- domain类的位置 --><javaModelGenerator targetProject="src/main/java"targetPackage="com.course.server.domain"/><!-- mapper xml的位置 --><sqlMapGenerator targetProject="src/main/resources"targetPackage="mapper"/><!-- mapper类的位置 --><javaClientGenerator targetProject="src/main/java"targetPackage="com.course.server.mapper"type="XMLMAPPER" /><table tableName="test" domainObjectName="Test"></table></context>
</generatorConfiguration>

在这里需要注意 domain 等 targetProject 的地址,因为我是 mac ,所以这里的路径是 src/main/java ,如果是 windows 电脑的话,需要将路径中的 / 改为 \ , 即 src\main\java
其中 mapper 的生成方式有三中,一般采用的是 XMLMAPPER 方式,将 Java 代码和 XML 代码分离。1.ANNOTATEDMAPPER,生成的 SQL 全在 Java 中;2.MIXEDMAPPER,生成的 SQL 部分在 Java 中;3.XMLMAPPER,生成的 SQL 全部在 XML 文件中。

4.3 添加 Maven 命令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
到这里就完成了 mybatis generator 的配置,运行 mybatis-generator 会自动生成 TestExample 和 TestMapper 文件,此时因为之前设置了 mybatis-generator 插件为 overwrite 模式,所以会将之前的 TestMapper 文件覆盖,这样 TestService 文件就会报错。运行 mybatis-generator 插件后的 warning 不需要管。
在这里插入图片描述

4.4 使用 selectByExample 例子

现在来修改之前报错的 TestService 文件,之前的 list 方法查询表中所有的记录,可以使用新增的 selectByExample 方法,在下面生成的 TestMapper.xml 文件中可以看到,selectByExample 可以使用方法包含 distinct、order 和 xml 文件自己定义的方法。下面仅介绍一些简单的用法,详细的用法可以看这个文章写的mybatis中关于example类详解。
在这里插入图片描述
修改 TestService.java 文件中的 return testMapper.list();,改为return testMapper.selectByExample(null);,这样就可以实现之前 list 方法的查询所有记录。

public List<Test> list(){TestExample testExample = new TestExample();testExample.setOrderByClause("id desc");return testMapper.selectByExample(testExample);};

将 list 方法修改为上图后可以实现将查询结果用 id 的降序输出。

public List<Test> list(){TestExample testExample = new TestExample();testExample.createCriteria().andIdEqualTo("1");return testMapper.selectByExample(testExample);};

将 list 方法修改为上图后可以实现查询 id 为 “1” 的记录。

tip 集成热部署步骤

导入 Maven 包=》打开自动编译设置=》打开运行时编译设置

        <!-- 热部署devtools  --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上就是本章将 mybatis 整合到 spring boot 项目的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_894732.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring cloud+vue在线视频网站 3.vue搭建管理页面

文章目录 1 使用 vue 创建 admin 项目2 集成 bootstrap 后台管理模板 ace3 集成路由 vue-route4 后台管理页面开发 1 使用 vue 创建 admin 项目 使用 vue 创建前端项目网上有很多教程&#xff0c;这里简单说一下。 首先需要有 npm 和 node&#xff0c;先下载这两个工具。brew …

spring cloud+vue在线视频网站 4.单表查询功能前后端开发

1 大章列表查询后端模块 这里首先新建一个 Maven 模块&#xff0c;取名 busines 。这个模块的具体功能是实现大章列表的查询&#xff0c;在模块中会有启动类和 controller 层&#xff0c;controller 层是前端调用后端的接口&#xff0c;controller 层通过 server 模块中的 ser…

spring cloud+vue在线视频网站 5.分页功能+增加章节

1 分页功能开发 首先集成分页功能需要先在 Maven 中添加 pagehelper 依赖&#xff0c;然后在 ChapterService 中添加 pagehelper 的设置&#xff0c;接着试一下分页功能是否生效。后面添加分页功能的具体细节&#xff0c;第一修改成后端接收分页要求&#xff0c;第二修改前端分…

spring cloud+vue在线视频网站 6.章节编辑删除功能、前端优化和校验模块

这一节增加了大章的编辑和删除功能&#xff0c;这样大章的增删改查功能就都有了&#xff0c;但是在增加和修改时应该还要有校验功能。 编辑功能 这一节主要对大章模块增加编辑功能&#xff0c;其次还删除一些多余组件。首先&#xff0c;我们将多余对按钮进行了删除&#xff0…

spring cloud+vue在线视频网站 7.代码生成模块 part 1

这一章主要是完成代码生成的模块&#xff0c;用到的工具是 freemaker &#xff0c;在完成代码生成模块的同时会完成小节部分的代码。 freemaker 的基本用法 一般来说一个 freemaker 的模版基本会包括下面四部分。 文本:直接输出的部分 注释:<#–2333–>格式部分,不会输…

网站检测方式个人总结

这几天看架构看的头晕&#xff0c;觉得有点看不下去了 换个心情&#xff0c;等状态调整过来再继续看 趁这个时间休息一些&#xff0c;也正好把之前学过的知识做一个总结。 首先表明立场 这只是一个总结 并不是教大家什么 我的水平没有那么高 这是一个提醒自己的备忘 但是如果有…

用了2周时间,终于把Python网站开发库大全整理完了

用了 2 周的时间整理了 Python 中所有的网站开发库&#xff08;下文简称&#xff1a;Web 框架&#xff09;&#xff0c;供大家学习参考。 相关文件 小伙伴们可以关注小编的Python源码、问题解答&学习交流群&#xff1a;733089476 有很多的资源可以白嫖的哈&#xff0c;需…

今天给大家介绍一下~我学习 Python 的 三个神级网站

今天来给大家介绍三个我在学习 Python 路上帮助比较大的堪称神级的网站&#xff0c;尤其是对于刚刚入门的同学来说&#xff0c;绝对不容错过~ 相关文件 小伙伴们可以关注小编的Python源码、问题解答&学习交流群&#xff1a;733089476 有很多的资源可以白嫖的哈&#xff0…

WEB网站加速CND加速工作原理

转自&#xff1a;https://blog.csdn.net/5hongbing/article/details/78025349 通过传统的未加缓存服务的访问过程与加缓存服务的访问过程对比&#xff0c;了解CDN缓存访问方式与未加缓存访问方式的差别。 1.传统访问过程(未加速缓存服务) 访问未使用CDN缓存后的网站的过程&…

逛Github网站显示中文教程

打开Github对于看不懂英文的孩子来说刚打开官网就尬住了&#xff0c;后来逛了很多网站才发现一个方法可以将网站的部分内容转换为中文&#xff0c;虽然说是部分的&#xff0c;但是也够用了差不多。下面放教程。 1.找到自己浏览器安装扩展插件的地方&#xff0c;我测试的360浏览…

三日娱乐活动之——建立自己的网站

目录 云服务器搭建SSH登陆LNMP环境的搭建Nginx的设置小节总结 网页的编写CSS的调用php文件上传小节总结 云服务器搭建 我用的是阿里云的学生机&#xff0c;自己娱乐娱乐够用了&#xff0c;稍微懂点Linux的知识&#xff0c;选择Centos7的系统就可以耍了。 SSH登陆 我直接用密…

Vs2010创建网站

1.打开VS2010&#xff0c;新建——网站——ASP.Net空网站。 2.创建网站后你会发现你的项目并没有.sln结尾的文件&#xff0c;像这样。 事实上项目的.sln文件保存到了C:\Users\zjs\Documents\Visual Studio 2010\Projects 我一般会把这个.sln文件拷贝到项目所对应的文件夹目录。…

公安内网部署网站出现500.19-Internal Server Error

今天去桂林叠彩分局&#xff0c;帮他们部署一个内网平台的网站。去了机房&#xff0c;windowserver2012系统已装好。我本想我的工作会很快弄完。无非就是在这个系统上安装一个oracle数据库&#xff0c;然后在iis部署一个网站&#xff0c;网站能呈现数据就ok了。Oracle数据库安装…

我的网站收入

建站有好几个月了&#xff0c;但申请google adsense和阿里妈妈并且成功通过却是上个月的事情。到目前为止&#xff0c;google adsense帐户的估算总收入为1.79美元&#xff0c;阿里妈妈的收入为2.52元&#xff0c;看到这里&#xff0c;或者很多读者都会嗤之以鼻&#xff0c;甚至…

没有网站也能网赚

如果你能持之以恒&#xff0c;而且文档质量高的话&#xff0c;那么月入过万也不是没有可能的。 2009年5月&#xff0c;我在建站的过程中为了找点资料&#xff0c;通过搜索引擎搜索到了豆丁&#xff0c;还记得当时是为了搜索关于google map的资料&#xff0c;很多地方都没有找到…

前端常见SEO注意事项

前端开发工程师不仅需要要跟视觉设计师、交互式设计师配合&#xff0c;完美还原设计图稿&#xff0c;编写兼容各大浏览器、加载速度快、用户体验好的页面。现在还需要跟SEO人员配合&#xff0c;调整页面的代码结构和标签。 一些成熟的平台&#xff0c;在开发初期并没有考虑优化…

精通Web Analytics 2.0 (3) 第一章:网站分析的新奇世界

精通Web Analytics 2.0 &#xff08;3&#xff09; 第一章&#xff1a;网站分析的新奇世界 精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第一章&#xff1a;Web Analytics 2.0的新奇世界 多年以来&#xff0c;我们很清楚的知道&#xff0c;网站分析能够真正的改革网络…

精通Web Analytics 2.0 (12) 第十章:针对潜在的网站分析陷阱的最佳解决方案

精通Web Analytics 2.0 &#xff08;12&#xff09; 第十章&#xff1a;针对潜在的网站分析陷阱的最佳解决方案 精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第十章&#xff1a;针对潜在的网站分析陷阱的最佳解决方案 是时候去处理网站分析中最棘手的一些问题了&…

学习Python一定要知道的八个网站,看看你知道几个

导语 最近很多人问我有没有可以跟着学习的网站&#xff0c;一个人学没方向&#xff0c;老是不知道该怎么学习&#xff0c;我今天就把自己知道的几个网站分享给大家&#xff0c;那些问我的小伙伴可以根据这个去找自己喜欢的网站哦! python是一个编程语言&#xff0c;相比其他的…