springboot集成hibernate

首先添加依赖
操作数据库必须需要的一个依赖   jpa:数据持久化API 将数据写入数据库称之为持久化  只要将数据写入数据库就需要用到数据持久化API
       <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency>

如果引入以上依赖报错的话还可以引入spring-boot-starter-jdbc

对象型关系框架  所以是表和类映射  列和属性映射
然后在实体类上添加一个 @Entity   javax包中的 注解 表示用于映射的实体类
若表名和类名不一致的时候我们可以通过@Table(“表名”) 来进行映射实体类
hibernate中最重要的就是oid  所以我们需要告诉实体类的哪个属性为oid
在oid的属性前面添加一个 @Id  的注解  还需要告诉主键的生成策略需要用
@GeneratedValue(strategy = GenerationType.AUTO) 注解   AUTO 等价于  hibernate中的assigned   SEQUENCE 等于sequece 
若列名和属性名不一样的时候我们可以用这个注解   @Column(name="sal")
entity类代码:
package cn.et.ssha.entity;import java.io.Serializable;
import java.util.Date;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;@Entity
public class Emp implements Serializable{@Id@GeneratedValue(strategy = GenerationType.AUTO)private Short empno;@private String ename;private String job;private Short mgr;private Date hiredate;private Double sal;private Double comm;private Short deptno;public Short getEmpno() {return empno;}public void setEmpno(Short empno) {this.empno = empno;}public String getEname() {return ename;}public void setEname(String ename) {this.ename = ename;}public String getJob() {return job;}public void setJob(String job) {this.job = job;}public Short getMgr() {return mgr;}public void setMgr(Short mgr) {this.mgr = mgr;}public Date getHiredate() {return hiredate;}public void setHiredate(Date hiredate) {this.hiredate = hiredate;}public Double getComm() {return comm;}public void setComm(Double comm) {this.comm = comm;}public Double getSal() {return sal;}public void setSal(Double sal) {this.sal = sal;}public Short getDeptno() {return deptno;}public void setDeptno(Short deptno) {this.deptno = deptno;}
}

dao层需要继承一个类 extends CrudRepository<Emp, Short>

