杨老师课堂之基于注解的SSH整合案例
基于注解的SSH整合
开发环节步骤:
实体类 —–> DAO开发 —–> Service开发 —–> Action动作类开发 —–> 配置文件(applicationContext.xml)
导包:
Struts2需要导入的jar:
asm-3.3.jar asm-commons-3.3.jar asm-tree-3.3.jar commons-fileupload-1.3.1.jar commons-io-2.2.jar commons-lang3-3.2.jar freemarker-2.3.22.jar javassist-3.11.0-GA.jar log4j-core-2.2.jar log4j-api-2.2.jar ognl-3.0.6.jar struts2-core-2.3.24.jar xwork-core-2.3.24.jarstruts2-spring-plugin-2.3.24.jar struts-contention-plugin-2.3.14.jar
导入struts2的注解开发包:struts-contention-plugin-2.3.14.jar
|—— 注意: 如果不使用注解开发,千万不要导入这个包
spring需要导入的jar:
spring-aop-4.24.RELEASE.jar spring-aspectJ-4.24.RELEASE.jar spring-beans-4.24.RELEASE.jar spring-context-4.24.RELEASE.jar spring-core-4.24.RELEASE.jar spring-expression-4.24.RELEASE.jar spring-jdbc-4.24.RELEASE.jar spring-orm-4.24.RELEASE.jar spring-test-4.24.RELEASE.jar spring-tx-4.24.RELEASE.jar spring-web-4.24.RELEASE.jarcommons-logging-1.2.jar com.springsource.org.com.mchange.v2.c3p0-0.9.1.2.jar com.springsource.org.aopalliance-1.0.0.jar com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
hibernate需要导入的jar:
antrl2-2.7.6.jar commons-collections-3.1.jar dom4j-1.6.1.jar geronimo-jpa-2.0-api-1.0.1.Final.jar hibernate-core.5.0.7.Final.jar hibernate-jpa-2.1.Final.jar jandex-2.0.0.Final.jar javassist-3.18.1-GA.jar jboss-logging-3.3.0.Final.jar
2.1 配置文件详解见 其他文章
- 实体类开发:
package cn.javabs.entity; @Entity @Table(name="t_user") public class User{@Id@GeneratedValue(strategy=GenerationType.AUTO)private Integer id;@Column(name="username",length=50)private String username;private String password;// 此处省略getter和setter方法}
在上述代码中:
@Entity 注解为实体类制定类的路径
@Id 注解是制定id为主键
@Generated 注解是为主键制定生成策略
以上注解实际上代表着hibernate的实体映射文件User.hbm.xml的功能。
- DAO开发
@Repository public class UserDaoImpl implementsn UserDao{@Autowiredprivate HibernateTemplate hibernateTemplate;//提供Hibernate模板public User findById(Integer id){return this.hibernateTemplate.get(User.class,id);}public List<User> findAll(){this.hibenrateTemplate.find("from User");}public void save(User user){this.hibernateTemplate.save(user);}public void update(User user){this.hibernateTemplate.update(user);}public void delete(User user){this.hibernateTemplate.delete(user);} }
- Service开发
@Service public class UserServiceImpl implements UserService{@Autowiredprivate UserDao userDao;@Transactionalpublic void saveUser(User user){this.userDao.save(user);}@Transactionalpublic void updateUser(User user){this.userDao.update(user);}@Transactionalpublic void deleteUser(User user){this.userDao.delete(user);}@Transactional(readOnly=true)public User findUserById(Integer id){return this.userDao.findById(id);}@Transactional(readOnly=true)public User findAll(){return this.userDao.findAll();}}
在上述代码中,使用@Service 注解用于标注Service层信息
@Autowired 用于自动注入UserDao接口
@Transactional注解用于配置事务,此时可以删除掉spring配置文件中的相关的配置信息
- Action开发
@Namespace("/") @ParentPackage("struts-default") @Controller public class UserAction extentds ActionSupport implements ModelDriven<User>{//封装数据private User user = new User();public User getModel(){return user;}@Autowiredprivate UserService userService;@Action(value="userAction_add",results={@Result(name="add",location="/success.jsp")})public String add(){userService.saveUser(user);return "add";} }
在以上代码中,
@Namespace 和 @ ParentPackage 注解用于代替 Struts2 配置文件中对action的配置
@Controller 注解用于Spring 容器中注册UserManagerAction实例
- applicationContext.xml配置文件开发
<beans><!--1. 配置扫描--><context:component-scan base-package="cn.javabs"></context:component-scan><!--2.配置SessionFactory--><bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"><!--2.1 加载hibernate核心配置文件--><property name="configLocation"> value="classpath:hibernate.cfg.xml"></property></bean><!--3.配置hibernate模板--><bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate"><!--3.1 通过工厂获取session,操作PO类--><property name="sessionFactory" ref="sessionFactory"></property></bean><!--4.事务管理--><bean id="txManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"></property></bean><!--事务注解驱动--><tx:annotation-driven transaction-manager="txManager"/></beans>
6.hibernate.cfg.xml开发
<hibernate-configuration><session-factory><!--1.基本4项--><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://localhost:3306/user</property><property name="connection.username">root</property><property name="connection.password">sorry</property><!--2.数据库方言--><property name="dialect">org.hibernate.dialect.MySQL5Dialect</property><!--3.配置处理SQL信息--><property name="show_sql">true</property><property name="format_sql">true</property><property name="hbm2ddl_auto">update</property><!--4.取消Bean验证--><property name="show_sql">true</property><!--5.整合 c3p0--><property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property><!--6.添加映射信息--><mapping class = "cn.javabs.entity.User"/></session-factory></hibernate-configuration>
作者: 杨校
出处: https://blog.csdn.net/kese7952
分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(397583050@qq.com)咨询。
杨老师课堂之基于注解的SSH整合案例相关推荐
- JavaEE框架整合之基于注解的SSH整合
基于注解的SSH整合 开发环节步骤: 实体类 -----> DAO开发 -----> Service开发 -----> Action动作类开发 -----> 配置文件(appl ...
- 杨老师课堂之网页制作HTML的学习入门-含有案例
网页制作入门 - Html的学习 本篇所授任务 网站信息页面案例 网站图片信息页面案例 网站友情链接页面案例 网站首页案例 网站注册页面案例 网站后台页面案例 教学导航 教学目标 了解什么是标记语言 ...
- 台州杨老师课堂 UI设计培训班
课程内容 一.图形界面设计基础 1.Photoshop 应用 通过各种不同风格网页整体GUI设计,掌握photoshop相关软件操作基础,熟练使用更重要是学会直接应用软件,通过项目实训直接设计. 2. ...
- 基于SpringBoot的SSM整合案例 -- SpringBoot快速入门保姆级教程(四)
文章目录 前言 1.设计创建数据库表tbl_book 2.创建新的SpringBoot模块,勾选相关依赖 3. 添加SpringBoot创建项目时没有提供的相关坐标 4.根据数据库表创建实体类Book ...
- 杨老师课堂之JavaWeb网站技术架构总结
题记 有很多学生及一线的开发人员经常会问我到底是什么技术架构,是不是就是目前在学校的SSH.SSM技术,为了让更多的同行对架构这个词汇有更深刻的理解,我分享一下自己的个人见解.从编程开发到IT教学也有 ...
- 杨校老师课堂之集群内SSH免密登录功能配置
SSH免密登录功能配置 1. 在主节点虚拟机内进行如下操作: [root@hadoop1 tmp]# ssh-keygen -t rsaGenerating public/private rsa ke ...
- 杨校老师课堂之基于SpringBoot + Vue 的智能停车场平台设计
1. 获取代码: 自助获取:https://download.csdn.net/download/kese7952/84988573 点我去下载 2. 技术栈 后端 SpringBoot + Spri ...
- 杨老师课堂_Java核心技术下之控制台模拟文件管理器案例
背景需求介绍: 编写一个模拟文件管理器的程序,实现控制台对文件和文件夹的管理操作. 要求在此程序中: 当用户输入指令 1 时,代表"指定关键字检索文件",此时需要用户输入检索的目录 ...
- 杨老师课堂_Java核心技术下之控制台模拟记事本案例...
预览效果图: 背景介绍: 编写一个模拟记事本的程序通过在控制台输入指令,实现在本地新建文件打开文件和修改文件等功能. 要求在程序中: 用户输入指令1代表"新建文件",此时可以从控制 ...
- 杨老师课堂之JavaScript定时器限时抢购秒杀商品案例
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/kese7952/article/details/80346509 预览效果图: 使用到的知识点: 定 ...
最新文章
- Java中关于枚举的7种用法
- 静态方法里面不能调用非静态属性
- 融资2.5亿的国产浏览器,被曝只是打包chrome
- feign调用多个服务_SpringCloud中Feign服务调用请求方式及参数总结(示例代码)
- extract($_POST[])
- nginx反向代理/负载均衡MySQL
- quartz mysql数据源_Spring之——quartz集群(MySQL数据源)
- 【全家福】多项式的各种板子
- Spring AOP之XML配置
- 一个段子教你如何认识大数据
- matlab多久可以入门,5分钟入门matlab
- Java - ip2region - 使用篇
- 网络安全中白帽、黑帽、红帽黑客的含义
- 英语四级和计算机一级算多少学分,大学英语四级多少分算过
- 2022年全新PHP程序开发在线工单管理系统源码,售后工单系统
- (CVE-2014-0160) OpenSSL 心脏滴血漏洞
- mount挂载硬盘出错 linux 下分区格式为lvm
- kubeadm快速部署一套K8S集群
- LTspice基础教程-010.波形查看器的使用
- javaScript和html的区别与联系