PHP字串長度找子字串與取代字串的常用函數

PHP在字串的操作上,有非常多的相關函數可以使用,我們在這裡只介紹經常會使用到的字串操作函數。像是如何取得字串的長度、在某一個字裏面尋找子字串首次出現的位置、以及字串的取代函數...等等。這些都是在編寫程式的時候,頻繁被程式設計師使用到的基礎函數。 取得字串長度 <?...

顯示具有 MySQL 標籤的文章。 顯示所有文章
顯示具有 MySQL 標籤的文章。 顯示所有文章

2018年1月6日 星期六

MySQL資料型態與JAVA資料型態的轉換

若要將MySQL data type轉換成Java data type可以參考如下的表格:

MySQL資料型別 可被轉換的JAVA資料型別
CHAR, VARCHAR, BLOB, TEXT, ENUM, ,SE java.lang.String, java.io.InputStream, java.io.Reader, java.sql.Blob, java.sql.Clob
FLOAT, REAL, DOUBLE PRECISION, NUMERIC, DECIMAL, TINYINT, SMALLINT, MEDIUMINT, INTEGER, BIGINT java.lang.String, java.lang.Short, java.lang.Integer, java.lang.Long, java.lang.Double, java.math.BigDecimal
DATE, TIME, DATETIME, TIMESTAMP java.lang.String, java.sql.Date, java.sql.Timestamp



參考連結:https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-type-conversions.html

2014年8月19日 星期二

整合Struts2+Spring+Hibernate的專案

簡介


我們在先前的兩篇文章中已經向大家介紹過Spring與Hibernate的結合運用的範例教學。

然而於本文中,我們將再把Struts2也一起加入進來使用,讓整個專案形成一個結構嚴謹與完整的MVC(Model View Controller)架構。

使用的工具&技術
1.JDK1.7.0_04
2.Hibernate 3.2.3.GA
3.JBoss Hibernate Tools
4.Spring3.0.7
5.Struts2-2.3.15.1
6.MySQL 5.5
7.Eclipse Java EE KEPLER

第一支MyStruts2專案

在圖1中可以讓我們清楚的了解,整個專案的目錄結構,大致分為dao,service,action三個主要的目錄組成。

圖1.MyStruts2專案結構

第一步,下載Struts2-2.3.15.1Spring3.0.7Hibernate 3.2.3.GA的相關jar檔案。
Struts2部份主要的jar:
struts2-core-2.3.15.1.jar
struts2-embeddedjsp-plugin-2.3.15.1.jar
struts2-json-plugin-2.3.15.1.jar
struts2-spring-plugin-2.3.15.1.jar
xwork-core-2.3.15.1.jar
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-fileupload-1.3.jar
commons-io-2.0.1.jar
commons-lang3-3.1.jar
freemarker-2.3.19.jar
ognl-3.0.6.jar
oro-2.0.8.jar

第二步,生成Spring與Hibernate的相關dao和service
Hibernate組成部份:
UserInfo.java
UserInfo.hbm.xml
UserInfoHome.java

Spring組成部份:
UserInfoManager.java
applicationContext.xml

第三步,建立struts.xml配置檔

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>

  <constant name="struts.devMode" value="false" />
  <!-- struts的URL擴展名-->
  <constant name="struts.action.extension" value="do" />

  <!-- 允許訪問靜態成員變量 -->
  <constant name="struts.ognl.allowStaticMethodAccess" value="true" />

  <constant name="struts.custom.i18n.resources" value="i18n/messages" />
  <constant name="struts.enable.DynamicMethodInvocation" value="false" />
  <constant name="struts.enable.SlashesInActionNames" value="true" />
  
  <constant name="struts.mapper.alwaysSelectFullNamespace" value="false"></constant>  
  <constant name="struts.mapper.class" value="org.apache.struts2.dispatcher.mapper.DefaultActionMapper"></constant>
  
  <package name="default" namespace="/pages" extends="struts-default">     
     <action name="*/*" method="{2}" class="com.yourcompany.ms2.action.{1}Action">           
       <result name="success">/pages/{1}/{2}.jsp</result>
     </action>
     <!-- Add your actions here -->
     
  </package>

</struts>

