亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Spring

2019-11-11 07:34:11
字體:
來源:轉載
供稿:網友

SPRing的相關概念:

Spring是一個開源的,輕量級的框架,輕量級的意思是依賴的東西比較少。spring的核心功能是aop(面向切面編程),ioc(控制反轉) 2.1 aop:在不改源代碼的情況下去增加功能。 2.2 ioc:不需要自己去new對象了,可以交給spring去創建。spring是一站式框架:spring在javaee三層中都提供了相應的解決方案。 3.1 web層 springMvc 3.2 service ioc 3.3 jdbcTemplatespring的IOC操作: 4.1 把對象的創建交給ioc進行管理。 4.2 ioc可以通過配置文件或者注解的方式的實現。IOC的底層原理: 5.1 使用xml的配置文件。 5.2 利用dom4j去解析xml文件。 5.3 利用工廠設計模式。 5.4 使用反射技術。 這里寫圖片描述

入門案例:

導入相關的jar包 1.1 spring相關的功能 這里寫圖片描述 1.2 一般只要導入核心的jar就好了,最后還要導入支持日志輸出的jar包。創建類,并添加相應的方法 這里寫圖片描述

創建spring相關的配置文件 3.1 名字可以自己取,建議使用applicationContext,位置也是不固定的,建議位于src下。 3.2 配置對象創建

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"> <bean id="user" class="com.renwen.user.User"></bean></beans>進行測試 這里寫圖片描述

spring bean管理:

bean實例化的三種方式: 1.1 使用無參的構造函數進行創建(重點): 這里寫圖片描述 1.2 使用靜態工廠進行創建:即靜態方法返回類對象 這里寫圖片描述 這里寫圖片描述 1.3 使用實例工程進行創建:即實例方法返回類對象 這里寫圖片描述 這里寫圖片描述

bean標簽常用的屬性: 2.1 id屬性:可以通過id來得到某個類的實例對象。 2.2 class屬性:配置對象所在的全路徑。 2.3 name屬性:和id的功能基本相同,但是id的命名不可以有特殊符號,但是name屬性可以,且name屬性可以為同一個bean配置多個名字(基本不用了)。 2.4 scope屬性:singleton:單例的且是默認 prototype:多例

屬性注入:創建對象的時候,向類里面的屬性設置相應的值。 3.1 使用屬性的setter方法進行注入(重點) 這里寫圖片描述 這里寫圖片描述 3.2 有參數的構造函數的方法進行注入 這里寫圖片描述 這里寫圖片描述

對象注入:

public class Dao { public void add() { System.out.println("dao add"); }}public class Service { private Dao dao; public void add() { System.out.println("add...."); dao.add(); } public void setDao(Dao dao) { this.dao = dao; }}<bean id="dao" class="com.renwen.test.Dao"></bean><bean id="service" class="com.renwen.test.Service"> <property name="dao" ref="dao"></property></bean>

p名稱空間的注入: 5.1 第一步引入p名稱空間的約束

public class User { private String uname; public void show(){ System.out.println(uname); } public void setUname(String uname){ this.uname=uname; }}<bean id="service" class="com.renwen.test.Service"> <property p:uname="zhao"></property></bean>

注入負責數據類型(數組,list,map,properties)

public class User { private String[]array; private Map<String,String>map; private List<String>list; private Properties properties; public void setArray(String[] array) { this.array = array; } public void setMap(Map<String, String> map) { this.map = map; } public void setList(List<String> list) { this.list = list; } public void setProperties(Properties properties) { this.properties = properties; } public void test() { for(String str:array){ System.out.println(str); } for(String str:list){ System.out.println(str); } Set<String>keySet=map.keySet(); Iterator<String>it=keySet.iterator(); while(it.hasNext()){ System.out.println(map.get(it.next())); } System.out.println(properties); }}<bean id="user" class="com.renwen.user.User"> <!-- 數組注入 --> <property name="array"> <array> <value>zhangsan1</value> <value>zhangsan2</value> <value>zhangsan3</value> </array> </property> <!-- list注入 --> <property name="list"> <list> <value>lisi1</value> <value>lisi2</value> <value>lisi3</value> </list> </property> <!-- map注入 --> <property name="map"> <map> <entry key="lisi1" value="zhangsan1"></entry> <entry key="lisi2" value="zhangsan2"></entry> <entry key="lisi3" value="zhangsan3"></entry> </map> </property> <!--property注入--> <property name="properties"> <props> <prop key="url">jdbc:MySQL:/127.0.0.1</prop> <prop key="username">root</prop> </props> </property></bean>

