SSH整合之全注解

使用注解配置,需要我们额外引入以下jar包

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOgAAABGCAIAAABJ3U+xAAAFgUlEQVR4nO2bT2/cRByG/RH6FfotYI8c8xEqceFgwZkjPbEVILWizpZWEEAoqCKR0pRNoC4SFCQOFVIPPdByqKGAVJGoIlG0IbvrOJI5eNc7/z2zm9j+Zd5HP1XbeJzxn2dnZjd+g3zKKx+9QKFIVJ7nAcRFkSuIiyJZanFzAFqJs7g/xR8oq75DBmA+cdPjE6GebL91Tt1Nok4QdKKk6eMAAs7ifv/t1VGajdOTcZpNX5w8e3D5aZvcjcNgikk6i2YQt6U4i3t/6/rROFu58+jGVw+vffHzeys/DsfZX79cf/bg8pPtN+9vfVjfsWtIok4Yz17rvLNsBtqJs7jbd3uDo+xwmA2G2eEwOzzKDoez2v66V9+x25BEnSAoBV20GWgNzuJubtw8OMru/PB0/btfv/zmMTv0HvyXbW7c1PeVRJ1yamYlmc3Y5U/jMAjCeLZDJ0q4/a0dW1jcOGTHYvUpFG3iYhsG7lpwFndt/eO9wfHe4Hh/cLwn1dr6J7qekiic3lJ2ZubEiKPJq8Llyc9LWyaqxKGtuqcw3rLHpzmF6TsPI3aN2Iq7dGWTLeWI+/IgXb39mVW3xYiaa53hxzlRVWGrhDBSL9RM21d5Ci7vJHBa2Ip74bV32NrZT4X6Zz/d2U8/XV01dMZ8ii/v9NQeXg7Giul/mQZJ1JFGY7V+xeZKpwzNVG8hcbVQ9UYCp4/DUuH1tTfYkkfcF/+mtz6/remouONTNwQxS/3YyddK3GqEX+XajOlaewoQt34cxA2uLLH198uxXNHKurofxWccSRNmxm2juPpTgLj1Yyvuw7dflasca//cHT3fHT3fHV+9taHuh10GTsbXyRq3/LwjDm5zihuHzJ78GoA9CMtmgriqU4C4TWAr7r1LF3+7tsTWvUsXf98Z/bEzKv4tXrx/466uJ+6jkPjJRlykLjTisutebhTlB3q7Zvy3CvpTgLj1Yi3u0gW5ur2tbq/f7fXfXe53e/3u8lZ3ud/ASZwllisNUDN4rNGM03Ia1AfENYJFQFuBuGrEv9aBlgFxAUkgLiAJxAUkgbiAJBAXkATiApI4i4t4OmgD84jrUzzdH4gFRp3FJRFP9wdvg/jO4rY/nu4PPgfxncUlFk/3B8+C+M7iEomna+ZG7hlc6SDsenQ7Nm2PE4M0OyquSQWeBfGdxSUQT4/DgL8FkXI/fta079Hh2Ew9JvzdF9IZimtixLsgvq24dOLpunuj2MmQGzP0aN3S3KO42pxtcpjN/Q3i24pLJp6uu+vKn8+VcrNtWdGjuFl0WrwmCOJzOCwVaMTTz4O46mtSiVdBfAdxicTTddfWYqlwuuLaLBUM4krXpBKvgvi24tKJp0uzYRyyEzC/GhW/x7Dp0b6lsUe9uJprIuF1EN9WXErxdP6Xar5lEufgsxDX2KNpxLX8e5jPQXxrcX2Np/sDrSA+HmsEBcSC+BAX5HnepkWAHRDXd4gG8SEuIAnEBSSBuIAkEBeQBOICkkBcQBJncRFPB21gHnERTz8bzk2QsQ6cxUU8XcDbgHizOItLIZ5e3+MiPgfEm8VZXArx9Iaec/IsIN4szuK2PJ7Op8G5J/rFULUhxFWR7zL17U9AvFmcxSUQT5dGXEWomutWDqprNpnwLiDeLLbi0omn5xpxxSf/uU75iKNmkxJ/A+LNYisumXi6Ym9JCGE9wR6QYRMC4m3CYalAI56u2FstrtqwxT45eRUQbxYHcYnE0+W95ZttuPsLieFVQLxZbMUlFE+Xb658s8X5mvmi1bBJ1ZG/AfFmsRWXaDxdNX5JxyMtWQ2b9GclLFzPf0C8WazFRTz97KEVEG8WPNbYHogFxJsF4rYGLAJcqBAXhWp5QVwUyYK4KJLFiQsAIf4HV9aOppzzgFsAAAAASUVORK5CYII=" alt="" />