第四步,加入query.jsp顯示資料庫查詢結果 (需位於pages/Test/目錄底下)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'query.jsp' starting page</title>
    
   </head>
  
  <body>
     <h2><s:property value="message" /></h2>
     <s:label value="OK"/>
  </body>
</html>

第五步,創建TestAction測試程式


package com.yourcompany.ms2.action;

import org.springframework.beans.factory.annotation.Autowired;
import com.opensymphony.xwork2.ActionSupport;
import com.yourcompany.ms2.domain.UserInfo;
import com.yourcompany.ms2.service.UserInfoManager;

public class TestAction extends ActionSupport  {  
    
 @Autowired
 private UserInfoManager userInfoManager; 

 public String query() throws Exception {  
  // 查詢
  UserInfo user = userInfoManager.query(new Integer(1));
  //out.println("查詢一筆記Username: "+user.getUsername());
  setMessage("查詢一筆記Username: "+user.getUsername());
  return SUCCESS;
  }
  
  public String hello() throws Exception {
   setMessage("Hello, My Struts2.");    
   return SUCCESS;
  }

  private String message;

  public void setMessage(String message) {
   this.message = message;
  }

  public String getMessage() {
   return message;
  }
}

結論

假如您已經學會了Spring結合Hibernate的混合搭配使用,那麼這篇文章中,你只需要把焦點集中在Struts2的參數設定和實際操作測試。轉眼間,我們已經成功的演繹Struts2 + Spring + Hibernate的網站專案的示範教學。

(下載本文範例程式檔) 記得下載相關jar檔

2014年8月18日 星期一

Spring結合Hibernate的Web運用

前言


在這篇文章中,我們將使用Spring搭配Hibernate來建構Web站台,以DAO(Data Access Object;資料存取物件)的方式透過Hibernate存取資料庫的數据。使用的工具&技術:
1.JDK1.7.0_04
2.Hibernate 3.2.3.GA
3.JBoss Hibernate Tools
4.Spring3.0.7
5.MySQL 5.5
6.Eclipse Java EE KEPLER

創建一個MySpringHiber的Web專案


這個小節中,我們需要根據圖1.中的的目錄資料結構,來分別建立本專案中各個重要的程式檔案。並且會逐步說明每支程式的關鍵內容明細的組成部份。
圖1.MySpringHiber專案結構



第一步,下載Spring 3.0.7Hibernate 3.2.3ga版本的相關jar檔。
Spring部份的主要jar
com.springsource.org.aopalliance-1.0.0.jar
org.springframework.aop-3.0.7.RELEASE.jar
org.springframework.asm-3.0.7.RELEASE.jar
org.springframework.aspects-3.0.7.RELEASE.jar
org.springframework.beans-3.0.7.RELEASE.jar
org.springframework.context.support-3.0.7.RELEASE.jar
org.springframework.context-3.0.7.RELEASE.jar
org.springframework.core-3.0.7.RELEASE.jar
org.springframework.expression-3.0.7.RELEASE.jar
org.springframework.jdbc-3.0.7.RELEASE.jar
org.springframework.orm-3.0.7.RELEASE.jar
org.springframework.oxm-3.0.7.RELEASE.jar
org.springframework.transaction-3.0.7.RELEASE.jar
org.springframework.web.servlet-3.0.7.RELEASE.jar
org.springframework.web-3.0.7.RELEASE.jar

Hibernate部份的主要jar
antlr-2.7.6.jar
cglib-2.1.3.jar
dom4j-1.6.1.jar
hibernate3.jar
javassist.jar
jta.jar

其他必要的jar
mysql-connector-java-5.0.5-bin.jar
commons-logging-1.1.1.jar
commons-collections-2.1.1.jar
commons-dbcp.jar
commons-pool.jar
slf4j-api-1.7.5.jar
slf4j-jdk14-1.7.5.jar
log4j-1.2.11.jar

第二步,建立applicationContext.xml的spring的設定檔。注意代碼內的注解說明文字,主要設定內容的重點 ,可以分為dataSource(數据來源), sessionFactory, TransactionManager, Spring Bean的元件自動搜尋注入。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51


