权限服务的工程|学习笔记

简介: 快速学习权限服务的工程

开发者学堂课程【高校精品课-厦门大学 -JavaEE 平台技术权限服务的工程学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/80/detail/15940


权限服务的工程

 

1、代码

<build>

<plugins>

<plugin>

<groupId>org.mybatis.generator</groupId>

<artifactId>mybatis-generator-maven-plugin</artifactid>

<version>1.3.7</version>

<configuration>

<!--mybatis的代码生成器的配置文件--》

<configurationFile>src/main/resources/mybatis-generator-confi

<1--允许覆道生成的文件-->

coverwrite>true</overwrite>

<1--将当前pom的旅赖项流加到生成器的类路径-->

<includeCompileDependencies>true</includeCompileDependencies

</configuration>

<dependencies>

<dependency>

<groupId>org.mybatis.generator</groupid>

<artifactId>mybatis-generator-core</artifactid>

<version>1.4.0</version>

</dependency>

</dependencies>

</plugin>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactid>

</plugin>

</plugins>

</build>

</project>

编译的部分是变的,因为要打一个 tomcat 里面 spring boot 的独立应用另外

一个 gateway 要打的是另外一个东西,打一个 liter在里面打一个非阻塞的东西。

所以每一个工程的 build 是不一样的。文字为每一个模块都要做的事情,sql 有

份,这个 sql 权限每个模块都有自己的 sql。 sql 在数据表里建好以后,然后 mybatis.generator 工具生成源代码,有三个选择。

第一个选择是现在用的叫 mybatis.generator,用法是在 mybatis 中间做一个plug in 引进进来,引进 plug in 以后,在 mybatis 中间可以去 run plug in 去运行 plug in,然后 plug in 会根据数据库去产生 map 接口、map 的 X 文件,还有 po,这三

个东西自动的产生。产生用配置文件描述。

第二个选择是在基础上面做一次包装叫 mappers 做抽象和包装,抽象的原因是

mybatis.generator 针对每一张表会产生一组东西,每一张表产生一个 map接口,一个 X 文件,还有一个 po 对象三个东西。

因为繁琐所以把所有的 map 做了一个基类,通过基类用模板的方式去使用不同的对象,通过一个基类的 map 通过模板去实例化出具体的东西然后来使用,所以做了一次包装不要去单独的使用每一个这三组。还有第四个 example 查询的,所以上面对应每一个表层四个东西是 map、xmal、po 对象、用来查询的 example 对象,会生成四个东西,但是通用 map 把所有东西做了一个抽象,只通过一个统一的接

口来访问所有的表对象,所以要在 mybatis.ge nerator 的基础上,要先生成 mybatis.generator 然后才能用 Mappers。

第三个选择是用 mybatis plus,Mappers 只是在 mybatis.gen erator 上去做一个包装和抽象,mybatis plus是一个全新的解决方案,把解决方案可以一直做到和 habit 一致的方式, mybatis 是一个半自动的框架,mybatis plus 可以通过 supring 的 gpa 去访问,做成像 habit 全自动的方案。之所以选择 mybatis 不是做成全自动是半自动。

工程中是用 mybatis.generator 来做的,靠 plug in 来生成四个文件,生成 con 配置文件、文件写在哪里面写的很清楚,配置文件里内容很多。

<property name="forceBigDecimals" value="false" />

<1-- This property is used to specify whether MyBatis Generator shoule

and TIMESTAMP fields, rather than using java.util.Date --

<property name="useJSR310Types" value="true"/>

</javaTypeResolver>

<1--生成模型的包名和位置-->

<javaModelGeneratortargetPackage="cn.edu.xmu.privilege. model.po"

targetProject="src/main/java">

<1-- targetPackage的基础上,根据数据库的schema再生成一层package,最终生

<property name="enableSubPackages" value="false" />

<property name="trimStrings" value="true" />

</javaModelGenerator>

<1-- 生成映射文件的包名和位置

