博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC4+Hibernate5+SQLServer 2014 整合(包括增删改查分页)
阅读量:6256 次
发布时间:2019-06-22

本文共 10363 字,大约阅读时间需要 34 分钟。

前言

     前面整合完了SpringMVC+MyBatis,自然也少不了SpringMVC+Hibernate,严格来说Hibernate才是我们真正想要的ORM框架么。只记得最初学习hibernate时,又是config.xml又是hml.xml,各种的xml。 今天试着用SpringMVC4整合Hibernate5,使用自动扫描注解的方式处理hibernate类文件,几乎零配置,这就爽很多了是不是。

 

 

开发环境

    SpringMVC4、Hibernate5、SQLServer2014

 

项目结构

SpringMVC+Hibernate整合

1、查询分页数据

   从控制台里看hql执行情况

2、pom.xml,先把依赖的jar准备好

1 
3
4.0.0
4
com.autohome
5
SpringMVC6
6
war
7
1.0-SNAPSHOT
8
SpringMVC6
9
http://maven.apache.org
10
11
12
org.springframework
13
spring-beans
14
4.3.6.RELEASE
15
16
17
org.springframework
18
spring-context
19
4.3.6.RELEASE
20
21
22
org.springframework
23
spring-core
24
4.3.6.RELEASE
25
26
27
org.springframework
28
spring-test
29
4.3.6.RELEASE
30
31
32
org.springframework
33
spring-web
34
4.3.6.RELEASE
35
36
37
org.springframework
38
spring-webmvc
39
4.3.6.RELEASE
40
41
42
org.springframework
43
spring-jdbc
44
4.3.6.RELEASE
45
46
47
org.springframework
48
spring-orm
49
4.3.6.RELEASE
50
51
52
junit
53
junit
54
4.10
55
56
57
58
javax.servlet
59
javax.servlet-api
60
3.1.0
61
62
63
64
org.hibernate
65
hibernate-core
66
5.2.9.Final
67
68
69
com.microsoft.sqlserver
70
sqljdbc4
71
4.0
72
73
74
75
jstl
76
jstl
77
1.2
78
79 80
81
taglibs
82
standard
83
1.1.2
84
85 86
87
88
SpringMVC6
89
90
View Code

3、web.xml

Archetype Created Web Application
contextConfigLocation
classpath:applicationContext.xml
org.springframework.web.context.ContextLoaderListener
SpringMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc-servlet.xml
SpringMVC
/

4、springmvc-servlet.xml。这里整合主要配置jdbc数据源、hibernate sessionfactory、事务管理器

org.hibernate.dialect.SQLServer2008Dialect
true
true
com.autohome.model

5、UserInfoDao