查询就在上面加个注解@Query(“查询的sql语句”) 
添加和修改都有封装好的方法 可以使用save方法。
save方法它会进行判断  如果存在就修改 不存在就添加。
删除直接在service层使用delete方法。
dao层代码
package cn.et.ssha.dao;import java.util.List;import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;import cn.et.ssha.entity.Emp;public interface EmpDao extends CrudRepository<Emp, Short>{@Query("select count(*) from Emp where ename like :ename")public int total(@Param("ename") String ename);/** nativeQuery=true  意思是将sql语句交给jdbc* */@Query(value="select * from (select t.*,rownum rn from emp t where ename like :en) where rn>=:startIndex and rn<=:endIdx",nativeQuery=true)public  List<Emp> query(@Param("en")String ename,@Param("startIndex")int startIndex,@Param("endIdx")int endIdx);}
service代码
package cn.et.ssha.service.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import cn.et.ssha.dao.EmpDao;
import cn.et.ssha.entity.Emp;
import cn.et.ssha.service.EmpService;
import cn.et.ssha.util.PagerEntity;
import cn.et.ssha.util.PagerUtils;
//表示使用事物
@Transactional
@Service
public class EmpAjaxServiceImpl implements EmpService {@Autowiredprivate EmpDao dao;/* 查询*/@Transactional(readOnly=true)    //事物只读 其它默认使用事物  这个是只读public PagerEntity query(Emp emp,int curpage){if(emp.getEname()==null || emp.getEname()==""){emp.setEname("%%");}else{emp.setEname("%"+emp.getEname()+"%");}int sizetotal = dao.total(emp.getEname());//当前页数   每页今条   总条数PagerEntity pe = PagerUtils.calc(curpage, 10, sizetotal);List<Emp> list = dao.query(emp.getEname(), pe.getStartIndex(),pe.getEndIndex());pe.setData(list);return pe;}/* *添加 */public void add(Emp emp){dao.save(emp);}/* * 删除*/public void dele(Emp emp){dao.delete(emp);}/* * 修改*/public void update(Emp emp){dao.save(emp);}}

springboot集成struts2

boot就是添加依赖  struts2也是一样 添加依赖。
struts2需要配置一个核心过滤器StrutsPrepareAndExecuteFilter 配置到web.xml文件中   现在我们使用springboot没有web.xml文件因此我们可以通过java代码@Configuration配置一个相当于web.xml的文件   
注意  struts2项目所在目录不能含有中文 或者 空格 特殊符号  这样会取不到上下文路径的 
依赖
<dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>2.3.28</version>
</dependency>
<dependency><groupId>org.apache.struts</groupId><artifactId>struts2-spring-plugin</artifactId><version>2.3.28</version>
</dependency>
<dependency><groupId>org.apache.struts</groupId><artifactId>struts2-convention-plugin</artifactId><version>2.3.28</version>
</dependency>
相当于生成web的java代码如下
package cn.et.ssha.util;import java.util.ArrayList;
import java.util.List;import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** * 相当于一个web的配置文件。* */
@Configuration
public class WebXmlConfig {/*** * 根据官网提供的方法我们可以通过以下的方法配置一个web里的过滤器。* 相当于在web文件中配置了一个过滤器叫StrutsPrepareAndExecuteFilter* * 我们也可以直接返回StrutsPrepareAndExecuteFilter 这里默认拦截的就是所有。* * 也可以直接返回一个过滤器 * @Bean * public StrutsPrepareAndExecuteFilter filterRegistrationBean(){*       return new StrutsPrepareAndExecuteFilter();* *     }* * *///官网的方法配置过滤器@Beanpublic FilterRegistrationBean filterRegistrationBean() {FilterRegistrationBean frgb = new FilterRegistrationBean();frgb.setFilter(new StrutsPrepareAndExecuteFilter());List list = new ArrayList();list.add("/*");list.add("*.action");frgb.setUrlPatterns(list);return frgb;}
}
添加了过滤器之后需要struts2的配置文件 
struts.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><!-- Struts2创建bean交给spring来创建 --><constant name="struts.objectFactory" value="spring"></constant>     <!-- 扫描struts2的注解 还有一个默认是扫描以Action结尾的 如果需要修改的话我们可以配置<constant name="struts.convention.action.suffix" value="Action"/> --><constant name="struts.convention.package.locators.basePackage" value="cn"/><constant name="struts.convention.package.locators" value="cn"/>  <!-- struts2默认是不扫描我们tomcar加载的类 所以我们要将类加载器改为false --><constant name="struts.convention.exclude.parentClassLoader" value="false" />
</struts>

配置完成之后使用struts2 的方式取值 可以使用属性驱动也可以使用模型驱动

controller  此处用的是模型驱动
package cn.et.ssha.controller;import java.io.IOException;
import java.io.UnsupportedEncodingException;import javax.servlet.ServletOutputStream;import net.sf.json.JSONObject;import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;import cn.et.ssha.entity.Emp;
import cn.et.ssha.service.EmpService;
import cn.et.ssha.util.PagerEntity;import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable;@Controller
@Namespace("/")
public class EmpAjaxAction extends ActionSupport implements ModelDriven<Emp>,Preparable{@Autowiredprivate EmpService es;private Emp emp;private Integer curpage;public Integer getCurpage() {return curpage;}public void setCurpage(Integer curpage) {this.curpage = curpage;}@Action(value="/query")public String query() throws IOException{if(emp==null || curpage==null){emp=new Emp();curpage=1;}PagerEntity pe = es.query(emp,curpage);String json = JSONObject.fromObject(pe).toString();ServletOutputStream os = ServletActionContext.getResponse().getOutputStream();os.write(json.getBytes("utf-8"));return NONE;}/** * json方法*public void query(Emp emp,OutputStream os){if(emp==null || curpage==null){emp=new Emp();curpage=1;}String json=JSONObject.fromObject(pe).toString();os.write(json);}* * */@Action("addmybaits")public void add() throws IOException{ServletOutputStream os = ServletActionContext.getResponse().getOutputStream();try {es.add(emp);os.write("1".getBytes("utf-8"));} catch (Exception e) {os.write("0".getBytes("utf-8"));}}@Action("delemybaits")public void dele() throws IOException{ServletOutputStream os = ServletActionContext.getResponse().getOutputStream();try {es.dele(emp);os.write("1".getBytes("utf-8"));} catch (Exception e) {os.write("0".getBytes("utf-8"));}}@Action("upmybaits")public void update() throws UnsupportedEncodingException, IOException{ServletOutputStream os = ServletActionContext.getResponse().getOutputStream();try {es.update(emp);os.write("1".getBytes("utf-8"));} catch (Exception e) {os.write("0".getBytes("utf-8"));}}@Overridepublic Emp getModel() {return emp;   }@Overridepublic void prepare() throws Exception {emp = new Emp();}}

springboot 集成hibernate 集成struts2相关推荐

