Struts2+Spring+Hibernate step by step 06 整合Hibernate

本文详细介绍如何在SSH(Struts、Spring、Hibernate)框架中整合Hibernate,包括配置环境、映射类文件、编写映射文件及使用HQL语句进行查询。

注:该系列教程。部分内容来自王健老师编写ssh整合开发教程

Hibernate是一款优秀的ORM(Object Relation Mapping-对象关系映射图)工具。与Struts、Spring项目并称java领域的三大优秀框架之中的一个。

Hibernate主要是从表到java类(对象)的映射。

该章节代码承接前面所述代码。

第一步:整合Hibernate全部的包复制到WEB-INF/lib文件夹下:


图-1

第二步:在com/xuzheng/model文件夹下,建立users表的映射类文件User.java例如以下:

提示:书写Hibernate类的映射文件。一个类文件映射一个数据表,因为眼下我们在ssh数据库中仅仅有一个表。所以仅仅建立一个文件就能够了。


图-2

第三步:书写Hibernate的映射文件。Hibernate的映射文件以.hbm.xml结尾例如以下:

提示:建议将映射文件和类放在同一个文件夹下


图-3

User.hbm.xml的源文件例如以下:

<?xml version="1.0"?

> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.xuzheng.model.User" table="users"> <id name="id" column="id" type="string"> <generator class="uuid"></generator> </id> <property name="name" column="name"></property> <property name="pwd" column="pwd"></property> </class> </hibernate-mapping>

说明:

1、以<!DOCTYPE开头的文档类型定义

2、<class></class>中定义这User类与users表相应

3、<generator></generator>为声明主键

4、<property></property>声明其它属性

第四步:改动applicationContext.xml文件,配置Hibernate例如以下:

	<!-- 1、 凝视之前Spring的事务管理-->	
	<!--  
	<bean id="transactionManager" 
		  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	-->
	<!--2、声明Hibernate的sessionFactory  -->
	<bean id="sessionFactory" 
		  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		  <!-- 2.1|注入DataSource -->
		  <property name="dataSource" ref="dataSource"></property>
		  <property name="hibernateProperties">
		  	<props>
		  		<!-- 2.2、声明Hibernate的属性 -->
		  		<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
		  		<prop key="hibernate.show_sql">true</prop>
		  		<prop key="hibernate.current_session_context_class">thread</prop>
		  	</props>
		  </property>
		  <property name="mappingResources">
		  	<list>
		  		<!--2.3、配置hbm.xml配置文件  -->
		  		<value>com/xuzheng/model/user.hbm.xml</value>
		  	</list>
		  </property>
	</bean>
		
	<!--3、声明Hibernate的transactionManager  -->
	<bean id="transactionManager" 
		  class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
提示:依照1~3进行改动和配置


第五步:配置好以后。公布项目启动程序。直到能正常启动项目为止。若不能正常启动,应该检查文件是否有错。


第六步:改动OneDaoImpl.java,改动成为使用Hibernate的HQL语句进行查询,例如以下:

package com.xuzheng.dao.impl;
import java.sql.Types;
import java.util.List;
import java.util.Map;
import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.object.SqlFunction;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.xuzheng.dao.IOneDao;
import com.xuzheng.model.User;
public class OneDaoImpl extends HibernateDaoSupport implements IOneDao{
	//1、对类加入继承 HibernateDaoSupport
	//2、去掉原有注入的DataSource
	public Map login(Map map) {
		String name = (String) map.get("name");
		String pwd = (String) map.get("pwd");
		//3、声明HQL语句,注意当中的:name
		String sql = "select count(1) from users where name=:name and pwd=:pwd";
		//4、使用Session查询
		List temp = getSession().createQuery(sql).setString("name", name)
		.setString("pwd", pwd)
		.list();
		int i = Integer.parseInt(temp.get(0).toString());
		System.out.println("此username的用户数量:"+i);
		if(i >= 1){
			map.put("result", "1");
		}
		return map;
	}
	//查询全部用户列表
	public List query() {
		//5、改写query方法
		List list = getSession().createCriteria(User.class).list();
		return list;
	}
}
提示:依照1~5的顺序来实现

第七步:改动applicationContext.xml文件里的OneDao例如以下:

<bean id="oneDao" class="com.xuzheng.dao.impl.OneDaoImpl">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>

提示:将原来注入DataSource属性。改动成注入sessionFactory
第八步:公布执行项目。看能否正常启动和訪问。


源码下载:

http://download.youkuaiyun.com/detail/u014548782/7218965



转载于:https://www.cnblogs.com/zhchoutai/p/8408634.html

