日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

【Spring 数据访问终篇】Spring + Hibernate + Mysql

發(fā)布時間:2025/3/13 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Spring 数据访问终篇】Spring + Hibernate + Mysql 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

說來慚愧,數(shù)月沒有更新博客,今天帶來spring訪問數(shù)據(jù)的最終篇,spring + hibernate。


本篇文章將用maven創(chuàng)建一個簡答的java項目,并結(jié)合spring框架中的hibernate對數(shù)據(jù)進行增刪改查的操作,數(shù)據(jù)庫為mysql。


1.項目最終的目錄結(jié)構(gòu)



2.在數(shù)據(jù)庫中創(chuàng)建如下一個名為stock的表,sql語法如下:

CREATE TABLE stock ( STOCK_ID int(10) unsigned NOT NULL AUTO_INCREMENT, STOCK_NAME varchar(10) NOT NULL, STOCK_CODE varchar(10) NOT NULL, PRIMARY KEY(STOCK_ID) USING BTREE, UNIQUE KEY UNI_STOCK_NAME (STOCK_NAME), UNIQUE KEY UNI_STOCK_ID (STOCK_CODE) USING BTREE) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;


3.pom.xml文件依賴

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.thinkingingis</groupId><artifactId>SpringHibernateMysql</artifactId><version>0.0.1-SNAPSHOT</version><name>Spring Hibernate Mysql</name><description>Spring Hibernate Mysql</description><dependencies><!-- https://mvnrepository.com/artifact/org.springframework/spring --> <dependency><groupId>org.springframework</groupId><artifactId>spring</artifactId><version>2.5.6.SEC03</version></dependency><!-- https://mvnrepository.com/artifact/cglib/cglib --><dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>3.2.5</version></dependency><!-- mysql驅(qū)動包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.29</version> </dependency> <!-- Hibernate framework --><!-- https://mvnrepository.com/artifact/org.springframework/spring-hibernate3 --><dependency><groupId>org.springframework</groupId><artifactId>spring-hibernate3</artifactId><version>2.0.8</version></dependency><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1.3</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>4.1</version></dependency><dependency><groupId>antlr</groupId><artifactId>antlr</artifactId><version>2.7.7</version></dependency></dependencies></project>
4.實體類 與 dao層

Stock 類與數(shù)據(jù)庫中stock表建立對應(yīng)關(guān)系

package org.thinkingingis.stock.model;import java.io.Serializable;public class Stock implements Serializable {public static final long serialVersionUID = 1L;private Long stockId;private String stockCode;private String stockName;public Long getStockId() {return stockId;}public void setStockId(Long stockId) {this.stockId = stockId;}public String getStockCode() {return stockCode;}public void setStockCode(String stockCode) {this.stockCode = stockCode;}public String getStockName() {return stockName;}public void setStockName(String stockName) {this.stockName = stockName;} }


Stock 業(yè)務(wù)層的接口與實現(xiàn) 這一層也可以不要,只保留后面的dao層

package org.thinkingingis.stock.bo;import org.thinkingingis.stock.model.Stock;public interface StockBo {void save(Stock stock);void update(Stock stock);void delete(Stock stock);Stock findByStockCode(String stockCode);}
package org.thinkingingis.stock.bo.impl;import org.thinkingingis.stock.bo.StockBo; import org.thinkingingis.stock.dao.StockDao; import org.thinkingingis.stock.model.Stock;public class StockBoImpl implements StockBo{StockDao stockDao;public void setStockDao(StockDao stockDao){this.stockDao = stockDao;}public void save(Stock stock) {stockDao.save(stock);}public void update(Stock stock) {stockDao.update(stock);}public void delete(Stock stock) {stockDao.delete(stock);}public Stock findByStockCode(String stockCode) {return stockDao.findByStockCode(stockCode);}}

DAO層是數(shù)據(jù)庫訪問層,在本類中完成對數(shù)據(jù)庫的訪問,該類繼承了HibernateDaoSupport,通過getHibernateTemplate()