  1. Struts2 Hibernate集成示例教程

    Struts2 Hibernate集成示例教程 Struts2和Hibernate都是各自领域中广泛使用的框架.今天我们将学习如何将Struts2 Web应用程序框架与Hibernate ORM框架集 ...

  2. SpringBoot集成Hibernate

    Hibernate是什么? Hibernate与MyBatis都是流行的持久层开发框架,只不过Hibernate是全自动ORM框架,不需要关心sql编写. Hibernate 是一个高性能的对象/关系 ...

  3. SpringBoot 中JPA集成PostgreSql(详细步骤)避坑!

    SpringBoot 中JPA集成PostgreSql(详细步骤) 什么是JPA?(Java Persistence API) Spring Data JPA, part of the larger ...

  4. SpringBoot12 QueryDSL01之QueryDSL介绍、springBoot项目中集成QueryDSL、利用QueryDSL实现单表RUD、新增类初始化逻辑...

    1 QueryDSL介绍 1.1 背景 QueryDSL的诞生解决了HQL查询类型安全方面的缺陷:HQL查询的扩展需要用字符串拼接的方式进行,这往往会导致代码的阅读困难:通过字符串对域类型和属性的不安 ...

  5. IntelliJ IDEA Spring Boot(5) 集成Hibernate

    上一篇集成了mybatis.这一篇我来集成hibernate,顺道把ehcache缓存也集成进去.下篇我们再讲 mybatis与ehcache集成 pom依赖增加 <dependency> ...

  6. Eclipse juno 中安装 JBoss Tools,集成Hibernate

    在Eclipse中集成Hibernate工具可以帮助开发者根据数据库生成映射文件.注释代码以及反向工程. Hibernate Tools作为JBoss Tools的核心组件,已经被捆绑在JBoss T ...

  7. SpringBoot 2.x 集成 Redis

    SpringBoot 2.x 集成 Redis windows上搭建redis环境 添加依赖 此处redis客户端使用jedis. <!-- redis --> <dependenc ...

  8. jsf集成spring_JSF – PrimeFaces和Hibernate集成项目

    jsf集成spring 本文介绍了如何使用JSF,PrimeFaces和Hibernate开发项目. 下面是一个示例应用程序: 二手技术: JDK 1.6.0_21 Maven的3.0.2 JSF 2 ...

  9. springboot security 权限校验_十二、SpringBoot 优雅的集成Spring Security

    前言 至于什么是Spring security ,主要两个作用,用户认证和授权.即我们常说的,用户只有登录了才能进行其他操作,没有登录的话就重定向到登录界面.有的用户有权限执行某一操作,而有的用户不能 ...

最新文章

  1. KVM中Virtio网络的演化之路
  2. html设置团偏跟着移动,雷阵雨云团向东偏南移动,北京两地将有强降雨+7级大风+冰雹!...
  3. echarts无数据时显示无数据_钣金无腻子数据还原
  4. winform空间批量控制
  5. Date函数基础知识整理
  6. 它利用计算机和现代通信技术,现代通信技术复习概论
  7. Visinets:一个可以让你的信号通路图动起来的网站!
  8. 【今日CS 视觉论文速览】1 Jan 2019
  9. 广度优先搜索(BFS)——抓住那头牛(POJ 4001)
  10. 罗永浩或将找陈冠希做代言人
  11. 201671010128 2017-10-08《Java程序设计》之接口与内部类
  12. 转载Java 反射机制
  13. javascript 弹出层(警告框)的制作(css元素居中、javascript元素居中)
  14. 【4-11】读书笔记 |《推荐系统实践》- 个性化推荐系统总结
  15. STM32MP157AAA3裸机点灯(汇编)
  16. 开关插头插座寿命试验机标准
  17. linux系统安装word,如何在Linux中安装FreeOffice 2018
  18. Google首页电吉他Doodle源代码
  19. 【STM32】STM32F103C8T6+nrf24l01收发示例
  20. eggjs框架学习心得

热门文章

  1. 分享一个free微信组件——预约吧
  2. 关于简历,在面试时可能会被问到的问题
  3. 杰理之微信语音使用耳机录音下,录音出来的语音开头有1s左右的滋滋声【篇】
  4. 【奥日与萤火意志】华丽与优雅的精灵之舞
  5. EXCEL开发工具Visual Basic文字转拼音代码
  6. 使用VSCODE执行JACA程序
  7. 学校图书馆抢座 Python完成
  8. 华为手机运行崩溃不显示报错信息的解决办法
  9. 微信小程序rpx与px如何换算
  10. vue-router路由实现原理