Hibernate實現資料庫增、刪、改、查
1.匯入hibernate jar包和mysql jar包,修改配置檔案hibernate.cfg.xml
2.建立資料庫中的表,根據表建立實體物件<?xml version="1.0" encoding="gbk"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory name="foo"> <!-- 配置資料庫資訊 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="connection.url">jdbc:mysql:///hibernate1</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.username">root</property> <property name="hibernate.connection.password">123</property> <!-- 其他配置 --> <property name="hibernate.show_sql">true</property> <!-- 匯入對映檔案 --> <mapping resource="demo/User.hbm.xml"/> </session-factory> </hibernate-configuration>
package demo; public class User { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { // TODO Auto-generated method stub return "id="+id+" name="+name; } }
3.根據表和物件,配置對映關係 User.hbm.xml
<?xml version="1.0" encoding="gbk"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <!-- This mapping demonstrates (1) a table-per-subclass mapping strategy (2) a simple component mapping (3) recursive associations withing an inheritance tree --> <hibernate-mapping package="demo"> <class name="User" table="t_user"> <id name="id" type="int" column="id" > <generator class="native"/> <!--表示自動增長--> </id> <property name="name" type="string" column="name" /> </class> </hibernate-mapping>
4.寫個HIbernate小工具,方便快速得到SessionFactory,得到session
package demo;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtils {
private static SessionFactory sessionFactory;
//初始化SessionFactory
static{
// Configuration cfg=new Configuration();
// cfg.configure();//讀取預設的配置檔案hibernate.cfg.xml
// cfg.configure("hibernate.cfg.xml");
// sessionFactory=cfg.buildSessionFactory();
sessionFactory=new Configuration()
.configure()
.buildSessionFactory();
}
/**
* 獲取全域性唯一的SessionFactory
* @return
*/
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
/**
* 從全域性唯一的SessionFactory開啟session
* @return
*/
public static Session openSession() {
return sessionFactory.openSession();
}
}
5.在UserDao中完成具體功能
package demo;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class UserDao {
/**
* 增
* @param user
*/
public void add(User user){
Session session=HibernateUtils.openSession();
Transaction tx=null;
try{
tx=session.beginTransaction();
session.save(user);
tx.commit();
} catch (Exception e) {
tx.rollback();
throw new RuntimeException(e);
} finally{
session.close();
}
}
/**
* 刪
* @param user
*/
public void delete(int id){
Session session=HibernateUtils.openSession();
Transaction tx=null;
try{
tx=session.beginTransaction();
session.delete(session.get(User.class, id));
tx.commit();
} catch (Exception e) {
tx.rollback();
throw new RuntimeException(e);
} finally{
session.close();
}
}
/**
* 改
* @param user
*/
public void update(User user){
Session session=HibernateUtils.openSession();
Transaction tx=null;
try{
tx=session.beginTransaction();
session.update(user);
tx.commit();
} catch (Exception e) {
tx.rollback();
throw new RuntimeException(e);
} finally{
session.close();
}
}
/**
* 查
* @param id
*/
public User getById(int id){
Session session=HibernateUtils.openSession();
Transaction tx=null;
try{
tx=session.beginTransaction();
User user=(User) session.get(User.class, id);
tx.commit();
return user;
} catch (Exception e) {
tx.rollback();
throw new RuntimeException(e);
} finally{
session.close();
}
}
public List<User> findAll(){
Session session=HibernateUtils.openSession();
Transaction tx=null;
try{
tx=session.beginTransaction();
List<User> list=session.createQuery( //使用HQL查詢
"FROM User")
.list();//根據條件得到list
tx.commit();
return list;
} catch (Exception e) {
tx.rollback();
throw new RuntimeException(e);
} finally{
session.close();
}
}
/**
* 分頁,返回一頁的資料列表
* @param firstResult 從結果列表中的那個索引開始取資料
* @param maxResults 最多取多少條資料
* @return list+count返回的條數
*/
public QueryResult findAll(int firstResult, int maxResults){
Session session=HibernateUtils.openSession();
Transaction tx=null;
try{
tx=session.beginTransaction();
//查詢一頁的資料列表
//方式一
// Query query=session.createQuery("FROM User");
// query.setFirstResult(firstResult);
// query.setMaxResults(maxResults);
// List<User> list=query.list();
//方式二
List<User> list=session.createQuery("FROM User")
.setFirstResult(firstResult)
.setMaxResults(maxResults)
.list();
//查詢總記錄數
Long count=(Long)session.createQuery("SELECT COUNT(*) FROM User")
.uniqueResult();
tx.commit();
return new QueryResult(count.intValue(),list);
} catch (Exception e) {
tx.rollback();
throw new RuntimeException(e);
} finally{
session.close();
}
}
}
6.右擊包名-new-Junit Test Case,也可以一一測試,對UserDao進行測試
package demo;
import static org.junit.Assert.*;
import java.util.List;
import org.hibernate.SessionFactory;
import org.junit.Test;
public class UserDaoTest {
private UserDao userDao=new UserDao();
@Test
public void testAdd() {
User user=new User();
user.setName("Lily");
userDao.add(user);
}
@Test
public void testAdd_25() {
for(int i=1;i<=25;i++){
User user=new User();
user.setName("test_"+i);
userDao.add(user);
}
}
@Test
public void testDelete() {
userDao.delete(1);
}
@Test
public void testUpdate() {
//從資料庫中獲取一條已存在的資料
User user=userDao.getById(1);
user.setName("haha");
userDao.update(user);
}
@Test
public void testGetById() {
User user =userDao.getById(1);
System.out.println(user);
}
@Test
public void testFindAll() {
List<User> users=userDao.findAll();
for(User user:users){
System.out.println(user);
}
}
@Test
public void testFindAllIntInt() {
// QueryResult qr=userDao.findAll(0,10); //第1頁,每頁10條
// QueryResult qr=userDao.findAll(10,10);
QueryResult qr=userDao.findAll(20,10);
//顯示結果
System.out.println("總記錄數:"+qr.getCount());
for(Object user:qr.getList()){
System.out.println(user);
}
}
}
相關推薦
Hibernate實現資料庫增、刪、改、查
1.匯入hibernate jar包和mysql jar包,修改配置檔案hibernate.cfg.xml <?xml version="1.0" encoding="gbk"?> <!DOCTYPE hibernate-configuration PUB
shell指令碼操作mysql資料庫,使用mysql的-e引數可以執行各種sql的(建立,刪除,增,刪,改、查)等各種操作
來源:http://blog.163.com/xychenbaihu@yeah/blog/static/13222965520114116289991/ mysql -hhostname -Pport -uusername -ppassword -e 相關mysql的
mybatis的傳統的增,刪,改,查實現
3.2.1、儲存使用者 <insert id="saveUser" parameterType="com.atguigu.mybatis.pojo.User"> insert into t_user(`last_name`,`sex`) valu
Mapper介面方式的mybatis的增,刪,改,查實現
4.1、Mapper介面程式設計的命名習慣Mapper介面方式的程式設計,需要先有一個介面。這個介面的命名一般是xxxxMapper。 比如: User模組的Mapper,介面命名為UserMapper。 Book模組的Mapper,介面命名為BookMappe
java連結mysql以及對資料庫的增,刪,改,查
package com.jdbcdemo; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.PreparedStateme
dict的增,刪,改,查
date 關聯 print none 必須 數據類型 相同 一個 code dict是無序的 ,數據關聯性強,鍵值對,唯一一個個映射的數據類型 字典的鍵必須是可哈希的數據類型 (字符串,數字,bool,元祖)並且是唯一的. 不可哈希的:(列表,字典) dict的增 1
Javascript操作Cookie(增,刪,改,查)
time() add return jna mts cap 關閉 nbsp expire 1 //1. 獲得指定名稱為ObjName的Cookie的值 2 function getCookie(ObjName){ 3 var arrStr = documen
MySql cmd下的學習筆記 —— 有關表的操作(增,刪,改,查)
strong .com nsh utf str tab 主鍵 test har (知識回顧) 連接數據庫 mysql -uroot -p111 先建立一個新庫 create database test1; use test1; 由於今天的主要內容是表的操作,建立表的詳細過
mysql基本功能 增,刪,改,查
增 ==》 insert into 庫.表(欄位名列表) values(值列表); mysql> create table meinvdb.mm(-> id int(4) not null primary key,-> name varchar(18) not null-> );Que
mysql基本功能 增,刪,改,查
cat dup pda key null cte insert value creat 增 ==》 insert into 庫.表(字段名列表) values(值列表); mysql> create table meinvdb.mm(-> id
MySQL基礎操作增,刪,改,查。
一,SQL語言概述1,SQL語言是關係型資料庫的標準語言,用於維護管理資料庫,如資料查詢,資料更新,訪問控制,物件管理等功能。 2,建表 這是需要掌握的。(1)#Show databases; 檢視資料庫裡所有的小資料庫名。 show看 databases 資料庫小庫 (2)#Create databa
python第四天課程:列表(增,刪,改,查),元祖
''' #1.增加 append insert li = ['alex',[1,2,3],'wusir','egon','女神','taibai'] li.append('日天') print(li) li.append(1) print(li) while 1: name = input('請
asp.net core 2.1 dotnet(三)EF.core 的增,刪,改,查
1.呼叫方式: 增加引用: using Microsoft.EntityFrameworkCore; using Newtonsoft
Java中List的增,刪,改,查
package Colection; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; //備選課程類 public class L
斷電導致oracle的ORA-01207錯誤完全解決辦法(重做日誌檔案(redo log files)管理(增,刪,改,查,切))
彙總整理一下有關重做日誌檔案(redo log files)管理相關的操作(增,刪,改,查,切)。供參考。1.當前日誌相關資訊[email protected]> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES
GreenDao3.2使用詳解(增,刪,改,查,升級)
首先看一下效果圖: 專案結構如下圖所示: 第一步:在build中新增配置如下: projet 目錄下的build.gradle dependencies { classpath 'org.greenrobot:greendao-gradl
表的完整語法增,刪,改,查( 子查詢 )
多行 教學 pan 比較 nbsp 匹配 字段 values 數據 表的完整語法增刪該查 表的完整 增 語法 1.所有數據按順序插入 insert [into] 表名 values (值1,……值n),[值1,……值n] 2.指定字段匹配插入,可以任意順序
SQL server中常見的增,刪,改,查的操作
--增-- /*增加列*/ alter table 表名 add 列名 varchar(20) check(你的約束條件); 如:在學生情況表中增加一個Email列,要求檢查輸入的是否為Email; alter table 學生情況表 add Email varchar
基於SpringMVC框架,完成使用者的增,刪,改,查,以及json資料處理
package org.ksea.controller; import java.io.File; import java.io.IOException; import java.util.List; import javax.servlet.http.HttpServletRequest; import j
MySQL資料庫中表記錄的增、刪和改操作
來源:Java聯盟 好的各位小夥伴~ 今天我們要了解的就是關於 MySQL資料庫中 有關於表記錄的操作 修改表記錄 插入表記錄 語法: 向表中插入某些列 insert into 表 (列名1,列名2,列名3...) values (值1,值2,值3.