-
quanmin_admin / pom.xml
这里是 父POM 定义项目拥有的模块
<module>main</module>
定义主启动模块,还含有系统的其他配置,数据源配置,缓存配置,在线API接口配置,springmvc 配置等。
<module>ybg_base_jdbc</module>
定义了JdbcTemplate 数据库操作封装的类
<module>ybg_rbac_base</module>
权限的底层代码,只含有dao,daoimp,service,service 的底层。不含controller
<module>ybg_rbac</module>
定义了权限。使用spring Security权限框架进行用户访问的权限拦截
<module>ybg_login_qq</module>
<module>ybg_login_baidu</module>
<module>ybg_login_sina</module>
这三个第三方登录登录模块依赖权限<module>ybg_rbac</module> 模块。
<module>ybg_quartz</module>
是定时任务框架
<module>ybg_base_jar</module>
主要jar包编译。项目绝大对数jar包都放在此模块中,该模块没有任何java代码
-
/ quanmin_admin / main
/ quanmin_admin / main / src / main / java / com / ybg / config / CacheConfiguration.java 此类是启用缓存注解的类。和ehcache.xml 文件一起使用。 当注释@Configuration @EnableCaching两行,则系统取消使用缓存。
使用注解的方法,/ quanmin_admin / ybg_rbac_base / src / main / java / com / ybg / rbac / role / service / RoleServiceImpl.java 中 有实例,不懂的请自行百度学习下相关内容。
@CacheEvict(value = "roleCache", allEntries = true)
清除所有在roleCache 下的缓存 返回结果可以为void
@Cacheable(value = "roleCache", key = "#root.method.name+#root.args[0]")
以方法名+第一个参数作为key 进行结果缓存,返回结果不可为void ,重点 :参数非基本类型,请把类重写toString方法,
@Caching(evict = { @CacheEvict(value = "resourcesCache", allEntries = true), @CacheEvict(value = "resroleCache", allEntries = true) })
清除多个缓存。
其中 resourcesCache roleCache 等 实例的创建要在ecache.xml中声明
-
com.ybg.config.DataBaseConfiguration
@Configuration 注入到 spring 容器中
@Primary//表示默认优先使用
@Bean(DataBaseConstant.DB_SYS)
@ConfigurationProperties("spring.datasource.druid.sys")
public DataSource dataSourceSys() {
return DruidDataSourceBuilder.create().build();
}
@Bean(DataBaseConstant.DB_OA)
@ConfigurationProperties("spring.datasource.druid.oa")
public DataSource dataSourceOa() {
return DruidDataSourceBuilder.create().build();
}
@Bean(name = DataBaseConstant.DB_EDU)
@ConfigurationProperties("spring.datasource.druid.edu")
public DataSource dataSourceEdu() {
return DruidDataSourceBuilder.create().build();
}
/** 数据库常量 **/
public class DataBaseConstant {
/** 数据源-系统管理 (默认)**/
public static final String DB_SYS = "dataSourceSys";
/** 数据源-企业管理 **/
public static final String DB_OA = "dataSourceOa";
/** 数据源-教育管理 **/
public static final String DB_EDU = "dataSourceEdu";
// 分隔线-----------------------------------------------
/** JDBC模板方法-使用系统数据库 (默认)**/
public static final String JD_SYS = "sysJdbcTemplate";
/** JDBC模板方法-使用OA数据库- **/
public static final String JD_OA = "oaJdbcTemplate";
/** JDBC模板方法-使用教育数据库 **/
public static final String JD_EDU = "eduJdbcTemplate";
}
其中 @Primary 代表默认使用,@Bean 后面 写明 Bean 的别名, 加载Bean 时候,根据需要 使用不同的数据源。
数据源的配置在application.properties中,根据不同的前缀去读
如
@Autowired
@Qualifier(DataBaseConstant.DB_OA)//定义的映射数据源
DataSource dataSource;
这种方式 就是直接使用数据源。同理 JdbcTemplate 也是。
- com.ybg.base.jdbc.BaseDao
该类是本人自行封装的数据库操作。
该类是抽象类,抽象方法是
public abstract JdbcTemplate getJdbcTemplate() ;
由继承他的子类去实现。由于实现了多数据源 ,所以在baseDao 改成抽象方法。
例子是 com.ybg.rbac.user.dao.UserDaoImpl 如果不想使用默认JdbcTemplate,
请加上 @Qualifier 注解转换 数据库操作模板映射的数据源,加上您需要的JdbcTemplate。
BaseDao 中包含以下的方法。
public String baseCreate(BaseMap<String, Object> createmap, String table_name, String id_name) throws Exception ;
该方法返回UUID的主键,是本项目推荐的创建主键的方式。
/** 新增数据(单个) 不推荐使用
*
* @param createmap
* 数据集合
* @param 表名称
* @return id 是否返回id
* @param T
* 返回的类型
* @throws Exception **/
public Object basecreate(final Map<String, Object> createmap, String table_name, boolean returnid, Object idtype) throws Exception ;
该方法是 新增 数据,返回自增的主键如int long ,不推荐使用,日后系统也会删除的主键机制。
public String saveOrUpdate(BaseMap<String, Object> createmap, String table_name, String id_name, String[] unionkey) throws Exception ;
新增或者保存。仅适用于mysql,而且主键是UUID,拥有的非主键唯一索引的表才使用,比较少用。
/** 更新数据,条件 和 需要更新的字段都不能为空 不限个数个条件
*
* @author Deament
* @param updatemap
* 需要更新的字段和值
* @param wheremap
* 更新中的条件字段和值
* @param table_name
* 表的名称 **/
public int baseupdate(final BaseMap<String, Object> updatemap, final BaseMap<String, Object> wheremap, String table_name) ;
如注解所说。当map 为空或者length为0时候,不执行更新操作。
/** 删除 但是不允许全表删除 条件不允许为空
*
* @author Deament
* @param conditionmap
* 删除的字段和值
*
* @param table_name
* 表的名称 **/
public int baseremove(final BaseMap<String, Object> conditionmap, String table_name)
删除方法
/** 用于统计个数 一般用于分页,或者直接得出总记录数 **/
public int queryForInt(StringBuilder sql)
- com.ybg.config.SpringMVCConfiguration
springmvc 配置,基本没有什么用途 但还是写一下吧
- com.ybg.config.Swagger2Configuration
swagger 在线API 配置 取消类头上注解则功能失效。
待续。