}
}
}
return sql.toString();
}
转换类处理逻辑:
public class JsonTypeHandler<T> extends BaseTypeHandler<T> {公共代码统一化对于多个项目中使用到的代码,需要根据场景进行公共化统一管理,避免公共代码散落在各个服务中,难以维护 。
private static final Gson gson = new Gson();
private Class<T> clazz;
public JsonTypeHandler(Class<T> clazz) {
if (clazz == null) {
throw new IllegalArgumentException("Type argument cannot be null");
} else {
this.clazz = clazz;
}
}
public void setNonNullParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i, this.toJson(parameter));
}
public T getNullableResult(ResultSet rs, String columnName) throws SQLException {
return this.toObject(rs.getString(columnName), this.clazz);
}
public T getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
return this.toObject(rs.getString(columnIndex), this.clazz);
}
public T getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
return this.toObject(cs.getString(columnIndex), this.clazz);
}
private String toJson(T object) {
try {
return object instanceof String ? (String)object : gson.toJson(object);
} catch (Exception var3) {
throw new RuntimeException(var3);
}
}
private T toObject(String content, Class<?> clazz) {
if (content != null && !content.isEmpty()) {
try {
return clazz == String.class ? content : gson.fromJson(content, clazz);
} catch (Exception var4) {
throw new RuntimeException(var4);
}
} else {
return null;
}
}
}
根据场景的不同,可以有几种管理方式:
- 基于公共jar包的管理
- 基于git源代码的管理
- 基于公共服务的管理
基于git源代码的管理如果公共的代码修改频率比较高,可以基于git的subtree来处理公共代码的管理问题 。
- 创建一个项目,用于存放需要公用的代码,正常创建即可
- 在需要使用同步代码的项目中执行如下命令(只需要执行一次):
# module是取的别名
git remote add -f module ${上面的项目git地址}
# 将这个项目拉取到 src/module目录下
git subtree add --prefix=src/module module master --squash
- 在公共项目中修改模块代码后,正常push即可
- 需要同步的项目,执行如下命令(如果需要同步共享代码,则执行):
git subtree pull --prefix=src/module module master
文章插图
基于公共服务的管理如果公用的逻辑是一个独立的功能,后续可以作为服务对外提供服务 。那可以考虑将这些代码独立为服务来对外提供服务 。
总结本文从几个维度来考量在搭建一个项目框架时需要考虑的问题,以及对应的解决方案 。
【开发框架搭建考量】
推荐阅读
- App开发之客户端框架搭建
- 企业知识库的搭建步骤
- 教你本地k8s集群搭建云原生 Tekton CICD 流水线
- 10个对web开发人员有用的HTML文件上传技巧
- 12种Flutter开发工具推荐
- 手把手搭建RTSP流媒体服务器
- 软件开发人员应该了解的2021年技术趋势
- 开发者应知道的方法论:JavaScript中的DILOS原则
- 一代深度学习框架研究
- 轻量级H5 app开发实践之总结