IOC 和DI的區別:

IOC:控制反轉,把創建對象交給spring。DI: 依賴注入,例如在進行對象創建的時候,我們可以為屬性設置相應的值。關系:依賴不能單獨存在,需要在ioc基礎上完成操作。

Spring整合web項目的原理:

加載spring核心配置文件,根據核心配置文件來進行創建對象。

ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");

但是效率比較差,解決方法可以在服務器啟動的時候進行創建,并加載spring配置文件。

實現原理: 2.1 使用ServletContext對象 2.2 使用監聽器 2.3 具體使用: 在服務器啟動的時候會為我們創建一個唯一的servletContext對象,然后通過ServletContextListener來監聽servletContext的產生,在該對象創建之前,可以創建配置文件加載的對象,然后將該對象放入context域中。

Spring 注解管理bean

注解介紹: 1.1 代碼里面的特殊標記,完成特定的功能。 1.2 注解的寫法 @注解名(屬性名稱=屬性值)。 1.3 注解可以使用在類上面,方法上面,屬性上面。注解開發案例: 2.1 導入注解開發相應的jar包,引入相應得約束文件

注解創建對象:

@Component(value="user")@Scope(value="prototype")//多實例public class User { public void show(){ System.err.println("show...."); }}public class TestSpring { @Test public void test(){ ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml"); User user=(User) ac.getBean("user"); user.show(); }}

4 創建對象4個常用注解: 4.1 @Component 4.2 @Controller WEB層 4.3 @Service service層 4.4 @Respository dao層 目前這四個注解的功能都一樣,創建對象

屬性注入: 5.1 使用注解的方法進行注入的時候,不需要setter方法 5.2 autowired進行注入

@Repository(value="dao")public class Dao { public void add() { System.out.println("dao add"); }}@Component("service")public class Service { @Autowired private Dao dao; public void add() { System.out.println("service add...."); dao.add(); }}

5.3 Resource進行注入

@Repository(value="dao") public class Dao { public void add() { System.out.println("dao add"); }}@Component("service")public class Service { @Resource(name="dao") private Dao dao; public void add() { System.out.println("service add...."); dao.add(); }}

5.4 注解與配置文件混合使用:

