近期公司一直在做项目,主要用到了springMVC,eseayui,hibernate几大框架。近一个月的时间,个人就目前自我知识给予分享。

很多公司使用mybatis产品,综合所述其最大优点是全SQL操作,灵活方便。

个人认为hibernate框架其优势比较突出。其一是因为它作为纯ORM产品,使用注解或是配置文件做好与数据表映射之后,操作实体就相当于操作数据表。而对于普通业务,多数是基于增删改操作的,较为复杂的可能就是查询操作了。实体映射关系太过于复杂容易引发牵一动百的效果,而业务逻辑中必须要这么做。那么,SQL就是最好的选择了。

  hibernate 中提供了org.hibernate.Query 接口。由 org.springframework.orm.hibernate3.support.HibernateDaoSupport.getSession() 方法返回的Sesson创建一个

org.hibernate.Session.createSQLQuery(String arg0) throws HibernateException 方法,该方法完全以SQL方式操作数据库表,抛开了实体bean的映射。
完整代码如下:
//查找ID
public String findTypeIdByTitle(String title) throws Exception {
String sql = "select pk_id from decoration_type_info where title =:title";
Query query = this.getSession().createSQLQuery(sql);
query.setString("title", title);
String pkId = (String) query.uniqueResult();
return pkId;
}
//更新方法
public void updateTypeById(DecorationTypeInfo typeInfo) throws Exception{
String sql = "update decoration_type_info set title =:title,REMARK =:remark,UPDATE_BY =:updateBy,"
+ " UPDATE_DATE = to_timestamp(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'), 'yyyy-mm-dd hh24:mi:ss:ff') "
+ " where pk_id =:pkId";
Query query = this.getSession().createSQLQuery(sql);
query.setString("title", typeInfo.getTitle());
query.setString("remark", typeInfo.getRemark());
query.setString("updateBy", typeInfo.getUpdateBy());
query.setString("pkId", typeInfo.getPkId());
query.executeUpdate();
}
//删除方法
public void delTypeById(String pkId)throws Exception {
String sql = " delete from unit_decoration_type_info where fk_decoration_type_id=?";
Query query = this.getSession().createSQLQuery(sql);
query.setParameter(0, pkId);
query.executeUpdate();
}
//新增方法
public void addType(DecorationTypeInfo typeInfo,String themeId)throws Exception{
if (StringUtils.isBlank(typeInfo.getPkId())) {
String id = GeneratePKID.getPKID();
typeInfo.setPkId(id);
} String sql = "insert into decoration_type_info (PK_ID,TITLE,PRICE,REMARK,FK_THEME_ID,CREATE_BY,CREATE_DATE,UPDATE_BY,UPDATE_DATE) "
+ " values (?,?,?,?,?,?,to_timestamp(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'), 'yyyy-mm-dd hh24:mi:ss:ff'),"
+ " ?,NULL)";
Query query = this.getSession().createSQLQuery(sql);
query.setParameter(0, typeInfo.getPkId());
query.setParameter(1, typeInfo.getTitle());
query.setParameter(2, typeInfo.getPrice());
query.setParameter(3, typeInfo.getRemark());
query.setParameter(4, themeId);
query.setParameter(5, typeInfo.getCreateBy());
query.setParameter(6, typeInfo.getUpdateBy()); query.executeUpdate();
}
//所有导入的Hibernate包

import org.apache.commons.lang.StringUtils;
import org.hibernate.Query;
import org.hibernate.transform.Transformers;
import org.springframework.stereotype.Repository;

                                         注明:以上只作为个人学习观点,不涉及任何商业或法律。

再来说说springMVC。

个人目前理解为 :

  controller中的@Controller()和@RequestMapping("/xx/xx")注解作为action请求的唯一标志,不容许一个项目中有重复出现。

  service中的@Service("xxx1")注解作为全局唯一的service标识。

  dao中的xxxImpl类中@Repository("xx1")注解作为全局某个DAO的唯一标识。

在service服务层注入引用DAO需要@Autowired和@Qualifier("xx1")配合使用,这样便于更准确的找到引用的DAO。

controller引用service同样使用@Autowired和@Qualifier("xxx1")作为查找的条件 。

其优势总结为:AOP切面编程可以随意中任何一个类中引用其它包的资源,只要加上@Autowired自动装配注解和@Qualifier("")筛选注解即可达到一次编写,到处使用的目的。

    这样一来,我们只要编写一个通用业务处理的方法,那么中项目的任何地方都可以调用。很大程度上减轻了工作量和代码冗余量 。

//Controller段代码

@Controller()
@RequestMapping("/xx/xxx")
public class TypeController { @Autowired
@Qualifier("typeservice")
private TypeService typeService; private static Log log = LogFactory.getLog(TypeController.class); @RequestMapping("/list")
public ModelAndView bookCycleInfoList(HttpServletRequest request,
HttpServletResponse response) {
ModelAndView view = new ModelAndView();
try {
view.setViewName("/bookCycleInfo/bookCycleInfo_list");
} catch (Exception e) {
log.error("TypeController.list : " + e.getMessage());
}
return view;
}
}
//Service代码

@Service("typeservice")
public class TypeService { @Autowired
@Qualifier("typedao")
private TypeDao type; public List<TreeList> queryRoomTree(String estateId) throws Exception{
try {
return bookCycleInfoDao.queryRoomTree(estateId);
} catch (Exception e) {
throw e;
}
}
//DAO中只有接口定义,本代码不做演示

@Repository("typedao")
public class TypeDaoImpl { @Override
public List findTypeList() throws Exception{ try {
//代码体
return null;
} catch (Exception e) {
throw e;
}
}
}