package com.autohome.dao;import com.autohome.model.UserInfo;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.query.Query;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;import org.hibernate.Transaction;import java.util.List;@Repositorypublic class UserInfoDao {    @Autowired    private SessionFactory sessionFactory;    public List
listAllUser(){ String hql="from UserInfo"; Session session = sessionFactory.openSession(); Query query = session.createQuery(hql); List
list = query.list(); return list; } public List
getAllUser(){ Session session = sessionFactory.openSession(); String sql="select * from t_userinfo"; //执行原生sql查询语句 Query query = session.createSQLQuery(sql); List
list=query.list(); //执行原生增加、删除、修改语句 //query.executeUpdate(); return list; } public List
listPageUser(int offset,int rows){ String hql="from UserInfo"; Session session = sessionFactory.openSession(); Query query = session.createQuery(hql); query.setFirstResult(offset); query.setMaxResults(rows); List
list = query.list(); return list; } public void save(UserInfo model){ Session session = sessionFactory.openSession(); Transaction tran=session.getTransaction(); tran.begin(); session.save(model); tran.commit(); } public void delete(Integer id){ String hql="delete from UserInfo where id=?"; Session session = sessionFactory.openSession(); Transaction tran=session.getTransaction(); tran.begin(); Query query = session.createQuery(hql); query.setParameter(0,id); query.executeUpdate(); tran.commit(); } public void update(UserInfo model){ Session session = sessionFactory.openSession(); Transaction tran=session.getTransaction(); tran.begin(); session.update(model); tran.commit(); }}

6、UserInfoService

package com.autohome.service;import com.autohome.dao.UserInfoDao;import com.autohome.model.UserInfo;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class UserInfoBiz {    @Autowired    UserInfoDao userInfoDao;    public List
listAllUser(){ return userInfoDao.listAllUser(); } public List
getAllUser(){ return userInfoDao.getAllUser(); } public List
listPageUser(int offset,int rows){ return userInfoDao.listPageUser(offset,rows); } public void save(UserInfo model){ userInfoDao.save(model); } public void update(UserInfo model){ userInfoDao.update(model); } public void delete(Integer id){ userInfoDao.delete(id); }}

 7、UserController

package com.autohome.controller;import com.autohome.model.UserInfo;import com.autohome.service.UserInfoBiz;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import java.util.List;@Controller@RequestMapping("/User")public class UserController {    @Autowired    UserInfoBiz userInfoBiz;    @RequestMapping("/index")    public ModelAndView index(int pageIndex,int pageSize){//        UserInfo model=new UserInfo();//        model.setName("zhangsan");//        model.setAddress("USA2017-03-28");////        userInfoBiz.save(model);//        UserInfo model=new UserInfo();//        model.setId(1);//        model.setName("李四");//        model.setAddress("USA2017-03-28");//        userInfoBiz.update(model);        // userInfoBiz.delete(51);        List
list = userInfoBiz.listPageUser((pageIndex-1)*pageSize,pageSize); List
users = userInfoBiz.getAllUser(); System.out.println("size:"+users.size()); ModelAndView mav =new ModelAndView("index"); mav.addObject("list",list); mav.addObject("title","用户列表"); return mav; }}

 

8、UserInfo POJO

package com.autohome.model;import javax.persistence.*;import java.io.Serializable;@Entity@Table(name="t_userinfo")public class UserInfo implements Serializable {    @Id    @Column(name="id")    @GeneratedValue(strategy =GenerationType.IDENTITY)    private Integer id;    @Column(name="name")    private String name;    @Column(name="address")    private String address;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }}

  

总结

     在做这个整合demo的时候遇到两个问题,第一是实现分页调用querysetFirstResult和setMaxResults一直报一个索引超出。后更改hibernate断言SQLServer2008Dialect,一开始我用的是SQLServerDialect,因为本地连接sql server2014。第二是在jsp中用jstl显示controller中传过来的值时jsp中无法显示,百度了下是mavel默认生成web.xml的命名空间导致的(查看上面贴的web.xml代码)

     另外记得以前学习hibernate类文件全部是用hml.xml来写,现在则是直接扫描model包内的所有实体,实体使用Entity、Table、ID、Column注解,sql server id自增用注解GeneratedValue(strategy =GenerationType.IDENTITY),也确实从项目开发效果和代码整洁程度有很大提高。

 

参考

 

转载地址:http://mqtsa.baihongyu.com/

你可能感兴趣的文章
简单工厂设计模式计算器
查看>>
WinFrom“动态”WebService
查看>>
【钢铁侠3】【高清1280版HD-RMVB.英语中字】【2013最新美国票房科幻动作大片】...
查看>>
Eclipse 修改JVM
查看>>
状态者模式 c#
查看>>
最长回文子串
查看>>
Node-mongodb链接数据库函数的封装
查看>>
在CentOS上简单安装tengine
查看>>
c语言——字符串变量、函数
查看>>
解决Type safety: The expression of type List needs
查看>>
POJ 3233 (矩阵)
查看>>
20161220
查看>>
11月27日
查看>>
Java位运算符
查看>>
智能手表ticwatch穿戴体验
查看>>
暑假第五周总结(2018.8.6-8.12)
查看>>
MFC下拉框Combo Box
查看>>
TCP带外数据读写
查看>>
uni-app采坑记录
查看>>
TP方法中打印地址栏中所有的参数:
查看>>