当前位置: 首页 > news >正文

网站开发遇到的问题推广产品的方法

网站开发遇到的问题,推广产品的方法,户外网站做,网站建立公司10、jeecg 默认为空的字段值是如何被填充的? 1、前言 用过 jeecg 的小伙伴#xff0c;在 jeecg 实体中常见下面几个字段#xff1a; /**创建人名称*/ private java.lang.String createName; /**创建人登录名称*/ private java.lang.String createBy; /**创建日期*/ private… 10、jeecg 默认为空的字段值是如何被填充的? 1、前言 用过 jeecg 的小伙伴在 jeecg 实体中常见下面几个字段 /**创建人名称*/ private java.lang.String createName; /**创建人登录名称*/ private java.lang.String createBy; /**创建日期*/ private java.util.Date createDate; /**更新人名称*/ private java.lang.String updateName; /**更新人登录名称*/ private java.lang.String updateBy; /**更新日期*/ private java.util.Date updateDate; 而我们在使用过程中并没有给其赋但是存入数据库后却突然冒出值了其实不然在这用到了 [拦截器]下面详看一下 jeecg 中的实现代码。   2、代码分析 在 org.jeecgframework.core.aop 包下有个 HiberAspect.java这就是今天的主角拦截器 也许你会有疑问为何要把拦截器放在 aop 这个目录下呀sorry i dont know...     2.1、为何要使用 其实这种需求很常见比如创建一笔数据每次创建一笔数据都要去给 createBy createDate.. 赋值岂不是很麻烦 而恰好 Hibernate 提供的拦截器就能帮我们实现这样繁琐的问题。 当 session 执行 save()、update()、saveOrUpdate()、delete()以及 flush() 方法时就会调用拦截器的相关方法然后在这些方法中实现赋值的逻辑。    2.2、了解如何用 对于用户定义的拦截器必须要实现 org.hibernate.Interceptor 这个接口在这个接口中主要定义了以下方法。 onDelete() 删除时调用. onFlushDirty()更新数据时调用但数据还没有更新到数据库 onSave()保存数据的时候调用数据还没有保存到数据库.preFlush(): 保存删除更新 在提交之前调用 (通常在 postFlush 之前).postFlush()提交之后调用(commit之后) 而在 org.hibernate 包中还提供了 Intercepto 接口的一个实现类 EmptyInterceptor这个类中的所有方法实际上什么也不做用户自定义的拦截器类也可以扩展此类。  类继承该接口是官方推荐并且 jeecg 也是这样用的。 jeecg  onSave() 方法实现赋值 /* 拦截hibernate save方法(即保存对象之前回调此方法),添加审计信息 * entity - POJO Instance * id - POJO OID * state - POJO Instance中每一个属性的值所组成的集合(OID属性除外)  * propertyNames - POJO Instance中每一个属性的属性名组成的集合(OID属性除外)  * types - POJO Instance中每一个属性所属类型所对应的Hibernate类型组成的集合(OID属性除外) */ public boolean onSave(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) {TSUser currentUser null;try {currentUser ResourceUtil.getSessionUser(); // session 中获取用户信息} catch (RuntimeException e) {//logger.warn(当前session为空,无法获取用户);}if(currentUsernull){return true;}try {//添加数据for (int index0;indexpropertyNames.length;index){/*找到名为创建时间的属性*/if (DataBaseConstant.CREATE_DATE.equals(propertyNames[index])||DataBaseConstant.CREATE_TIME.equals(propertyNames[index])){/*使用拦截器将对象的创建时间属性赋上值*/if(oConvertUtils.isEmpty(state[index])){state[index] new Date();}continue;}/*找到名为创建人的属性*/else if (DataBaseConstant.CREATE_BY.equals(propertyNames[index])){/*使用拦截器将对象的创建人属性赋上值*/if(oConvertUtils.isEmpty(state[index])){state[index] ResourceUtil.getUserSystemData(DataBaseConstant.SYS_USER_CODE);}continue;}/*找到名为创建人名称的属性*/else if (DataBaseConstant.CREATE_NAME.equals(propertyNames[index])){/*使用拦截器将对象的创建人名称属性赋上值*/if(oConvertUtils.isEmpty(state[index])){state[index] ResourceUtil.getUserSystemData(DataBaseConstant.SYS_USER_NAME);}continue;}/*找到名为创建人名称的属性*/else if (DataBaseConstant.SYS_USER_CODE.equals(propertyNames[index])){/*使用拦截器将对象的创建人名称属性赋上值*/if(oConvertUtils.isEmpty(state[index])){state[index] ResourceUtil.getUserSystemData(DataBaseConstant.SYS_USER_CODE);}continue;}/*找到名为创建人部门的属性*/else if (DataBaseConstant.SYS_ORG_CODE.equals(propertyNames[index])){/*使用拦截器将对象的创建人部门属性赋上值*/if(oConvertUtils.isEmpty(state[index])){state[index] ResourceUtil.getUserSystemData(DataBaseConstant.SYS_ORG_CODE);}continue;}/*找到名为创建人部门的属性*/else if (DataBaseConstant.SYS_COMPANY_CODE.equals(propertyNames[index])){/*使用拦截器将对象的创建人部门属性赋上值*/if(oConvertUtils.isEmpty(state[index])){state[index] ResourceUtil.getUserSystemData(DataBaseConstant.SYS_COMPANY_CODE);}continue;}/*找到名为流程状态的属性*/else if (DataBaseConstant.BPM_STATUS.equals(propertyNames[index])){/*使用拦截器将对象的流程状态属性赋上值*/if(oConvertUtils.isEmpty(state[index])){state[index] String.valueOf(1);//1未提交}continue;}}} catch (RuntimeException e) {e.printStackTrace();}return true; } jeecg  onFlushDirty() 方法脏数据回调 /*** 拦截hibernate flush方法(即检查到脏对象时回调此方法),添加审计信息* entity - POJO Instance* id - POJO OID* state - POJO Instance中每一个属性的值所组成的集合(OID属性除外) * propertyNames - POJO Instance中每一个属性的属性名组成的集合(OID属性除外) * types - POJO Instance中每一个属性所属类型所对应的Hibernate类型组成的集合(OID属性除外)*/ public boolean onFlushDirty(Object entity, Serializable id, Object[] state, Object[] previousState, String[] propertyNames, Type[] types) { ....}   2.3、xml配置 首先补充一点Hibernate 的拦截器有两种设置方式 一种是使用sessionFactory.openSession(Interceptor interceptor)这样的拦截器只会针对该session有效又叫做局部拦截器。 另一种是使用Configuration的setInterceptor(Interceptor interceptor)方法设置这样的拦截器对每一个session都有效又称之为全局拦截器全局拦截器 spring-mvc-hibernate 配置 !-- sessionFactory -- bean idsessionFactory classorg.springframework.orm.hibernate4.LocalSessionFactoryBean property namedataSource refdataSource / ...... property nameentityInterceptor refhiberAspect/property ...... /bean 将审计拦截器作为 sessionFactory 的属性进行配置即表示此拦截器可以被所有 Session 实例共享 等同的代码表示方式为Configuration.setInterceptor(Interceptor inter)。  也就是上方补充拦截器设置方式二。   3、最后 jeecg 提供的不一定是唯一实现方式通过 aop 也可实现如有想去自定查询。 博客地址http://www.cnblogs.com/niceyoo   posted 2018-12-19 21:37 niceyoo 阅读(...) 评论(...) 编辑 收藏
http://www.zqtcl.cn/news/501967/