C语言-光伏MPPT算法:电导增量法扰动观察法+自动全局搜索Plecs最大功率跟踪算法仿真内容概要:本文档主要介绍了一种基于C语言实现的光伏最大功率点跟踪(MPPT)算法,结合电导增量法与扰动观察法,并引入自动全局搜索策略,利用Plecs仿真工具对算法进行建模与仿真验证。文档重点阐述了两种经典MPPT算法的原理、优缺点及其在不同光照和温度条件下的动态响应特性,同时提出一种改进的复合控制策略以提升系统在复杂环境下的跟踪精度与稳定性。通过仿真结果对比分析,验证了所提方法在快速性和准确性方面的优势,适用于光伏发电系统的高效能量转换控制。; 适合人群:具备一定C语言编程基础和电力电子知识背景,从事光伏系统开发、嵌入式控制或新能源技术研发的工程师及高校研究人员;工作年限1-3年的初级至中级研发人员尤为适合。; 使用场景及目标:①掌握电导增量法与扰动观察法在实际光伏系统中的实现机制与切换逻辑;②学习如何在Plecs中搭建MPPT控制系统仿真模型;③实现自动全局搜索以避免传统算法陷入局部峰值问题,提升复杂工况下的最大功率追踪效率;④为光伏逆变器或太阳能充电控制器的算法开发提供技术参考与实现范例。; 阅读建议:建议读者结合文中提供的C语言算法逻辑与Plecs仿真模型同步学习,重点关注算法判断条件、步长调节策略及仿真参数设置。在理解基本原理的基础上,可通过修改光照强度、温度变化曲线等外部扰动因素,进一步测试算法鲁棒性,并尝试将其移植到实际嵌入式平台进行实验验证。
【无人机协同】动态环境下多无人机系统的协同路径规划与防撞研究(Matlab代码实现)​ 内容概要:本文围绕动态环境下多无人机系统的协同路径规划与防撞问题展开研究,提出基于Matlab的仿真代码实现方案。研究重点在于在复杂、动态环境中实现多无人机之间的高效协同飞行与避障,涵盖路径规划算法的设计与优化,确保无人机集群在执行任务过程中能够实时规避静态障碍物与动态冲突,保障飞行安全性与任务效率。文中结合智能优化算法,构建合理的成本目标函数(如路径长度、飞行高度、威胁规避、转弯角度等),并通过Matlab平台进行算法验证与仿真分析,展示多机协同的可行性与有效性。; 适合人群:具备一定Matlab编程基础,从事无人机控制、路径规划、智能优化算法研究的科研人员及研究生。; 使用场景及目标:①应用于灾害救援、军事侦察、区域巡检等多无人机协同任务场景;②目标是掌握多无人机系统在动态环境下的路径规划与防撞机制,提升协同作业能力与自主决策水平;③通过Matlab仿真深入理解协同算法的实现逻辑与参数调优方法。; 阅读建议:建议结合文中提供的Matlab代码进行实践操作,重点关注目标函数设计、避障策略实现与多机协同逻辑,配合仿真结果分析算法性能,进一步可尝试引入新型智能算法进行优化改进。
先展示下效果 https://pan.quark.cn/s/a4b39357ea24 StudentInfo 基于SSM的学生信息管理系统(选课) 已停更 项目简介: 由SpringMVC+MyBatis为主要框架,mysql8.0配置主从复制实现读写分离,主机丛机分别为腾讯云的服务器,而项目部署在阿里云上。 前端主要由bootstrap完成,背景用particles.js插件。 数据库交互查询用到pagehelper分页。 在添加修改相关功能时通过ajax来验证其主键是否存在可用。 代码层次清晰,输入框约束较高,已配置登录拦截。 一、应用技术 #### 工具:eclipse、navicat 环境:JDK1.8、tomcat9.0、mysql8.0 前端:JavaScript、jQuery、bootstrap4、particles.js 后端:maven、SpringMVC、MyBatis、ajax、mysql读写分离、mybatis分页 二、功能 #### 这是在上个springmvc选课系统的基础上进行修改完善的,目前功能基本相同,修复诸多bug,上个系统中有详细介绍:B/S基于springMVC的网上选课系统 主要功能模块图: 新增: 增加分页查询 输入框约束 学号、身份证、课程编号、教师编号只能输入数字,并且有最大输入限制,其中学号固定12位,若小于12位将会有提示。 姓名只能输入中文。 几乎所有输入框不能输入空格等约束 下拉框联动 添加、修改课程采用二级联动,即所属系别——所属专业; 添加、修改学生采用三级联动,即系别——专业——班级。 (三级联动代码有些复杂,因为JavaScript学的不好=-=)。 ajax+springmvc验证 用于验证学号、课程编号、教师...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值