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

高校校园网站建设培训班门户网站个人可以做吗

高校校园网站建设培训班,门户网站个人可以做吗,官方网站的要素,网站界面风格SpingBoot#xff1a;整合Mybatis-plusDruid 一、特别说明二、创建springboot新工程三、配置3.1 配置pom.xml文件3.2 配置数据源和durid连接池3.2.1 修改application.yml3.2.2 新增mybatis-config.xml 3.3 编写拦截器配置类 四、自动生成代码五、测试六、编写mapper.xml#… SpingBoot整合Mybatis-plusDruid 一、特别说明二、创建springboot新工程三、配置3.1 配置pom.xml文件3.2 配置数据源和durid连接池3.2.1 修改application.yml3.2.2 新增mybatis-config.xml 3.3 编写拦截器配置类 四、自动生成代码五、测试六、编写mapper.xml新增业务6.1 新增功能函数6.2 测试新函数 七、附件-mysql数据库表 本文参考链接 [Java] Spring Boot 集成 MyBatis Plus Druid从0开始springboot后台管理项目-mybatis-plus/druid链接数据库多数据源SpingBoot系列教程一整合Mybatis-plusDruid 一、特别说明 MyBatis-PLus的3.0版本对于LocalDateTime的支持有些差异对于Druid的版本也有些要求。pom.xml文件里面的俩者的版本是我自己试验过的可以正常使用如果自己更换版本出现LocalDateTime问题请注意版本问题。   代码生成工具使用的是mybatis-plus-generator但没有完全按照官方文档来搞本着能用就行的目的一些地方与官方有点出入生成代码之后还需微调一下请注意。   数据库文件MySql末尾我会提供当然您也可以使用自己的数据库。 回到目录 二、创建springboot新工程 使用IDEA创建springboot工程过程如下 file-new - project - spring Initializr -next 输入项目名及包结构 一路选择next然后点击finish完成创建。 回到目录 三、配置 3.1 配置pom.xml文件 根据自身的springBoot版本和durid、mysql、mybatisplus版本配置我的配置示例如下 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersion!-- 导入springboot版本和框架依赖 --parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.5.12/versionrelativePath/relativePath/parentgroupIdcom.juxin/groupIdartifactIddurid-mybatisplus-demo/artifactIdversion0.0.1-SNAPSHOT/versionnamedurid-mybatisplus-demo/namedescriptiondurid与mybatisplus整合实战/descriptionpropertiesjava.version1.8/java.versionmybatis-plus.version3.4.3.1/mybatis-plus.versiondruid.version1.1.21/druid.versionfreemarker.version2.3.29/freemarker.version!-- 跳过测试 --skipTeststrue/skipTests/propertiesdependencies!-- MySql--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdscoperuntime/scope/dependency!-- Druid连接池SpringBoot整合druid-spring-boot-starter省去配置文件或者Configuration来配置直接将配置写在 application.ymlhttp://localhost:8081/xxx/druid/index.html--dependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion${druid.version}/version/dependency!-- mybatis-plus 组件 --dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion${mybatis-plus.version}/version/dependency!-- mybatis plus 代码生成器依赖 --dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-generator/artifactIdversion3.5.2/version/dependency!-- mybatis plus 代码生成器模板MyBatis-Plus 支持 Velocity默认、Freemarker --dependencygroupIdorg.apache.velocity/groupIdartifactIdvelocity-engine-core/artifactIdversion2.3/version/dependency!--Spring Aop--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId/dependency!-- Swagger是一个有用web界面的提供实体模型结构展示接口展示调测等的一个工具--!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --dependencygroupIdio.springfox/groupIdartifactIdspringfox-swagger2/artifactIdversion2.7.0/version/dependency!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui --dependencygroupIdio.springfox/groupIdartifactIdspringfox-swagger-ui/artifactIdversion2.7.0/version/dependency!-- lombok 省略get/set方法--dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId !-- versionRELEASE/version--scopecompile/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdscopetest/scope/dependencydependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter/artifactIdscopetest/scope/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-test/artifactIdversion5.3.18/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdconfigurationexcludesexcludegroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/exclude/excludes/configuration/plugin/plugins!--资源文件引用--resourcesresourcedirectorysrc/main/resources/directoryincludesinclude**/*.properties/includeinclude**/*.yml/includeinclude**/*.xml/include/includesfilteringfalse/filtering/resourceresourcedirectorysrc/main/java/directoryincludesinclude**/*.xml/include/includesfilteringtrue/filtering/resource/resources/build/project回到目录 3.2 配置数据源和durid连接池 3.2.1 修改application.yml 修改application.yml文件示例如下 #mybatis-plus配置 mybatis-plus:configuration:#控制台打印sqllog-impl: org.apache.ibatis.logging.stdout.StdOutImplcall-setters-on-nulls: true# 这里根据自己项目的包修改扫描到自己的*xml文件mapper-locations: classpath:com/juxin/duridmybatisplusdemo/mapper/*.xml spring:#数据源配置datasource:url: jdbc:mysql://10.20.1.51:3306/rmltest?characterEncodingutf-8username: rootpassword: mysql2023driver-class-name: com.mysql.jdbc.Driver# 数据库访问配置, 使用druid数据源(默认数据源是HikariDataSource)type: com.alibaba.druid.pool.DruidDataSource# 链接池配置druid:# 连接池配置大小最小最大initial-size: 5min-idle: 5max-active: 20# 连接等待超时时间max-wait: 30000# 配置检测可以关闭的空闲连接间隔时间time-between-eviction-runs-millis: 60000# 配置连接在池中的最小生存时间min-evictable-idle-time-millis: 300000# 检测连接是否有有效得select语句validation-query: select 1 from dual# 申请连接的时候检测如果空闲时间大于time-between-eviction-runs-millis执行validationQuery检测连接是否有效建议配置为true不影响性能并且保证安全性。test-while-idle: true# 申请连接时执行validationQuery检测连接是否有效建议设置为false不然会会降低性能test-on-borrow: false# 归还连接时执行validationQuery检测连接是否有效建议设置为false不然会会降低性能test-on-return: false# 是否缓存preparedStatement也就是PSCache 官方建议MySQL下建议关闭 个人建议如果想用SQL防火墙 建议打开# 打开PSCache并且指定每个连接上PSCache的大小pool-prepared-statements: truemax-open-prepared-statements: 20max-pool-prepared-statement-per-connection-size: 20# 配置监控统计拦截的filters, 去掉后监控界面sql无法统计, wall用于防火墙防御sql注入stat监控统计,logback日志filters: stat,wall# Spring监控AOP切入点如x.y.z.service.*,配置多个英文逗号分隔#aop-patterns: com.springboot.servie.*# lowSqlMillis用来配置SQL慢的标准执行时间超过slowSqlMillis的就是慢connectionProperties: druid.stat.mergeSqltrue;druid.stat.slowSqlMillis5000# WebStatFilter监控配置web-stat-filter:enabled: true# 添加过滤规则那些访问拦截统计url-pattern: /*# 忽略过滤的格式哪些不拦截不统计exclusions: *.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*# StatViewServlet配置Druid监控后台的Servlet映射配置因为SpringBoot项目没有web.xml所在在这里使用配置文件设置stat-view-servlet:enabled: true# 配置Servlet的访问路径访问路径为/druid/**时跳转到StatViewServlet会自动转到Druid监控后台url-pattern: /druid/*# 是否能够重置数据reset-enable: false# 设置监控后台的访问账户及密码login-username: adminlogin-password: 123456# IP白名单允许哪些主机访问默认为“”任何主机# allow: 127.0.0.1# IP黑名单禁止IP访问共同存在时deny优先于allow# deny: 192.168.1.218# 配置StatFilterfilter:stat:log-slow-sql: true回到目录 3.2.2 新增mybatis-config.xml 用来指定映射文件或者映射类: ?xml version1.0 encodingUTF-8 ? !DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd configuration!-- 映射器指定映射文件或者映射类 --mappersmapper resourcecom/juxin/duridmybatisplusdemo/mapper/ClassInfoMapper.xml /mapper resourcecom/juxin/duridmybatisplusdemo/mapper/StuMapper.xml /mapper resourcecom/juxin/duridmybatisplusdemo/mapper/TopMapper.xml //mappers /configuration回到目录 3.3 编写拦截器配置类 定义配置文件类用于新建拦截器 配置类内容如下 package com.juxin.duridmybatisplusdemo.mybatisplus; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; /*** MybatisPlusInterceptor是一系列的实现InnerInterceptor的拦截器链也可以理解为一个集合。* 可以包括如下的一些拦截器* (1)自动分页: PaginationInnerInterceptor最常用* (2)多租户: TenantLineInnerInterceptor* (3)动态表名: DynamicTableNameInnerInterceptor* (4)乐观锁: OptimisticLockerInnerInterceptor* (5)sql性能规范: IllegalSQLInnerInterceptor* (6)防止全表更新与删除: BlockAttackInnerInterceptor*/ Configuration EnableTransactionManagement MapperScan(com.juxin.duridmybatisplusdemo.dao) class MybatisPlusConfig {Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();//向Mybatis过滤器中添加分页拦截器interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));// 乐观锁interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());return interceptor;} }回到目录 四、自动生成代码 创建代码生成类MyBatis-Plus 支持以 Velocity默认、Freemarker模式自动生成代码具体如下 利用mybatis plus代码生成器模板根据mysql表名等信息自动生成代码,包括 1、表对应的对象实体类存在entity目录下2、mapper接口文件及xml文件存在mapper目录下3、service接口及实现类存在service目录下4、controller类存在的目录可以自定义 代码自动生成类的代码如下 package com.juxin.duridmybatisplusdemo.mybatisplus;import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.config.DataSourceConfig; import com.baomidou.mybatisplus.generator.fill.Column; import org.springframework.util.ClassUtils; import org.springframework.util.ResourceUtils; import java.io.File; import java.io.FileNotFoundException; import java.io.UnsupportedEncodingException; import java.net.URL; import java.net.URLDecoder; import java.util.*; /*** 利用mybatis plus代码生成器模板根据mysql表名等信息自动生成代码, */ public class MybatisPlusGenerator {/// 获取项目路径public static void getPath() {ListString paths new ArrayList();try {//第四种String path ResourceUtils.getURL(classpath:).getPath();paths.add(ResourceUtils: path);} catch (FileNotFoundException e) {e.printStackTrace();}try {//第一种File path new File(ResourceUtils.getURL(classpath:).getPath());if (!path.exists()) {path new File();}paths.add(File(ResourceUtils): path.getAbsolutePath());paths.add(File(ResourceUtils): path.getPath());} catch (FileNotFoundException e) {e.printStackTrace();}//第二种String userDir System.getProperty(user.dir);paths.add(user.dir: userDir);try {//第三种URL classLoaderResource ClassUtils.getDefaultClassLoader().getResource();paths.add(ClassLoader: classLoaderResource.getPath());paths.add(ClassLoader: URLDecoder.decode(classLoaderResource.getPath(), utf-8));} catch (UnsupportedEncodingException e) {e.printStackTrace();}// //第五种 spring boot打jar包建议使用第五种 // ApplicationHome applicationHome new ApplicationHome(getClass()); // File jarFile applicationHome.getSource(); // paths.add(ApplicationHome: jarFile.getPath()); // paths.add(ApplicationHome: jarFile.getAbsolutePath()); // paths.add(ApplicationHome: jarFile.getParent());//第六种 spring boot打jar包或者不打包都可以使用的建议区分系统以完善路径 本种也建议使用Properties properties System.getProperties();paths.add(Properties(os.name): properties.getProperty(os.name));paths.add(Properties(user.dir): properties.getProperty(user.dir));for (String str : paths) {System.out.println(str);}}/// 生成代码public static void main(String[] args) {getPath();//mysql配置信息String dbUrl jdbc:mysql://10.20.1.51:3306/rmltest?useUnicodetrueuseSSLfalsecharacterEncodingutf-8serverTimezoneUTC;// String driverName com.mysql.cj.jdbc.Driver; // (com.mysql.jdbc.Driver);String dbUsername root;String dbPassword mysql2023;String projectPath System.getProperty(user.dir);//工程目录String globalConfigOutputDir projectPath /src/main/java;//包结构String globalConfigAuthor rml;//作者名String packageConfigParent com.juxin.duridmybatisplusdemo;//自定义的包结构// https://www.mybatis-plus.com/guide/generator-new.htmlDataSourceConfig.Builder dataSourceConfigBuilder new DataSourceConfig.Builder(dbUrl, dbUsername, dbPassword);FastAutoGenerator fastAutoGenerator FastAutoGenerator.create(dataSourceConfigBuilder);fastAutoGenerator.globalConfig(builder - {builder.enableSwagger() // 开启 swagger 模式.author(globalConfigAuthor).outputDir(globalConfigOutputDir);}).packageConfig(builder - {builder.parent(packageConfigParent).controller(controller);//cotroller文件目录})// 策略配置.strategyConfig((scanner, builder) - {builder.addInclude(getTables(scanner.apply(请输入表名多个英文逗号分隔所有输入 all))).controllerBuilder() // controller 策略配置.enableRestStyle() // 开启生成 RestController 控制器.enableHyphenStyle() // 开启驼峰转连字符.entityBuilder() // 实体策略配置.enableLombok() // 开启 lombok 模型.addTableFills(new Column(create_time, FieldFill.INSERT)).build();})// 使用Freemarker引擎模板默认的是Velocity引擎模板//.templateEngine(new FreemarkerTemplateEngine()).execute();}// 处理 all 情况protected static ListString getTables(String tables) {return all.equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(,));} } 执行结果查看 回到目录 五、测试 构建测试用例以classInfoMapper为例进行测试: 在ClassInfoMapper上加上注解Repository Repository它用于将数据访问层 (DAO 层 ) 的类标识为 Spring Bean。具体只需将该注解标注在 DAO类上即可。 同时为了让 Spring 能够扫描类路径中的类并识别出 Repository 注解 需要在 XML 配置文件中启用Bean 的自动扫描功能 2. 在SpringBootTest中构建测试函数如下所示 package com.juxin.duridmybatisplusdemo; import com.juxin.duridmybatisplusdemo.entity.ClassInfo; import com.juxin.duridmybatisplusdemo.mapper.ClassInfoMapper; import org.junit.jupiter.api.Test; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;import java.util.List;SpringBootTest class DuridMybatisplusDemoApplicationTests {Autowiredprivate ClassInfoMapper classInfoMapper;Testvoid contextLoads() {ListClassInfo cs classInfoMapper.selectList(null);System.out.println(查询结束数据条目cs.size());} } 执行结果如下 回到目录 六、编写mapper.xml新增业务 6.1 新增功能函数 mybatis提供的BaseMapper中包含大量的封装函数但是在实际开发中经常会需要自定义定制需要的功能函数。如果你想在Mapper接口中新增一个函数需要按照以下步骤进行操作 创建Mapper接口 如果你还没有创建Mapper接口你需要首先创建一个。通常这个接口会位于你的项目的dao包或者mapper包下。这里我放在dao包下了。 在接口中定义新的函数 在你的Mapper接口中定义你新的函数。这个函数的签名应该符合你的需求。 示例如下 import java.util.List; /*** p 班级信息表 Mapper 接口* author rml* since 2023-09-20*/ //它用于将数据访问层 (DAO 层 ) 的类标识为 Spring Bean。 // 具体只需将该注解标注在 DAO类上即可。 // 同时为了让 Spring 能够扫描类路径中的类并识别出 Repository 注解 // 需要在 XML 配置文件中启用Bean 的自动扫描功能 Repository //代表持久层 public interface ClassInfoMapper extends BaseMapperClassInfo {/**获取某年级的某类的所有班级*/Transactionalpublic ListClassInfo getClassInfoByName(String classification,String grade); }创建对应的XML映射文件 在你的资源文件夹下创建一个与你的Mapper接口对应的XML映射文件。这个文件通常会被命名为MyMapper.xml。在这个文件中你需要定义你的SQL语句。 示例如下 ?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.juxin.duridmybatisplusdemo.dao.ClassInfoMapperselect idgetClassInfoByName resultTypecom.juxin.duridmybatisplusdemo.entity.ClassInfoSELECT * FROM class_infotrim prefixWHERE prefixOverridesANDif testclassification ! nullAND classification#{classification}/ifif testgrade ! null AND grade#{grade}/if/trim/select /mappermapper.xml文件语法参考链接 在配置文件中注册Mapper 在你的MyBatis配置文件中通常是mybatis-config.xml你需要注册你的Mapper。这样MyBatis就可以知道你的Mapper和对应的XML映射文件。 ?xml version1.0 encodingUTF-8 ? !DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd configuration!-- 映射器指定映射文件或者映射类 --mappersmapper resourcecom/juxin/duridmybatisplusdemo/mapper/ClassInfoMapper.xml /mapper resourcecom/juxin/duridmybatisplusdemo/mapper/StuMapper.xml /mapper resourcecom/juxin/duridmybatisplusdemo/mapper/TopMapper.xml //mappers /configuration6.2 测试新函数 编写测试用例 代码如下 package com.juxin.duridmybatisplusdemo;//import com.juxin.duridmybatisplusdemo.entity.ClassInfo; //import com.juxin.duridmybatisplusdemo.mapper.ClassInfoMapper; import com.juxin.duridmybatisplusdemo.entity.ClassInfo; import com.juxin.duridmybatisplusdemo.dao.ClassInfoMapper; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.EnableTransactionManagement;import javax.annotation.Resource; import java.util.List;RunWith(SpringRunner.class) EnableTransactionManagement SpringBootTest class DuridMybatisplusDemoApplicationTests {Resourceprivate ClassInfoMapper classInfoMapper;Testvoid contextLoads() {ListClassInfo cs classInfoMapper.selectList(null);System.out.println(查询结束数据条目cs.size());}Testvoid testGetClassInfoByName(){try{ListClassInfo cs1 classInfoMapper.getClassInfoByName(普通班,六年级);System.out.println(普通班-六年级的班级有cs1.size());ListClassInfo cs2 classInfoMapper.getClassInfoByName(普通班,null);System.out.println(普通班的班级有cs2.size());ListClassInfo cs3 classInfoMapper.getClassInfoByName(null,六年级);System.out.println(六年级的班级有cs3.size());}catch (Exception e){e.printStackTrace();}} }运行进行测试即可。 回到目录 七、附件-mysql数据库表 表结构 -- rmltest.class_info definition CREATE TABLE class_info (name varchar(10) NOT NULL COMMENT 班级名称,loc varchar(100) DEFAULT NULL COMMENT 所在位置,grade varchar(100) DEFAULT NULL COMMENT 年级等级一年级、二年级...,classification varchar(100) DEFAULT NULL COMMENT 班级分类普通班、实验班...,date datetime NOT NULL,PRIMARY KEY (name) ) ENGINEInnoDB DEFAULT CHARSETutf8 COMMENT班级信息表;数据 INSERT INTO rmltest.class_info (name,loc,grade,classification,date) VALUES(class1,一楼一号,六年级,普通班,2023-09-20 10:00:00),(class2,一楼二号,六年级,实验班,2023-09-20 10:00:00),(class3,一楼三号,六年级,普通班,2023-09-20 10:00:00),(class4,二楼一号,五年级,普通班,2023-09-20 10:00:00);回到目录
http://www.w-s-a.com/news/182507/