<?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:tx="http://www.springframework.org/schema/tx"
  xsi:schemaLocation="http://www.springframework.org/schema/beans  
  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  http://www.springframework.org/schema/tx 
  http://www.springframework.org/schema/tx/spring-tx-2.5.xsd  
  http://www.springframework.org/schema/context 
  http://www.springframework.org/schema/context/spring-context-2.5.xsd"
    default-autowire="byName" default-lazy-init="false">
  
 <!-- 數据來源定義 -->  
  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8"/>
    <property name="username" value="root"/>
    <property name="password" value="mysql"/>
  </bean>
  
  <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    
 <property name="mappingLocations" value="classpath*:com/yourcompany/msh/domain/*.hbm.xml"/>  
    
 <property name="hibernateProperties">
   <props>
     <!--常用資料庫方言 MySQL5Dialect -->
  <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
  <prop key="hibernate.show_sql">true</prop>
  <prop key="hibernate.query.substitutions">true 1, false 0</prop>
  <prop key="hibernate.default_batch_fetch_size">4</prop>
  <prop key="hibernate.connection.zeroDateTimeBehavior">convertToNull</prop>   
   </props>
 </property>
  </bean>
 
  <!--Hibernate TransactionManager-->
  <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"/>
  </bean>
 
  <!-- 以 @Transactional 標注来定義交易事務 -->
  <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
  
  <!-- component-scan自動搜索@Component , @Controller , @Service , @Repository等標注的類別 -->
  <context:component-scan base-package="com.**.dao" />
  <context:component-scan base-package="com.**.service" />

</beans>



第三步,修正Web.xml的檔案內容。設置Spring ApplicationContext配置文件的路徑,此參數用於後面的Spring-Context loader,然後建立一支TestSpring的Servlet程式用來測試整個專案的正常配接態狀。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
 xmlns="http://java.sun.com/xml/ns/javaee" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  
  
  <!-- Spring ApplicationContext配置文件的路徑,此參數用於後面的Spring-Context loader -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:spring/*.xml</param-value>
  </context-param>  
  
  <!--Spring ApplicationContext 載入 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
    
  <servlet>    
    <servlet-name>TestSpring</servlet-name>
    <servlet-class>com.yourcompany.msh.test.TestSpring</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>TestSpring</servlet-name>
    <url-pattern>/TestSpring</url-pattern>
  </servlet-mapping>  
  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
</web-app>


第四步,調整UserInfoHome的程式內容,讓它繼承HibernateDaoSupport類別。
而後移除以下的程式碼:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11


private final SessionFactory sessionFactory = getSessionFactory();

 protected SessionFactory getSessionFactory() {
  try {   
   return HibernateUtil.getSessionFactory();
  } catch (Exception e) {
   log.error("Could not build SessionFactory", e);
   throw new IllegalStateException(
     "Could not build SessionFactory");
  }
 }



再把sessionFactory變數全部由getSessionFactory()方法取代:

Before

1


sessionFactory.getCurrentSession().persist(transientInstance);


After

1


getSessionFactory().getCurrentSession().persist(transientInstance);



第五步,重新改寫UserInfoManager的代碼。


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46


package com.yourcompany.msh.service;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.yourcompany.msh.dao.UserInfoHome;
import com.yourcompany.msh.domain.UserInfo;

@Service
@Transactional
public class UserInfoManager {
 
 private UserInfoHome userInfoHome;

 public void setUserInfoHome(UserInfoHome userInfoHome) {
  this.userInfoHome = userInfoHome;
 } 
 
 /**
  * 查詢
  */
 public UserInfo query(Integer pk) {  
  return (UserInfo)userInfoHome.findById(pk);   
 }
 
 /**
  * 新增
  */
 public void add(UserInfo user) {  
  userInfoHome.persist(user);
 }
 
 /**
  * 修改
  */
 public void update(UserInfo user) {  
  userInfoHome.merge(user);  
 }
 
 /**
  * 刪除
  */
 public void delete(UserInfo user) {  
  userInfoHome.delete(user);  
 }

}




第六步,寫一支TestSpring來測試Spring結合Hibernate操作資料表。

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118


package com.yourcompany.msh.test;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;

import com.yourcompany.msh.domain.UserInfo;
import com.yourcompany.msh.service.UserInfoManager;

public class TestSpring extends HttpServlet {
 