相关文章:

  • 淘宝放单网站怎么做app制作公司哪个好
  • 地税城市维护建设税网站是什么意思订阅号怎么开通小程序
  • 网站添加二级域名wordpress火车头免登录发布
  • 大美工设计网站官网中山网站建设找丁生
  • 做算命网站标准版网站制作
  • 建设网站是普通办公吗温州 网站 公司
  • 哪里做外贸网站汉服网站开发背景
  • 建模外包网站企业代码查询入口
  • wordpress快速仿站视频教程广州知名网站建设哪家好
  • 楼盘网站开发网站服务理念
  • 私人ftp服务器seo整站如何优化
  • 做网站的工作叫什么美工需要会哪些软件
  • 阿克苏网站建设咨询海南跨境免税电商入驻流程
  • 母婴网站模板在线设计网站海报
  • 网站关键词优化公司哪家好如何跟客户沟通网站建设
  • 山西省经济建设投资公司网站滁州网站建设
  • 优秀设计网站哈尔滨vi设计公司
  • 如何建购物网站论坛类的网站怎样做
  • 河南省建设工程招投标协会网站安卓开发软件工具
  • 中国空间站wordpress无法选择服务器配置
  • 郑州家居网站建设服务公司asp网站助手
  • 做网站一般几个人WordPress 中英文翻译
  • 有没有兼职做网站的化工企业建网站
  • 石家庄展厅设计公司黑帽seo怎么做网站排名
  • 网站开发维护成本计算wordpress 无法访问
  • 永久免费做网站营销软文广告
  • 网站规划怎么写wordpress如何搭建博客
  • 网站索引页面网站做302重定向会怎么样
  • 精品成品冈站源码免费企业网站的内容模块
  • 网站策划的最终体现南宁网站建设培训学校