aaarticlea/png;base64,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" alt="" />

我们下面从实体层开始替换注解

package cn.yxj.beans;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table; @Entity
@Table@Table(name="stock")
public class Stock { @Id
@GeneratedValue
@Column(name="sid" )
private int sid;
private String sname;
private int count; public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
} public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}

Dao层替换 给实现类添加注解即可

package cn.yxj.dao.impl;

import java.io.Serializable;
import java.util.List; import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.stereotype.Repository; import cn.yxj.beans.Stock;
import cn.yxj.dao.StockDao; @Repository("stockDao")  //它用于将数据访问层(DAO 层 ) 的类标识为 Spring Bean
public class StockDaoImpl implements StockDao{ @Autowired
private SessionFactory sessionFactory; //添加股票
public int addStock(Stock stock) { Serializable count = sessionFactory.getCurrentSession().save(stock);
return ((Integer)count).intValue();
} public List<Stock> getAllStock() {
String sql="from Stock ";
List<Stock> list = sessionFactory.getCurrentSession().createQuery(sql).list();
return list;
} public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
}

Service层也是替换实现类 使用注解

package cn.yxj.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import cn.yxj.beans.Stock;
import cn.yxj.beans.StockException; import cn.yxj.dao.StockDao;
import cn.yxj.service.StockService; @Service("service")
public class StockServiceImpl implements StockService{ //植入Dao对象
@Autowired
@Qualifier("stockDao")
private StockDao stockDao; @Transactional
public int addStock(Stock stock) {
return stockDao.addStock(stock);
} public List<Stock> getAllStock() { return stockDao.getAllStock();
} public StockDao getStockDao() {
return stockDao;
} public void setStockDao(StockDao stockDao) {
this.stockDao = stockDao;
} }

Action层 使用注解

package cn.yxj.action;

import java.io.UnsupportedEncodingException;
import java.util.List; import javax.annotation.Resource; import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller; import cn.yxj.beans.Stock;
import cn.yxj.service.StockService; import com.opensymphony.xwork2.ActionSupport; @Controller
@Scope("prototype")
@Namespace("/stock")
@ParentPackage("struts-default")
public class AddStockAction extends ActionSupport{
private Stock stock;
//植入Service对象
@Resource
private StockService stockService; @Action(value="addStockAction",results={@Result(name="success",location="/addSuccess.jsp")})
public String addStock() throws UnsupportedEncodingException{ //stock.setSname(new String(stock.getSname().getBytes("iso-8859-1"),"utf-8"));
int addStock = stockService.addStock(stock);
System.out.println("添加股票 "+addStock); return SUCCESS;
} public Stock getStock() {
return stock;
} public void setStock(Stock stock) {
this.stock = stock;
}
public StockService getStockService() {
return stockService;
} public void setStockService(StockService stockService) {
this.stockService = stockService;
} }

这里我们需要注意applicationContext.xml配置文件中的配置信息

引入包扫描器

 <!-- 包扫描器 -->
<context:component-scan base-package="cn.yxj"></context:component-scan>

将小配置文件的引入换为以下形式

<property name="packagesToScan" value="cn.yxj.beans">

如果用上面的扫描器,我们必须保证sessionFactory的为Hibernate5或者为以下形式

Spring用注解配置事务

按以上配置配即可