相关文章:

  • 网站建设方案对比分析报告成都短视频代运营
  • 企业所得税税率知多少重庆seo什么意思
  • ftp如何修改网站备案号百度云建站
  • 免费做网站空间dede二手车网站源码
  • 网站服务器需要多大设计网站公司开发
  • asp 网站权限设计做网站业务员
  • 做棋牌网站违法嘛网络服务网络推广
  • 专门做推广的网站吗免费建域名网站
  • 在百度做网站株洲网站平台搭建
  • 用node做的网站南宁网站定制开发
  • 做刷单网站犯法吗wordpress depth
  • 潍坊青州网站建设少儿编程app
  • 表白网站制作源代码自己怎么免费做网站网页
  • 开源网站建设是什么工作个人虚拟网站
  • 网站制作的一般过程优化关键词排名公司
  • 如何使用阿里云建设网站网站两边广告
  • 互联网信息服务小红书seo是什么意思
  • 深圳市南山区建设局网站公司简介网页
  • 免费小程序制作软件爱站网站seo查询工具
  • 承接电商网站建设缔烨建设公司网站
  • 网站运营介绍十大国外室内设计网站
  • 网站建设完毕后怎么加后台电影购买网站怎么设计
  • 空间ip地址访问网站音乐分享 wordpress
  • 做网站一单能挣多少wordpress主题文件夹在哪
  • 视频社区app源码台州优化网站
  • 保定高端网站建设做微商好还是开网站好
  • 有什么方法在淘宝发布网站建设设计wordpress评分
  • 自己做的网站怎么爬数据库酷播wordpress
  • 广州哪家做网站还可以黑龙江省建设厅网站的电话
  • 青海省高等级公路建设管局网站国内做led灯网站有