今天用了一下java的數據庫持久化-業務的hibernate框架。下面給出hibernate 連接mysql數據庫示例
建表結構如下
mysql> desc test;
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(100) | NO | | NULL | |
+----------+--------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
mysql>
hibernate配置文件 hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="show_sql">true</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://192.168.25.152/test</property> <property name="connection.username">這裡寫用戶名</property> <property name="connection.password">密碼</property> <mapping resource="user.hbm.xml" /> </session-factory> </hibernate-configuration>
表映射 user.hbm.xml
<?xml version='1.0' encoding='UTF-8'?> <!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.TestDb" table="test"> <id name="id" column="id"> <generator class="increment" /> </id> <property name="username" column="username" /> </class> </hibernate-mapping>
表映射類
package com; /** * Created by IntelliJ IDEA. * User: Administrator * Date: 2006-2-6 * Time: 22:10:05 * To change this template use File | Settings | File Templates. */ public class TestDb { private String username; private Long id; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String myname) { this.username = myname; } }
測試類
package com; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; public class test { //遍歷 public static void all() { Query q = session.createQuery("select c.id,c.username from TestDb as c"); List l = q.list(); for(int i=0;i<l.size();i++) { //TestDb user = (TestDb)l.get(i); //System.out.println(user.getUsername()); Object[] row = (Object[])l.get(i);; Long id = (Long)row[0]; String name = (String)row[1]; System.out.println(id+" "+name); } } //讀取 public static void load() { TestDb obj = (TestDb) session.load(TestDb.class, new Long(2)); System.out.println(obj.getUsername()); } //更新 public static void update() { TestDb obj = (TestDb) session.load(TestDb.class, new Long(2)); obj.setUsername("cg"); } //插入 public static void insert() { TestDb user = new TestDb(); user.setUsername("sb"); session.save(user); } static SessionFactory sessionFactory; static Session session ; static Transaction tx ; private static void init() { sessionFactory = new Configuration().configure().buildSessionFactory(); session = sessionFactory.openSession(); tx = session.beginTransaction(); } private static void close() { tx.commit(); session.close(); sessionFactory.close(); } public static void main(String[] args) { init(); update(); close(); } }
文件結構