L2源码解析(未写完)

  • 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 配置 取消类头上注解则功能失效。

待续。

转载于:https://my.oschina.net/88ybg/blog/1537069

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值