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 ...
随机推荐
- java即时通信小例子
学习java一段时间了,今天写来一个即时通信的小例子练手在其过程中也学到了一些知识拿出来和大家分享,请路过的各位大神多多赐教... 好了下面讲一下基本的思路: 首先,编写服务器端的程序,简单点说吧就是 ...
- Web前端开发大系概览 (前端开发技术栈)
前言 互联网建立50多年了,网站开发技术日新月异,但web前端始终离不开浏览器,最终还是HTML+JavaScript+CSS这3个核心,围绕这3个核心而开发出来大量技术框架/解决方案. 我从2000 ...
- Angular $watch
如果想在某个属性发生变化的时候执行某些操作,那么scope.$watch是最佳选择 https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$w ...
- distribution 中一直在运行 waitfor delay @strdelaytime 语句
Replication 自动创建来一个 Job:Replication monitoring refresher for distribution,这个Agent执行一个sp: dbo.sp_repl ...
- 回发或回调参数无效。在配置中使用 pages enableEventValidation=true 或在页面中使用 %@ Page EnableEventValidation=true % 启用了事件验证
WebForm中回发或回调参数无效问题的解决 解决 .NET中回发或回调参数无效问题的解 该错误的详细提示信息为: 回发或回调参数无效.在配置中使用 <pages enableEventVali ...
- LINQ系列:Linq to Object投影操作符
投影是指在将序列中的元素转换为一个自定义形式的操作.投影操作符Select和SelectMany用于选择出赋予了适当功能的值.SelectMany操作符可以处理多个集合. LINQ表达式语法: 1. ...
- ScrollView 嵌套ListView、RecyclerView(持续更新)
ListView: 只要重写ListView或GridView的onMeasure()方法即可: @Override protected void onMeasure(int widthMeasure ...
- 深入理解DOM事件类型系列第三篇——变动事件
× 目录 [1]删除节点 [2]插入节点 [3]特性节点[4]文本节点 前面的话 变动(mutation)事件能在DOM中的某一部分发生变化时给出提示,这类事件非常有用,但都只能使用DOM2级事件处理 ...
- MySQL学习笔记五:数据类型
MySQL支持多种数据类型,大致可以分为数值,日期/时间和字符类型. 数值类型 MySQL支持所有标准SQL数值数据类型,包括严格数值数据类型(INTEGER.SMALLINT.DECIMAL和NUM ...
- 分析MariaDB初始化脚本mysql_install_db
在初始化MySQL的过程中经常会碰到各种问题,如 FATAL ERROR: Could not find ./bin/my_print_defaults ERROR: Can't create/wri ...