SpringBoot项目创建
SpringBoot工程创建
pom.xml文件配置
持久化框架选择
个人使用mybatis plus框架
1 | <!-- mybatis-plus --> |
配置扫描
1 | <build> |
application.properties文件配置
配置数据源(即数据库相关配置)
1 | spring.datasource.url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC |
添加增删改查代码内容
以下内容作为参考
项目结构
user2结构及内容同user1
代码示例
添加一套简单的对数据库表增删改查逻辑
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101## User1Controller.java
/**
* 实现一套简单的增删改查逻辑代码
*/
public class User1Controller {
private User1Service user1Service;
//新增用户1
//增
public String save({ User1 user1)
log.info("新增用户1,信息:{}", user1.toString());
user1Service.save(user1);
return "success";
}
//根据id查询用户
//查
public User1 get({ Long id)
User1 user1 = user1Service.getById(id);
if(user1 != null){
return user1;
}else{
log.info("查询失败");
return null;
}
}
//根据id更改用户信息
//改
public String update({ User1 user1)
log.info("更改用户信息:{}", user1.toString());
user1Service.updateById(user1);
return "success";
}
//根据id删除用户信息
//删
public String delete({ Long id)
user1Service.removeById(id);
return "success";
}
}
## User1.java
/**
* 用户1信息
*/
public class User1 implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
//姓名
private String name;
//手机号
private String phone;
//性别 0 女 1 男
private String sex;
//身份证号
private String idNumber;
//头像
private String avatar;
//状态 0:禁用,1:正常
private Integer status;
}
## User1Mapper.java
public interface User1Mapper extends BaseMapper<User1> {
}
## User1ServiceImpl.java
public class User1ServiceImpl extends ServiceImpl<User1Mapper, User1> implements User1Service {
}
## User1Service.java
public interface User1Service extends IService<User1> {
}
项目总体结构

数据库建表sql
可使用Mysql可视化工具操作,选中本地test数据库
1 | CREATE TABLE `user1` ( |
1 | CREATE TABLE `user2` ( |
测试
此时可以使用Postman测试SpringBoot项目的增删改查功能,如下
SpringBoot项目改为YMS项目
改造启动类
1 |
|
改造pom.xml文件
配置统一依赖管理iuap-pom-with-ucf-parent
根据我们的环境和需要选择一个iuap-pom-with-ucf-parent的版本,以下是iuap-pom-with-ucf-parent的版本以及对应的iuap-boot-starter、yms版本、流水线镜像对应版本如下:
具体内容参照用户指南2.2.1
本示例工程使用版本如下:
1 | <parent> |
业务工程配置iuap-boot-starter组件依赖
1 | <dependency> |
其他依赖
示例工程采用其他依赖
均为参考其他工程所得,可忽略
1 | <dependency> |
打包插件
1 | <plugins> |
application.properties文件配置
微服务配置 ak
1 | access.key= IlJ0b5Di4xZuWnoX |
spring.application.name
微服务名称,后面配置YMS控制台会用到
环境标识
YMS是测试环境的话写test 开发环境写dev
1 | spring.profiles.active=test |
文件截图及注意事项
注意:文件尽量使用.properties,不要使用.yml
代码上传至git
暂未操作
Git地址:http://git.yonyou.com
用户名:用友域账号
密码:用友域账号的密码
项目结构
此后项目启动成功即可,成功截图未放
常见问题
parent引入失败
开发前,请先根据相关文档配置maven–settings.xml文件
参考文档,Jfrog私服开发配置流程,https://yundoc.yonyou.com/view/l/tjrxb14
生成自己的settings.xml文件后,替换下图3中的路径文件
parent和插件版本匹配问题
经过个人的尝试选择上述版本,过程中项目启动过程报错需要yms什么manager,回退了版本后不报错
项目启动过程遇到报错没有找到User1Mapper bean
经查找问题发现是包扫描路径出错
数据源组件创建
本地代码改造
创建配置类
1 |
|
关闭SpringBoot自动加载
1 |
此注解禁止 SpringBoot 自动注入数据源配置,关闭自动查找 application.yml 或者 properties 文件里的 spring.datasource.* 相关属性并自动配置单数据源
准备工作
准备YMS控制台账号
访问http://dc.yms.app.yyuap.com/confcenter/
账号密码请自行联系获得即可登录
获得YonBIP开发者平台使用权限
获取流程请参考以下操作:
打开Windows端下的友空间平台
进入工作台
点击左上角图标
搜索“审批”
点击发起流程
点击云平台开发者中心—>开发者中心使用权限—>发起审批即可
连接池创建
访问http://dc.yms.app.yyuap.com/confcenter/
流程
根据2.2.3配置内容选择开发环境或测试环境
其他环境请一定不要操作
点击添加连接池
填写配置信息
注意:连接池名称为自定义的可识别名称,连接池编码自定义可识别的名称,命名规范同java变量(参照YMS操作文档),用户名,密码,地址等请联系人员获得,YMS控制台与本地不通,请不要使用本地127.0.0.1数据库
点击测试连接,通过后点击提交
数据源配置成功
逻辑数据源创建及发布
创建流程
选择测试环境—-点击配置管理—-点击任意产品名称—-点击逻辑数据源—-点击添加逻辑数据源
配置逻辑数据源信息
部分内容参照了YMS文档
1.逻辑数据源名称,自定义的可识别名称
2.逻辑数据源编码,逻辑数据源编码为规则为:spring.application.name+ “_” + 数据源的beanName,比如我的spring.application.name为datasourceDemoWjc,CustomDSConfiguration中注入的bean名称为master,则逻辑数据源编码为datasourceDemoWjc_master
3.默认Schema,mysql为数据库的名称,其他有Schema分层的数据库为Schema。
4.其他表单内容暂不确定
5.点击提交
关联数据源连接池
- 点击关联数据源连接池
- 选中3.3创建的连接池
调试及常见问题
调试过程
点击配置文件预览及发布
将左侧的新值展开复制保存为yms_dynds_preload.json文件
将该json文件内容删除最外侧的”datasource”层,如下图,否则启动时报错无法解析json
使用postman进行测试,成功进行表数据增删改查
常见问题
数据源为空
通过代码设断点分析,得为json文件格式问题,最外层应该直接以logicDataSouceList等开始,而不能包一层datasouce,否则解析不到,分析过程如下:
com.yonyou.iuap.yms.datasource.YmsDataSourceConfiguration
com.yonyou.iuap.yms.datasource.ds.provider.impl.YMSDataSourceProvider
com.yonyou.iuap.yms.datasource.ds.provider.impl.YMSGlobalDataSourceProvider
com.yonyou.iuap.yms.datasource.service.DynamicDataSourceQryService
com.yonyou.iuap.yms.datasource.service.DisConfigLoadUtils
在这里发现GsonUtils.fromJson传入参数content有yms_dynds.json解码内容,而返回的configDTO内容呢却全为空,那么通过比对YmsConfigDTO类的属性发现json文件不应该包含datasource层,故找到问题所在

启动报错sql异常,premises@10.8.32.101没有权限
由于10.8.32.101是我在家办公开启的vpn地址,我认为是没有权限的缘故
经排查确认其实是密码错误,yms_dynds.json文件中的密码由密文更换为非密文即可。
因此我将yms_dynds.json内容更换为本地环境进行测试,数据可以添加到连接池中配置的数据库,可以成功增删改查!
测试
本地项目启动后调用接口查看数据是否添加到连接池中配置的数据库
增
删
改
查