package org.thinkingingis.stock.dao;import org.thinkingingis.stock.model.Stock;public interface StockDao {void save(Stock stock);void update(Stock stock);void delete(Stock stock);Stock findByStockCode(String stockCode);}
package org.thinkingingis.stock.dao.impl;import java.util.List;import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.thinkingingis.stock.dao.StockDao; import org.thinkingingis.stock.model.Stock;public class StockDaoImpl extends HibernateDaoSupport implements StockDao {public void save(Stock stock) {getHibernateTemplate().save(stock);}public void update(Stock stock) {getHibernateTemplate().update(stock);}public void delete(Stock stock) {getHibernateTemplate().delete(stock);}public Stock findByStockCode(String stockCode) {List list = getHibernateTemplate().find("from Stock where stockCode = ?", stockCode);return (Stock)list.get(0);}}

5.配置相應(yīng)的資源

首先配置Hibernate的 mapping 文件 Stock.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="org.thinkingingis.stock.model.Stock" table="stock"><id name="stockId" type="java.lang.Long"><column name="STOCK_ID" /><generator class="identity" /></id><property name="stockCode" type="string"><column name="STOCK_CODE" length="10" not-null="true" unique="true" /></property><property name="stockName" type="string"><column name="STOCK_NAME" length="10" not-null="true" unique="true" /></property></class> </hibernate-mapping>
數(shù)據(jù)庫相關(guān)文件 database.properties

jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/springmvcjdbc jdbc.username=root jdbc.password=123456
數(shù)據(jù)源文件DataSource.xml,本文件指定了database.properties中的內(nèi)容

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"><bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="location"><value>properties/database.properties</value></property> </bean><bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="${jdbc.driverClassName}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /> </bean></beans>
Hibernate 相關(guān)的配置文件 Hibernate.xml

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"><!-- Hibernate session factory --> <bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="dataSource"><ref bean="dataSource"/></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="hibernate.show_sql">true</prop></props></property><property name="mappingResources"><list><value>/hibernate/Stock.hbm.xml</value></list></property></bean> </beans>
Spring bean的配置文件 Stock.xml

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"><!-- Stock business object --><bean id="stockBo" class="org.thinkingingis.stock.bo.impl.StockBoImpl" ><property name="stockDao" ref="stockDao" /></bean><!-- Stock Data Access Object --><bean id="stockDao" class="org.thinkingingis.stock.dao.impl.StockDaoImpl" ><property name="sessionFactory" ref="sessionFactory"></property></bean></beans>
接下來需要導(dǎo)入spring bean 的配置文件BeanLocations.xml

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"><!-- Database Configuration --><import resource="../database/DataSource.xml"/><import resource="../database/Hibernate.xml"/><!-- Beans Declaration --><import resource="../beans/Stock.xml"/></beans>
(有沒有已經(jīng)被各種xml文件搞得迷糊了呢,哈哈,為以后spring boot 鋪墊一記)


6.運行

當(dāng)配置完上述步驟以后 就可以運行了

package org.thinkingingis.common;import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.thinkingingis.stock.bo.StockBo; import org.thinkingingis.stock.model.Stock;public class App {public static void main(String[] args){ApplicationContext context = new ClassPathXmlApplicationContext("spring/config/BeanLocations.xml");StockBo stockBo = (StockBo)context.getBean("stockBo");/** insert **/Stock stock = new Stock();stock.setStockCode("011");stock.setStockName("GIS");stockBo.save(stock);/** select**/Stock stock2 = stockBo.findByStockCode("011");System.out.println(stock2);/**update**/stock2.setStockName("GIS-1");stockBo.update(stock2);/** delete **/stockBo.delete(stock2);System.out.println("all done!");}}
7.運行結(jié)果如下:



源碼地址:?點擊打開鏈接?

https://github.com/ThinkingInGIS/SpringHibernateMysql.git


至此,spring與jdbc,jdbcTemplate,hibernate訪問數(shù)據(jù)的方式都以介紹完畢啦。

(如遇到問題,請留言給作者,以便共同探討gis知識。thinkingingis@qq.com

Wechat公眾號:ThinkingInGIS
歡迎大家關(guān)注:)

總結(jié)

以上是生活随笔為你收集整理的【Spring 数据访问终篇】Spring + Hibernate + Mysql的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。