1.js插件ueditor,文本编辑(为了让后台保存文章格式的需求)
百度开发的文本编辑器,简单到注释都不用我写了
1.页面添加引用
<script type="text/javascript" charset="utf-8" src="${basePath }js/ueditor/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="${basePath }js/ueditor/ueditor.all.min.js"> </script>
<!--建议手动加在语言,避免在ie下有时因为加载语言失败导致编辑器加载失败-->
<!--这里加载的语言文件会覆盖你在配置项目里添加的语言类型,比如你在配置项目里配置的是英文,这里加载的中文,那最后就是中文-->
<script type="text/javascript" charset="utf-8" src="${basePath }js/ueditor/lang/zh-cn/zh-cn.js"></script>
2.js代码引用
添加路径url,强烈建议(影响到项目引用,图片之类的)
window.UEDITOR_HOME_URL = "${basePath }js/ueditor/";
var ue = UE.getEditor('editor');
效果:
2.PowerDesigner+hibernate逆向工程
逆向这东西早就知道了(抠鼻),主要是PowerDesigner的操作
1.制作概念数据模型图
多对多中可以指定中间表的column,像图中就在中间表中添加了一个状态列名,不指定就由pd自动指定两张表的主键值生成。
2.把概念图转换成物理模型图。
点点点
3.确认完之后可以获得相应数据库的建表与关联语句
4.然后配合hibernate逆向工程杀伤力极强(0.0!!!)
3.BaseService抽取
出于各模块有很多相似的业务方法(增删改查),抽取出一个泛型给Service引用方便修改维护。
1.抽出如图的方法,接口类
public interface BaseService<T> {
public void save(T entity);
public void update(T entity);
public void delete(Serializable id);
public T findObjectById(Serializable id);
public List<T> findAll();
public List<T> findAll(String hql,List<Object> params);
public List<T> findAll(QueryHelper qh);
PageResult getPageResult(QueryHelper qh, int pageNo, int pageSize);
}
实现类:
问题在于如何让不同模块的子类根据泛型注入相应的Dao层。
public class BaseServiceImpl<T> implements BaseService<T> {
private BaseDao<T> baseDao;
public void save(T entity) {
// TODO Auto-generated method stub
baseDao.save(entity);
}
public void update(T entity) {
// TODO Auto-generated method stub
baseDao.update(entity);
}
public void delete(Serializable id) {
// TODO Auto-generated method stub
baseDao.delete(id);
}
public T findObjectById(Serializable id) {
// TODO Auto-generated method stub
return baseDao.findObjectById(id);
}
public List<T> findAll() {
// TODO Auto-generated method stub
return baseDao.findAll();
}
解决方式:(Spring的set方法注入方式)
让子类在set方法中为自己注入dao的同时给父类设置与本类相同的dao
(想法很重要!!!)
@Service("infoService")
public class InfoServiceImpl extends BaseServiceImpl<Info> implements InfoService{
private InfoDao infoDao;
@Resource
public void setInfoDao(InfoDao infoDao) {
super.setBaseDao(infoDao);
this.infoDao = infoDao;
}
}