注意,在Mybatis3之后,我们可以使1mapper.xmL文f+Mapper接口(或者不/lmapp

或者只使/Mapper接L/+Annotation,所以,如果

javaClientGeneratorR targetPackage/targetProject:javaModeLGenerator

-->

<sq1MapGenerator targetPackage="cn.edu.xmu.privilege.ma pper"

targetProject="src/main/resources">

所有的可能选项都写上,如果自己要去配去看注释就可以,所有怎么生成、该怎么生成、数据类型等等都有。

重点讲的是日期型,有很多日期型的属性,日期型的属性在数据库里是 data time,在 Java里面日期型用的是 JSR310 的标准,JSR310 的标准是 JDK8 以后的标准。

如果不引入 JSR310 不仅仅在

<property name="useJSR310Types" value="true"/>,在前面 depend 中间也引入了 depend 的 JSR310 的 depends,这两个东西加在一起之后,会使得 mybatis.generator 生成字符,日期型属性生成出来的 local datatime,这个类型是 JDK8 才有的类型,JDK 之前没有这个类型。

如果不加 JSR310 会生成一个data,date是不安全的线程,没有时区的东西。MYSQL 8.0 也加了时区,这是一个新的时间类型,整个工程自己去看。

2、效果

image.png

Plug in 加上以后,可以在里面看到 plugins 又多了一个 mybat is.generator ,这是 Maven中间加了 plug in 的原因,用generater 会读配置文件,然后去读数据库表,配置文件中间有配了数据库的 JDBC 的连接字,读数据表根据配置文件去产生,去产生自动生成的,自动生成文件生成到的地方都是在配置文件中间都有配了。

image.png

可以看到里面的文件都是自动生成的,有一个文件不自动生成是pretty map,因为它自动生成的文件从命名上全带了 po,没有带 po 就不是自动生成的文件。

image.png

Map 文件是自动生成的还是手动一打开看就知道,这是手工写的,要手工去改。

image.png

如果说是自动生成的代码很多,所以自动生成的东西不要去看,不要去管也不要去改,如果数据库的结构发生改变让它自动生成就可以。

image.png

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.or/2001/XMLSchema-instance"

xsl:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd,

<parent>

<artifactId>roleprivilege</artifactidy

<groupId>cn.edu.xmu</groupid>

<version>0.0.1-SNAPSHOT</version>

</parent>

<modeIVersion>4.0.0</modelVersion)

<artifactId>privilegeservice</artifactid>

<packaging>jar</packaging>

<dependencies>

<dependency>

<groupId>cn.edu.xmu.ooad</groupId>

<artifactId>core</artifactid>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactid>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-actuatorc/artifactid>

</dependency>

编译不过去的原因:把四个工程都写完以后,把最简单编编译编过去,再来编辑这个引用了cn,然后在编译的时候发现,cn 里面的代码它不认识,不认识的原因是 poem 文件有问题,把 poem 文件打开跟这里的 poem 文件一模一样,然后有人说是因为那个泡面头引用了那个parent,poem 文件引入 parent 所以 parent 也要在M2 里面,把 parent 装进去,到 parent mybatis 工程里 insto。发现 parent insto

要用 cn ,cn 要用 insto parent ,parent要 insto denpency,然后它又编译不过去,因为 parent 要 insto 形成一个怪圈。

现在代码比较简单,把所有的 cn 代码全部移掉就没错,然后先把 cn 编译装上去,parent编译了装上去,再把 cn 代码全部再写回来再编译。

所以现在的代码中间编译是没错的,在引入的时候先入 cn,然后再引入 parent,

最后再来编译按照顺序来,做完了以后如果代码写错再想引入 parent是引不进来的,因为 parent 也要一起编译一遍引不进来,所以这是一个怪圈。

网上有人说能够在 impack 的时候控制里面哪些东西只模块,哪些引哪些不引,可

以自己去研究一下,应该有命令行的命令可以去控制里面哪些子模块不要带进去,现在默认的时候会把所有的子模块带进去,形成怪圈。

相关文章
|
4月前
|
SQL
若依框架---角色与权限
若依框架---角色与权限
315 0
|
4月前
|
SQL XML Java
若依框架 --- 使用数据权限功能
若依框架 --- 使用数据权限功能
747 0
|
4月前
|
前端开发 数据安全/隐私保护
若依框架---权限控制角色设计
若依框架---权限控制角色设计
948 0
|
前端开发
jeecgboot数据权限用法
jeecgboot数据权限用法
1090 0
jeecgboot数据权限用法
|
SQL JSON 数据可视化
权限开发手册,数据权限和接口权限配置
权限开发手册,数据权限和接口权限配置
1084 0
权限开发手册,数据权限和接口权限配置
|
3月前
|
项目管理 数据安全/隐私保护
项目管理工具权限设置:如何自定义与控制访问
项目管理工具指南关注自定义和用户权限控制。工具提供自定义字段、状态、标志及用户权限简档和角色功能,允许团队根据需求调整,确保安全性和访问相关性。权限简档是一组权限设置,定义用户对系统的访问权限,可分配给多个用户。通过定制角色和权限,项目经理能精细控制团队成员的访问范围。例如,不同角色如管理员、产品经理和测试人员有不同的权限设定。此外,工具还支持@提及角色、跨项目依赖和任务编号等功能,如Zoho Projects提供的4级权限设置,实现精细化管理。
41 4
|
4月前
|
安全 Shell Linux
对账号的管理 对文件(文件夹)权限的管理
对账号的管理 对文件(文件夹)权限的管理
|
4月前
|
安全 算法 数据安全/隐私保护
【工程构建】权限认证机制
【1月更文挑战第13天】【工程构建】权限认证机制
|
Android开发
Android应用开发权限
Android应用开发权限
51 1
|
XML SQL Java
JeeSite 数据权限应用
JeeSite 数据权限应用
214 0