SSH整合之全注解的更多相关文章

  1. SSH框架整合(全注解)

    全部jar包    目录结构  配置案例 package cn.yzu.Tbook.action; import javax.annotation.Resource; import org.apach ...

  2. ssh整合随笔(注解方式,Spring 管理action)

    Web.xml<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...

  3. spring boot2整合dubbox全注解

    前题 dubbox是dubbo的一个升级版,简单说就是本来dubbo是阿里开发的,现在阿里不维护了,当当网拿过去继续开发.本来阿里的dubbo维护到2.6版本,而再高版本的都是当当网维护的就叫成dub ...

  4. orcal 数据库 maven架构 ssh框架 的全注解环境模版 maven中央仓库批量删除lastupdated文件后依然是lastupdated解决方法 mirror aliyun中央仓库

    批量删除文件,得用批处理文件,文件名随便,路径改成你的Repository,代码如下 rem 这里写你的仓库路径 set REPOSITORY_PATH=d:\repo rem 正在搜索... for ...

  5. SSH整合总结(xml与注解)

    本人自己进行的SSH整合,中间遇到不少问题,特此做些总结,仅供参考. 一.使用XML配置: SSH版本 Struts-2.3.31 Spring-4.3.5 Hibernate-4.2.21 引入ja ...

  6. Hibernate 注解时 hibernate.hbm.xml的配置方法 以及与SSH整合里的配置方式

    ①纯Hibernate开发: 当你在Bean中写入注解后,需要告诉hibernate哪些类使用了注解. 方法是在hibernate.hbm.xml文件中配置 <!DOCTYPE hibernat ...

  7. ssh整合之七注解结合xml形式

    1.我们之前的纯xml的方式,我们的配置文件很多,我们可以使用注解结合xml的方式进行开发,这样的话,我们的配置文件,会少很多,同时,我们可以直接在类中看到配置,这样,我们就可以快速地搭建一个ssh整 ...

  8. SSH全注解开发

    web.xml: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=&quo ...

  9. 20.SSM整合-全注解开发

    全注解开发 1.将SpringMVC改为注解 修改spring-mvc.xml 2.将Spring改为注解 将Service改为注解,完成Dao的注入 将事务以注解方式织入到Service 1.修改s ...

随机推荐

  1. 拓展 Android 原生 CountDownTimer 倒计时

    拓展 Android 原生 CountDownTimer 倒计时 [TOC] CountDownTimer 在系统的CountDownTimer上进行的修改,主要是拓展了功能,当然也保留了系统默认的模 ...

  2. Android-简单的图片验证码

    Android-图片验证码生成1.为啥要验证码?图片验证码在网络中使用的是比较普遍的.一般都是用来防止恶意破解密码.刷票.论坛灌水.刷页等.2.怎样的验证码比较好?验证码的获取方式无非就两种,一种是后 ...

  3. 单页面实现之hash

    至学了angularJs后,发现这个单页面应用不知道在没有angularJs的情况下怎么实现. 所以就此对这个思考与资料并行,终于知道这个的实现基本原理. 首先angularJs的实现是hash值的变 ...

  4. jQuery 2.0.3 源码分析 回调对象 - Callbacks

    源码API:http://api.jquery.com/jQuery.Callbacks/ jQuery.Callbacks()是在版本1.7中新加入的.它是一个多用途的回调函数列表对象,提供了一种强 ...

  5. MVC4做网站后台:用户管理 ——用户组 1、添加用户组

    打开控制器UserGroupController 添加Add action /// <summary> /// 添加用户组 /// </summary> /// <ret ...

  6. 深入理解javascript中的焦点管理

    × 目录 [1]焦点元素 [2]获得焦点 [3]失去焦点[4]焦点事件 前面的话 焦点作为javascript中的一个重要功能,基本上和页面交互都离不开焦点.但却少有人对焦点管理系统地做总结归纳.本文 ...

  7. IOS开发之新浪围脖

    IOS开发和Web开发一样,网络请求方式包括Get和Post方式.Get和Post两者有和特点和区别,在本篇博客中不做过多的论述,本篇的重点在于如何GET数据和POST数据.下面还会提到如何在我们的项 ...

  8. ZOJ Problem Set - 1365 Mileage Bank

    题目不难,主要说下这道题目在输入终止上的问题: 题目要求当输入为0时一次case结束,当输入为#时整个输入全部结束,可以用如下格式解决 while(scanf("%s",str)! ...

  9. RAC某节点启动遭遇ORA-01105,ORA-01606

    环境:RHEL6.5 + Oracle11.2.0.4 双节点RAC 故障现象:节点1实例没有启动成功,节点2正常启动. 1.故障现象 2.解决过程 3.总结 1.故障现象 尝试启动RAC 节点1,遭 ...

  10. 「UI 测试自动化selenium」汇总

    <selenium 基础之java实现> selenium RC 环境配置 菜鸟学自动化测试(一)----selenium IDE 菜鸟学自动化测试(二)----selenium IDE ...