                                      注明:作为初学者,该共享知识仅作为参考,不能保证完全准确性 。

 

下面说说easyUI框架 。首先,easyUI框架是完全基于JS的,个人认为它是jquery和ajax的综合体 。

其中包含很多界面控件和JS代码控制。常用的控件有datagrid,treegrid,Dialog,Menu,TextBox,NumberBox,DateTimeBox等等,ajax也非常简单,如下代码所示

<script type="text/javascript">
$(function() {
var ids ="${editId}";
$.ajax({
type : "post",
async : false,
url : "${pageContext.request.contextPath}/xx/xxx/findTypeById.action",
data : {
pkId : ids
},
dataType : "json",
success : function(obj) {
$("#pkId").textbox('setValue', obj[0].PKID);
$("#title").textbox('setValue', obj[0].TITLE);
$("#content").textbox('setValue', obj[0].CONTENT);
}
});
});
</script>

    更多easyUI知识,请看官网 http://www.jeasyui.com/ 和中文网 http://www.jeasyui.net/ 。

个人感触:

个人虽然已经有一年多的开发经验,但做的项目和写的代码为之甚少。进新公司一个月了快,虽然累,但学到了很多可用实用的东西。

所以非常开心,工作之余分享下自己的成果,既是对自我的检验,也是对雏步难行阶段学者的帮助 。

大分享-hibernate,springmvc,easyui简要介绍的更多相关文章

  1. 简要介绍BASE64、MD5、SHA、HMAC几种方法。

    加密解密,曾经是我一个毕业设计的重要组件.在工作了多年以后回想当时那个加密.解密算法,实在是太单纯了.     言归正传,这里我们主要描述Java已经实现的一些加密解密算法,最后介绍数字证书.     ...

  2. maven SpringMVC easyUI项目创建

    在Eclipse中使用Maven创建SpringMVC项目,项目所需软件及工具可以在官网下载.Maven.Nexus及Eclipse集成Maven等到此配置完毕. 1.Maven创建Web项目. 打开 ...

  3. [转] Android资源管理框架(Asset Manager)简要介绍和学习计划

    转自:http://blog.csdn.net/luoshengyang/article/details/8738877 Android应用程序主要由两部分内容组成:代码和资源.资源主要就是指那些与U ...

  4. Dalvik虚拟机简要介绍和学习计划

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8852432 我们知道,Android应用程序是 ...

  5. Android资源管理框架(Asset Manager)简要介绍和学习计划

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8738877 Android应用程序主要由两部分 ...

  6. Android应用程序组件Content Provider简要介绍和学习计划

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6946067 在Android系统中,Conte ...

  7. Android窗口管理服务WindowManagerService的简要介绍和学习计划

    在前一个系列文章中,我们从个体的角度来分析了Android应用程序窗口的实现框架.事实上,如果我们从整体的角度来看,Android应用程序窗口的 实现要更复杂,因为它们的类型和作用不同,且会相互影响. ...

  8. [转]java加密算法简要介绍

    本篇内容简要介绍BASE64.MD5.SHA.HMAC几种加密算法.     BASE64编码算法不算是真正的加密算法.     MD5.SHA.HMAC这三种加密算法,可谓是非可逆加密,就是不可解密 ...

  9. LaTeX 编辑软件WinEdt使用简要介绍

    LaTeX 编辑软件WinEdt使用简要介绍   LaTeX 的起源非常牛逼,有一套书大家可能听说过<计算机程序设计艺术>,写了好几本.当然能在计算机方面写上艺术俩字的书恐怕不是我们一般人 ...

随机推荐

  1. java中获取日期和时间的方法总结

    1.获取当前时间,和某个时间进行比较.此时主要拿long型的时间值. 方法如下:  要使用 java.util.Date .获取当前时间的代码如下 Date date = new Date(); da ...

  2. [转]Android View.onMeasure方法的理解

    转自:http://blog.sina.com.cn/s/blog_61fbf8d10100zzoy.html Android View.onMeasure方法的理解 View在屏幕上显示出来要先经过 ...

  3. 关于WPF程序只运行一个实例的方法

    找到的方法有两种: 1)http://www.cnblogs.com/liuyazhou/archive/2009/11/02/1594364.html 2)http://codereview.sta ...

  4. nginx执行文件替换掉之后重启提示permission denied

    重启的时候显示 -bash: /usr/local/nginx/sbin/nginx: Permission denied 进入nginx执行文件的目录:

  5. JQuery data API实现代码分析

    JQuery data 接口是什么? .data() Store arbitrary data associated with the matched elements or return the v ...

  6. AngularJS基础概要整理(下)

    五.AngularJS Scope(作用域) Scope(作用域)是应用在HTML(视图)和JavaScript(控制器)之间的纽带. Scope是一个对象,有可用的方法和属性. Scope可应用在视 ...

  7. Node.js的核心与红利(zz)

    唯有明晰历史,才能了然当下,预知未来.作者从历史角度解读Node.js,帮助读者透过猜忌和谣言,看清真实的Node.js,了解Node.js的核心与红利. 令人惴惴不安的Node.js 我们越来越频繁 ...

  8. 说一下linux中shell的后台进程与前台进程

    环境: 操作系统:archlinux; 终端模拟器:rxvt-unicode(urxvt); shell:bash; 这里所说的后台进程是指在命令行后面加一个 ampersand(&),前台进 ...

  9. 在linux中访问virtualbox的共享文件夹

    1.在客户机里需要安装Virtualbox的增强功能. 2.使用virtualbox的图形界面设置好共享文件夹. 3.假设你设置的共享文件夹的名称是 share,使用如下命令在客户机的linux系统中 ...

  10. 处理mysql上百万条数据的优化

    php 处理上百万条的数据库如何提高处理查询速度 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字 ...