 @Autowired
 private UserInfoManager userInfoManager;
 

 /**
  * Constructor of the object.
  */
 public TestSpring() {
  super();
 }
 
 /**
  * Initialization of the servlet. <br>
  *
  * @throws ServletException if an error occurs
  */
 public void init(ServletConfig config) throws ServletException {  
  SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,config.getServletContext()); 
 }

 /**
  * Destruction of the servlet. <br>
  */
 public void destroy() {
  super.destroy(); // Just puts "destroy" string in log
  // Put your code here
 }

 /**
  * The doGet method of the servlet. <br>
  *
  * This method is called when a form has its tag value method equals to get.
  * 
  * @param request the request send by the client to the server
  * @param response the response send by the server to the client
  * @throws ServletException if an error occurred
  * @throws IOException if an error occurred
  */
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  doit(request,response);
 }

 /**
  * The doPost method of the servlet. <br>
  *
  * This method is called when a form has its tag value method equals to post.
  * 
  * @param request the request send by the client to the server
  * @param response the response send by the server to the client
  * @throws ServletException if an error occurred
  * @throws IOException if an error occurred
  */
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  
  doit(request,response);
 }
 
 
 public void doit(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
  response.setContentType("text/html;charset=UTF-8");
  PrintWriter out = response.getWriter();
  out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
  out.println("<HTML>");
  out.println("  <HEAD><TITLE>A Servlet For Spring</TITLE></HEAD>");
  out.println("  <BODY>");  
  
  UserInfo user = null;
  
  // 查詢
  user = userInfoManager.query(new Integer(1));
  out.println("查詢一筆記Username: "+user.getUsername()); 
  
  // 新增
  /*user = new UserInfo("Linda", "da67890", new Date(), new Integer(0), new Integer(32));
  userInfoManager.add(user);
  out.println("新增一筆記"+user.getUsername()+"成功");*/ 
  
  // 修改
  /*user = userInfoManager.query(new Integer(2));
  user.setUsername("Marry");
  user.setSex(new Integer(0));  //更新為女性
  user.setAge(new Integer(37)); //更新為37歲
  out.println("修改一筆記"+user.getUsername()+"成功");*/
  
  // 刪除
  /*user = userInfoManager.query(new Integer(2));
  out.println("刪除一筆記"+user.getUsername()+"成功");*/
  
  out.println("  </BODY>");
  out.println("</HTML>");
  out.flush();
  out.close();
  
 }

}


總結

想要建立一個Spring結合Hibernate的Web專案,需要先具備這兩個框架的基礎知識,
這樣才能讓我們更精確有效的建製整個案子的基礎架構。

(下載本文範例程式檔) 記得下載相關jar檔

2014年8月12日 星期二

簡單運用Hibernate操作Mysql資料庫

在這篇文章當中我們將教您如何運用Hibernate來簡單而快速的操作資料庫的表格記錄。

事前準備工具&技術:
1. JDK1.7.0_04
2. Hibernate 3.2.3.GA
3. JBoss Hibernate Tools
4. MySQL 5.5
5. Eclipse Java EE KEPLER

相關表格的建立


於MySQL Server執行如下的script,創建User表格

 1
 2
 3
 4
 5
 6
 7
 8
 9
10


DROP TABLE IF EXISTS `user_info`;
 CREATE TABLE `user_info` (
   `user_id` int(11) NOT NULL AUTO_INCREMENT,
   `username` varchar(50) NOT NULL,
   `password` varchar(50) DEFAULT NULL,
   `birth_date` date DEFAULT NULL,
   `sex` int(1) DEFAULT NULL,
   `age` int(3) DEFAULT NULL,
 PRIMARY KEY (`user_id`) )
 ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;



取得Hibernate的jar檔案


到右側的連結下載Hibernate 3.2.3.GA版本的Hibernate來作為後續的教學之使用。 連結: http://sourceforge.net/projects/hibernate/files/hibernate3/3.2.3.ga/

以下就是我們需要使用到的hibernate的libraries.
antlr-2.76.jar
asm.jar
cglib-2.1.3.jar
dom4j-1.6.1.jar
ehcache-1.2.3.jar
hibernate3.jar
javassist.jar
jta.jar
commons-collections-2.1.1.jar
commons-logging-1.1.1.jar
log4j-1.2.11.jar