public class Dao { public void add() { System.out.println("dao add");}public class OrderDao { public void buy() { System.out.println("Order buy...."); }}public class Service { @Resource(name="dao") private Dao dao; @Resource(name="orderDao") private OrderDao orderDao; public void add() { System.out.println("service add...."); dao.add(); orderDao.buy(); }}<bean id="dao" class="com.renwen.test.Dao"></bean><bean id="orderDao" class="com.renwen.test.OrderDao"></bean><bean id="service" class="com.renwen.test.Service"></bean>

AOP :

AOP概述:面向切面編程,擴展功能不通過修改源代碼來實現。AOP采取橫向抽取機制,取代了傳統縱向繼承體系的重復性代碼。相關的原理: 這里寫圖片描述 這里寫圖片描述

AOP 操作的相關術語:

這里寫圖片描述

Spring相關的AOP操作:

在spring中進行aop操作,使用aspectj來實現,aspecj是一個面向切面的框架,使用之前應該導入相應的jar包,且導入aop的相關約束。aspecj并不是spring的一部分。

使用aspectj實現aop的兩種方式 3.1 基于xml 這里寫圖片描述

<bean id="book" class="com.renwen.aop.Book"></bean><bean id="mybook" class="com.renwen.aop.MyBook"></bean><aop:config> <!--配置切入點--> <aop:pointcut expression="execution(* com.renwen.aop.Book.add(..))" id="addcut"/> <!--配置切面--> <aop:aspect ref="mybook"> <aop:before method="Before1" pointcut-ref="addcut"/> </aop:aspect></aop:config>

環繞增強:

public class MyBook { public void around(ProceedingJoinPoint point) throws Throwable{ System.out.println("前"); point.proceed(); System.out.println("后"); }}<aop:config><!--配置切入點--><aop:pointcut expression="execution(* com.renwen.aop.Book.add(..))" id="addcut"/><!--配置切面--><aop:aspect ref="mybook"> <!-- <aop:before method="before1" pointcut-ref="addcut"/> --> <aop:around method="around" pointcut-ref="addcut"/></aop:aspect>

3.2 基于注解

log4J的介紹:

通過log4j可以看到程序運行中更加相信的信息??梢酝ㄟ^它來查看日志需要導入jar包并且導入配置文件到src下

log4j.properties

log4j.rootLogger=INFO, CONSOLE, FILE ## for console log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{MM-ddHH:mm:ss}[%c-%L][%t][%-4r] - %m%n ## for file log4j.appender.FILE=org.apache.log4j.RollingFileAppender log4j.appender.FILE.File=D:/logs/log4j.log log4j.appender.FILE.MaxFileSize=1MB log4j.appender.FILE.Append = true log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss} [%t] %-5p %c(line-%L) %-4r %x - %m%n

注解AOP配置

創建相關配置文件,創建對象。

開啟aop掃描。

<aop:aspectj-autoproxy></aop:aspectj-autoproxy>在增強的類上面使用注解來完成aop的操作。

注解設置

@Aspectpublic class MyBook { @Before("execution(* com.renwen.aop.Book.add(..))") public void before1(){ System.out.println("前置增強..."); }}

Spring 的jdbcTemplate操作:

jdbctemplate對jdbc做了封裝配置數據源:

相關操作

public class DataSource { private static DriverManagerDataSource dataSource=null; static{ dataSource=new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/hibernate"); dataSource.setPassWord("zhaoliyou"); dataSource.setUsername("root"); } public static DriverManagerDataSource getDataSource(){ return dataSource; }}3. 相關操作: public class JdbcTemplateTest { private static DriverManagerDataSource dataSource=DataSource.getDataSource(); @Test public void add(){ JdbcTemplate template=new JdbcTemplate(dataSource); String sql="insert into user(uname,pwd) values(?,?)"; int rows=template.update(sql,"zhangsan","123"); System.out.println(rows); } @Test public void update(){ JdbcTemplate template=new JdbcTemplate(dataSource); String sql="update user set uname=? where uname=?"; int rows=template.update(sql,"lisi","zhangsan"); System.out.println(rows); } @Test public void delete(){ JdbcTemplate template=new JdbcTemplate(dataSource); String sql="delete from user where uname=?"; int rows=template.update(sql,"lisi"); System.out.println(rows); } //對于結果集的處理,jdbctemplate有自己的接口RowMapper,但是需要自己進行實現 @Test public void query(){ JdbcTemplate template=new JdbcTemplate(dataSource); //查詢返回一個值 String sql="select count(*) from user"; int rows=template.queryForObject(sql, Integer.class); System.out.println(rows); //返回某個對象 String sql2="select * from user where uname=?"; User user=template.queryForObject(sql2, new UserMapper(),"zhangsan"); System.out.println(user); //返回List集合 String sql3="select * from user"; List<User>list=template.query(sql2, new UserMapper()); System.out.println(list); }}class UserMapper implements RowMapper<User>{ @Override public User mapRow(ResultSet rs, int arg1) throws SQLException { String uname=rs.getString("uname"); String pwd=rs.getString("pwd"); User user=new User(); user.setPwd(pwd); user.setUname(uname); return user; }}

Spring 配置c3p0連接池,dao使用jdbcTemplate

原始配置c3p0: 這里寫圖片描述

public class User { private String uname; private String pwd; public String getUname() { return uname; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public void setUname(String uname) { this.uname = uname; } @Override public String toString() { return "User [uname=" + uname + ", pwd=" + pwd + "]"; }}public class UserDao { private JdbcTemplate jdbcTemplate; public void add(User user){ String sql="insert into user values(?,?)"; jdbcTemplate.update(sql,user.getUname(),user.getPwd()); } public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; }}public class UserService { private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } public void add(User user) { System.out.println("service add"); userDao.add(user); }}<!-- 創建數據源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/hibernate"></property> <property name="driverClass" value="com.mysql.jdbc.Driver"></property> <property name="user" value="root"></property> <property name="password" value="zhaoliyou"></property> </bean> <!--創建jdbcTemplate并且注入數據源 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 創建UserDao,且注入jdbc模板--> <bean id="userDao" class="com.renwen.test.UserDao"> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean> <!-- 創建userService并且注入Userdao--> <bean id="userService" class="com.renwen.test.UserService"> <property name="userDao" ref="userDao"></property> </bean>

Spring事務管理:

事務管理的兩種方式: 1.1 編程式事務管理 1.2 聲明式事務管理:基于xml或者注解方式實現。

spring進行事務管理的一些api操作: 2.1 PlatformTransactionManger:事務管理器 這里寫圖片描述 不同的持久層框架有不同的事務管理器 2.2 TransactionDefinition:事務定義信息 2.3 TransactionStatus :事務運行狀態 3.xml事務管理:

public class Accountant { private int id; private String uname; private double balance; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public double getBalance() { return balance; } public void setBalance(double balance) { this.balance = balance; }}public class OrderDao { private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public void addMoney(Accountant accountant,double money){ String sql="update accountant set balance=balance+? where id=?"; jdbcTemplate.update(sql,money,accountant.getId()); } public void lessMoney(Accountant accountant,double money){ String sql="update accountant set balance=balance-? where id=?"; jdbcTemplate.update(sql,money,accountant.getId()); }}public class OrderService { private OrderDao orderDao; public void setOrderDao(OrderDao orderDao) { this.orderDao = orderDao; } public void changeMoney(Accountant accountant1,Accountant accountant2,double money){ orderDao.addMoney(accountant1, money); int num=1/0; orderDao.lessMoney(accountant2, money); }}<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 創建數據源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/hibernate"></property> <property name="driverClass" value="com.mysql.jdbc.Driver"></property> <property name="user" value="root"></property> <property name="password" value="zhaoliyou"></property> </bean> <!--創建jdbcTemplate并且注入數據源 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean> <bean id="orderDao" class="com.renwen.test.OrderDao"> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean> <bean id="orderService" class="com.renwen.test.OrderService"> <property name="orderDao" ref="orderDao"></property> </bean> <!-- 配置事務管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!--配置事務增強--> <tx:advice id="txadvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="changeMoney" propagation="REQUIRED"/> </tx:attributes> </tx:advice> <!--配置切面 --> <aop:config> <aop:pointcut expression="execution(* com.renwen.test.OrderService.*(..))" id="mycut"/> <aop:advisor advice-ref="txadvice" pointcut-ref="mycut"/> </aop:config></beans>

注解配置事務: 4.1 配置事務管理器 4.2 開始事務注解掃描 4.3 在需要事務處理的方法或者類上加 @Transational

<!-- 配置事務管理器 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property></bean><!--開啟事務注解 --><tx:annotation-driven transaction-manager="transactionManager"/>@Transactionalpublic void changeMoney(Accountant accountant1,Accountant accountant2,double money){ orderDao.addMoney(accountant1, money); int num=1/0; orderDao.lessMoney(accountant2, money);}

SSH整合:

思想: 這里寫圖片描述

spring整合struts2 2.1 記得導入struts2.spring-plugin和spring-web包 2.2 配置web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>ssh</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param></web-app>

2.3 配置applicationContext.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" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <bean id="userAction" class="com.renwen.action.UserAction" scope="prototype"></bean></beans>

2.4 配置struts.xml

<struts> <package name="mypack" extends="struts-default" namespace="/"> <action name="userAction" class="userAction"> <result name="ok">/index.jsp</result> </action> </package></struts>

spring 整合hibernate 3.1 把我們的數據庫的基本信息在spring進行配置。 3.2 sessionfactory在spring中進行創建。 3.3 注意需要spring-orm的jar

整合完整案例:

action

package com.renwen.action;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;import com.renwen.entity.User;import com.renwen.service.UserService;public class UserAction extends ActionSupport implements ModelDriven<User>{ private User user=new User(); private UserService userService; @Override public String execute() throws Exception { userService.change(1, 2, 50); return "ok"; } public void setUserService(UserService userService) { this.userService = userService; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Override public User getModel() { // TODO Auto-generated method stub return user; }}

service

package com.renwen.service;import org.springframework.transaction.annotation.Transactional;import com.renwen.dao.UserDao;import com.renwen.entity.User;public class UserService { private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } @Transactional public void change(int id1,int id2,int money){ userDao.add(id1, 50); int num=1/0; userDao.less(id2, 50); }}

dao

package com.renwen.dao;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.springframework.orm.hibernate3.HibernateTemplate;import org.springframework.transaction.annotation.Transactional;import com.renwen.entity.Accountant;import com.renwen.entity.User;public class UserDao { private SessionFactory sessionFactory; public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } public void add(int id,int money){ Session session=sessionFactory.getCurrentSession(); Accountant accountant=(Accountant) session.get(Accountant.class, id); accountant.setBalance(accountant.getBalance()+money); session.save(accountant); } public void less(int id,int money){ Session session=sessionFactory.getCurrentSession(); Accountant accountant=(Accountant) session.get(Accountant.class, id); accountant.setBalance(accountant.getBalance()-money); session.save(accountant); }}

entity:

package com.renwen.entity;public class Accountant { private int id; private String uname; private double balance; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public double getBalance() { return balance; } public void setBalance(double balance) { this.balance = balance; }}

hibernate.cfg.xml配置文件:

<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools. --><hibernate-configuration> <session-factory> <property name="hibernate.show_sql">true</property> <!-- 格式化輸出sql語句 --> <property name="hibernate.format_sql">true</property> <!-- update如果有這個表了,就會更新,否則就會創建表 --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 數據庫方言 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 把映射文件放到核心配置文件中 --> <mapping resource="com/renwen/entity/User.hbm.xml"/> <mapping resource="com/renwen/entity/Accountant.hbm.xml"/> </session-factory></hibernate-configuration><?xml version="1.0"?>

Accountant.hbm.xml

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping> <class name="com.renwen.entity.Accountant" table="accountant"> <id name="id" column="id"> <generator class="native"></generator> </id> <property name="uname" column="uname"></property> <property name="balance" column="balance"></property> </class></hibernate-mapping>

applicationContext.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" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/hibernate"></property> <property name="driverClass" value="com.mysql.jdbc.Driver"></property> <property name="user" value="root"></property> <property name="password" value="zhaoliyou"></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource"><ref bean="dataSource" /></property> <property name="configLocations" value="classpath:hibernate.cfg.xml"></property> </bean> <bean id="userService" class="com.renwen.service.UserService"> <property name="userDao" ref="userDao"></property> </bean> <bean id="userAction" class="com.renwen.action.UserAction" scope="prototype"> <property name="userService" ref="userService"></property> </bean> <bean id="hibernateTransactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <tx:annotation-driven transaction-manager="hibernateTransactionManager" /></beans>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美怡红院视频一区二区三区| 青青a在线精品免费观看| 久久精视频免费在线久久完整在线看| 蜜臀久久99精品久久久久久宅男| 国产综合色香蕉精品| 国产精品久久一区主播| 亚洲国产精品嫩草影院久久| 国产va免费精品高清在线| 国产成人精品久久二区二区| 亚洲成人精品久久| 精品久久香蕉国产线看观看亚洲| 91tv亚洲精品香蕉国产一区7ujn| 插插插亚洲综合网| 成人在线中文字幕| 亚洲第一中文字幕| 国产成人精品久久亚洲高清不卡| 国产成人综合av| 欧美激情精品久久久久久| 精品香蕉一区二区三区| 亚洲一二三在线| 91影视免费在线观看| 亚洲欧美另类自拍| 2024亚洲男人天堂| 中文字幕精品一区久久久久| www.久久撸.com| 日韩中文字幕不卡视频| 91成人免费观看网站| 欧美黑人巨大精品一区二区| 亚洲丁香婷深爱综合| 91久久综合亚洲鲁鲁五月天| 久久久av一区| 韩国精品久久久999| 欧美另类在线播放| 国产视频精品一区二区三区| 在线看欧美日韩| 中文字幕最新精品| 成人两性免费视频| 国产精品成av人在线视午夜片| 亚洲欧洲激情在线| 丝袜情趣国产精品| 欧美成人高清视频| 国产精品一区二区久久精品| 国产精品女主播视频| 国产精品成人免费视频| 一级做a爰片久久毛片美女图片| 亚洲人成欧美中文字幕| 亚洲精品电影久久久| 97精品欧美一区二区三区| 欧美不卡视频一区发布| 国产精品国产福利国产秒拍| 色综合91久久精品中文字幕| 欧美肥婆姓交大片| 亚洲欧美999| 富二代精品短视频| 欧美精品videossex性护士| 一区二区日韩精品| 国产精品第一第二| 精品亚洲aⅴ在线观看| 国产精品人人做人人爽| 日韩av电影手机在线| 欧美激情一级欧美精品| 国模私拍一区二区三区| 亚洲va欧美va国产综合剧情| 欧美激情在线播放| 韩国19禁主播vip福利视频| 久久久久久久久国产精品| 成人午夜小视频| 亚洲免费伊人电影在线观看av| 91嫩草在线视频| 国产精品wwww| 亚洲综合在线中文字幕| 久久综合伊人77777尤物| 国产欧美日韩精品丝袜高跟鞋| 中文字幕av一区中文字幕天堂| 欧美另类在线播放| 日韩福利伦理影院免费| 成人国产精品久久久久久亚洲| 中文字幕日韩有码| 这里只有视频精品| 日韩精品亚洲精品| 国产精品国内视频| 国产精品视频最多的网站| 亚洲品质视频自拍网| 日韩欧美在线视频日韩欧美在线视频| 热久久视久久精品18亚洲精品| 欧美天天综合色影久久精品| 欧洲中文字幕国产精品| 国产精品福利网站| 久久99热这里只有精品国产| 亚洲xxx自由成熟| 91沈先生在线观看| 亚洲视频在线免费观看| xvideos亚洲人网站| 久久精品成人欧美大片古装| 欧美肥老太性生活视频| 美女视频黄免费的亚洲男人天堂| 国产成人高清激情视频在线观看| 中文字幕亚洲色图| 欧美日韩国产页| 国产精品亚洲综合天堂夜夜| 日韩理论片久久| 国产精品久久久久久久久粉嫩av| 中文字幕欧美精品日韩中文字幕| 日韩理论片久久| 亚洲成人教育av| 日韩av在线免费播放| 国产精品日韩欧美| 成人精品aaaa网站| 精品成人在线视频| 成人欧美一区二区三区黑人孕妇| 精品久久久一区二区| 136fldh精品导航福利| 亚洲深夜福利网站| 日韩精品中文字幕有码专区| 菠萝蜜影院一区二区免费| 欧美日本高清一区| 狠狠色香婷婷久久亚洲精品| 欧美一级大片在线观看| 国产欧美一区二区三区在线看| 亚洲在线免费观看| 国产精品美女久久久久久免费| 精品美女永久免费视频| 亚洲黄色www网站| 久久久精品一区二区三区| 国产成+人+综合+亚洲欧美丁香花| 亚洲成人精品久久| 亚洲性日韩精品一区二区| 色777狠狠综合秋免鲁丝| 成人在线激情视频| 日韩成人中文字幕在线观看| 色播久久人人爽人人爽人人片视av| 精品亚洲男同gayvideo网站| 中文字幕日韩av综合精品| 久久久久久中文| 日韩网站免费观看| 亚洲人高潮女人毛茸茸| 亚洲精品欧美一区二区三区| 欧美日韩免费在线| 在线午夜精品自拍| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲女人被黑人巨大进入al| 全亚洲最色的网站在线观看| 97在线免费视频| 亚洲欧美日韩一区二区三区在线| 一区二区日韩精品| 一区二区三区亚洲| 成人乱色短篇合集| 国产精品日韩在线一区| 国产97色在线| 精品久久香蕉国产线看观看gif| 91久久久久久久久久久久久| 国产精品女人久久久久久| 久久精品视频在线观看| 大伊人狠狠躁夜夜躁av一区| 亚洲国产欧美一区二区丝袜黑人| 黑人极品videos精品欧美裸| 91欧美精品成人综合在线观看| 日本精品久久久久影院| 欧美老肥婆性猛交视频| 亚洲天堂第一页| 国产91精品久久久久久| 国产精品视频区| 97精品国产91久久久久久| 91亚洲永久免费精品|