SSH整合之全注解
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整合之全注解的更多相关文章
- SSH框架整合(全注解)
全部jar包 目录结构 配置案例 package cn.yzu.Tbook.action; import javax.annotation.Resource; import org.apach ...
- ssh整合随笔(注解方式,Spring 管理action)
Web.xml<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...
- spring boot2整合dubbox全注解
前题 dubbox是dubbo的一个升级版,简单说就是本来dubbo是阿里开发的,现在阿里不维护了,当当网拿过去继续开发.本来阿里的dubbo维护到2.6版本,而再高版本的都是当当网维护的就叫成dub ...
- orcal 数据库 maven架构 ssh框架 的全注解环境模版 maven中央仓库批量删除lastupdated文件后依然是lastupdated解决方法 mirror aliyun中央仓库
批量删除文件,得用批处理文件,文件名随便,路径改成你的Repository,代码如下 rem 这里写你的仓库路径 set REPOSITORY_PATH=d:\repo rem 正在搜索... for ...
- SSH整合总结(xml与注解)
本人自己进行的SSH整合,中间遇到不少问题,特此做些总结,仅供参考. 一.使用XML配置: SSH版本 Struts-2.3.31 Spring-4.3.5 Hibernate-4.2.21 引入ja ...
- Hibernate 注解时 hibernate.hbm.xml的配置方法 以及与SSH整合里的配置方式
①纯Hibernate开发: 当你在Bean中写入注解后,需要告诉hibernate哪些类使用了注解. 方法是在hibernate.hbm.xml文件中配置 <!DOCTYPE hibernat ...
- ssh整合之七注解结合xml形式
1.我们之前的纯xml的方式,我们的配置文件很多,我们可以使用注解结合xml的方式进行开发,这样的话,我们的配置文件,会少很多,同时,我们可以直接在类中看到配置,这样,我们就可以快速地搭建一个ssh整 ...
- SSH全注解开发
web.xml: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=&quo ...
- 20.SSM整合-全注解开发
全注解开发 1.将SpringMVC改为注解 修改spring-mvc.xml 2.将Spring改为注解 将Service改为注解,完成Dao的注入 将事务以注解方式织入到Service 1.修改s ...
随机推荐
- js事件(event)的运行原理
昨天写click事件时候突然脑袋抽筋想了想浏览器是怎么执行click事件的,为什么我们可以用e或者window.event这个对象获取一些事件的属性呐?以下是我的理解.如果您有更好的理解,欢迎评论!! ...
- 推荐两款简单好用的图片放大jquery插件
一.zoomfiy.js 推荐可以从这里下载 使用说明: 使用该jquery 插件引入该插件的js:zoomfiy.js 或 min引入该插件的css:zoomfiy.css 或 min前后顺序都可j ...
- HTML5入门以及新标签
HTML5 学习总结(一)--HTML5入门与新增标签 目录 一.HTML5概要 1.1.为什么需要HTML5 1.2.什么是HTML5 1.3.HTML5现状及浏览器支持 1.4.HTML5特性 ...
- SQL Server中的高可用性(1)----高可用性概览
自从SQL Server 2005以来,微软已经提供了多种高可用性技术来减少宕机时间和增加对业务数据的保护,而随着SQL Server 2008,SQL Server 2008 R2,SQL ...
- Conversion Operators in OpenCascade
Conversion Operators in OpenCascade eryar@163.com Abstract. C++ lets us redefine the meaning of the ...
- 连接 insance 到 vlan101 - 每天5分钟玩转 OpenStack(97)
前面我们创建了 vlan101,今天继续部署 instance 到该 vlan network, 并讨论 instance 之间的连通性. launch 新的 instance "cirro ...
- ORM开发之解析lambda实现完整查询(附测试例子)
上次讲解了怎么解析匿名对象(ORM开发之解析lambda实现group查询),这次来实现解析二元运算,完成基本条件语法 先看一个表达式 query.Where(b => b.Number == ...
- geotrellis使用(八)矢量数据栅格化
目录 前言 栅格化处理 总结 参考链接 一.前言 首先前几天学习了一下Markdown,今天将博客园的编辑器改为Markdown,从编写博客到界面美观明显都清爽多了,也能写出各种样式的东 ...
- phpstorm 63342默认端口怎么修改
phpstorm进行网页调试的时候,默认是加端口号63342,在配置本地php环境的时候默认端口不一定是63342这个,更多的是系统默认的端口号80,那么问题就出现了,如何在phpstorm中将633 ...
- Android Studio的下载和安装教程(从ADT到AS)
之前一直使用的是Android development tools(简称ADT),后来说是google对ADT不再提供支持,然后一直在考虑是否把自己电脑换成Android Studio(简称AS),从 ...