其他必要的jar檔:
mysql-connector-java-5.05-bin.jar

建立一個MyHibernate專案


請依据圖1.的專案目錄結構來建立各個重要的程式檔。

圖1.MyHibernate專案結構

第一步,利用JBoss Hibernate Tool從資料庫逆向將user_info表格映射出相應POJO、XML、DAO檔案,如下所示:
UserInfo.java
UserInfo.hbm.xml
UserInfoHome.java

第二步,修改UserInfoHome的getSessionFactory()方法

把以下的一段代碼

1
2
3
4
5
6
7
8
9


 protected SessionFactory getSessionFactory() {
    try {
        return (SessionFactory) new InitialContext()
   .lookup("SessionFactory");
    } catch (Exception e) {
      log.error("Could not locate SessionFactory in JNDI", e);
      throw new IllegalStateException("Could not locate SessionFactory in JNDI");
    }
  }


更改為如下代碼:

1
2
3
4
5
6
7
8


protected SessionFactory getSessionFactory() {
    try {   
 return HibernateUtil.getSessionFactory();
    } catch (Exception e) {
 log.error("Could not build SessionFactory", e);
 throw new IllegalStateException("Could not build SessionFactory");
    }
  }



第三步,建立HibernateUtil類別,用來取得SessionFactory的實體。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25


package com.yourcompany.hb.util;

import org.hibernate.*;
import org.hibernate.cfg.*;

public class HibernateUtil {

    private static final SessionFactory sessionFactory;

    static {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            sessionFactory = new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

}



第四步,建立一支UserInfoManager繼承UserInfoHome,負責UserInfo的新增/刪除/修改/查詢的交易事務的處理。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60


package com.yourcompany.hb.util;

import java.util.Date;
import org.hibernate.Session;
import com.yourcompany.hb.domain.UserInfo;
import com.yourcompany.hb.domain.UserInfoHome;

public class UserInfoManager extends UserInfoHome {
 
 /**
  * 查詢
  */
 public void query() {
  Session session = getSessionFactory().getCurrentSession();
  session.beginTransaction();   
  UserInfo user = (UserInfo)findById(new Integer(1));
  session.getTransaction().commit();
  System.out.println("查詢一筆記Username: "+user.getUsername());  
 }
 
 /**
  * 新增
  */
 public void add() {
  Session session = getSessionFactory().getCurrentSession();
  session.beginTransaction();  
  UserInfo user = new UserInfo("Horry", "hy12345", new Date(), new Integer(1), new Integer(25));
  persist(user);
  session.getTransaction().commit();
  System.out.println("新增一筆記"+user.getUsername()+"成功");
 }
 
 /**
  * 修改
  */
 public void update() {
  Session session = getSessionFactory().getCurrentSession();
  session.beginTransaction();  
  UserInfo user = findById(new Integer(2));
  user.setUsername("Marry");
  user.setSex(new Integer(0));  //更新為女性
  user.setAge(new Integer(37)); //更新為37歲
  merge(user);
  session.getTransaction().commit();
  System.out.println("修改一筆記"+user.getUsername()+"成功");
 }
 
 /**
  * 刪除
  */
 public void delete() {
  Session session = getSessionFactory().getCurrentSession();
  session.beginTransaction();  
  UserInfo user = findById(new Integer(2));
  delete(user);
  session.getTransaction().commit();
  System.out.println("刪除一筆記"+user.getUsername()+"成功");
 }

}



第五步,建立TestHibernate測試類別。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24


package com.yourcompany.hb.main;

import com.yourcompany.hb.util.UserInfoManager;

public class TestHibernate {
 /**
  * @param args
  */
 public static void main(String[] args) {
  UserInfoManager um = new UserInfoManager();
  
  // 查詢
  um.query();
  
  // 新增
  //um.add();
  
  // 修改
  //um.update();
  
  // 刪除
  //um.delete();
 }
}



結論


經由上述一個步驟接著一個步驟的操作練習,讓我們很快的了解到原來利用Hibernate來操作資料庫的表格,也可以那麼的輕鬆愉快。

(下載本文範例程式檔) 記得下載相關jar檔