Hibernate + Oracle 创建自增序列ID
1.创建自增序列
2.对ID创建触发器
3.Userinfo.hbm.xml使得<generator class="increment">
序列:
CREATE SEQUENCE "SYSTEM"."SEQUENCE_ID" MINVALUE 1 MAXVALUE 99999999999 INCREMENT BY 1 START WITH 61 CACHE 20 ORDER NOCYCLE ;
触发器:
create or replace trigger TRIG_USERINFO
before insert on "USERINFO"
for each row
begin
select SEQUENCE_ID.nextval into :NEW."ID" from dual;
end;
Userinfo.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">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="org.bean.Userinfo" table="USERINFO" schema="SYSTEM">
<id name="id" type="java.lang.Integer">
<column name="ID" precision="9" scale="0" />
<generator class="increment">
</generator>
</id>
<property name="username" type="java.lang.String">
<column name="USERNAME" length="50" />
</property>
<property name="password" type="java.lang.String">
<column name="PASSWORD" length="50" />
</property>
</class>
</hibernate-mapping>
DAO:
package org.dao; import java.util.List; import org.bean.Userinfo;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.util.HibernateSessionFactory; public class UserDAO {
public Session session;
//获得session方法 public void getCurrentSession(){
//调用HibernateSessionFactory的getSession方法创建Session对象
session = HibernateSessionFactory.getSession();
} //关闭sesson方法
public void closeSession(){
if(session != null){
HibernateSessionFactory.closeSession();
}
} //插入一条记录方法
public void save(String username,String password) {
Transaction t1 = session.beginTransaction();
Userinfo userinfo = new Userinfo();
userinfo.setUsername(username);
userinfo.setPassword(password);
session.save(userinfo);
t1.commit();
} //修改这条方法
public void update(int id, String username){
Transaction t2 = session.beginTransaction();
Userinfo userinfo = (Userinfo) session.get(Userinfo.class, id);
userinfo.setUsername(username);
session.update(userinfo);
t2.commit();
} //查询数据库结果方法
public void queryAllUser(){
try{
Query query = session.createQuery("from Userinfo");
List list = query.list();
for (int i = 0; i < list.size(); i++) {
Userinfo user = (Userinfo)list.get(i);
System.out.println(user.getId() + " " + user.getUsername());
}
}catch (Exception e) {
e.printStackTrace();
}
} //删除该条记录方法
public void deleteUser(int id) {
Transaction t3 = session.beginTransaction();
Userinfo userinfo = (Userinfo) session.get(Userinfo.class, id);
session.delete(userinfo);
t3.commit();
}
}
Userinfo.java:
package org.bean; /**
* Userinfo entity. @author MyEclipse Persistence Tools
*/ public class Userinfo implements java.io.Serializable { // Fields private Integer id;
private String username;
private String password; // Constructors /** default constructor */
public Userinfo() {
} /** full constructor */
public Userinfo(String username, String password) {
this.username = username;
this.password = password;
} // Property accessors public Integer getId() {
return this.id;
} public void setId(Integer id) {
this.id = id;
} public String getUsername() {
return this.username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return this.password;
} public void setPassword(String password) {
this.password = password;
} }
Hibernate + Oracle 创建自增序列ID的更多相关文章
- Oracle创建自增序列
Oracle没有自增字段这样的功能,但是通过触发器(trigger)和序列(sequence)可以实现. 先建一个测试表了: create table userlogin( id number(6 ...
- 【数据库】postgresql数据库创建自增序列id的注意事项
1.创建一张表 CREATE TABLE "public"."tt" ( "name" varchar(128), "status ...
- Oracle创建自增ID
先创建序列sequence create sequence S_User minvalue 1 nomaxvalue -- 或 maxvalue 999 start with 1 increment ...
- 2017/2/8 hibernate + oracle 实现id的自增 同时 hibernate项目跑起来 会自己增加字段的原因 oracle触发器的使用
hibernate + oracle 实现id的自增 1.在oracle中先创建一个序列 : 序列语法 如下 create sequence (序列名称)seq_student_id minva ...
- oracle创建表(并且实现ID自增)
CREATE TABLE STUDENT ( ID INT NOT NULL, NAME VARCHAR2(4000) NOT NULL, PRIMARY KEY(ID) ) TABLESPACE M ...
- 在oracle数据库里创建自增ID字段的步骤
CREATE TABLE ADVICE ( ID INT NOT NULL, ACTIVE NOT NULL, TYPE INT NOT NULL, MSG ) NOT NULL, ADVICE ) ...
- Oracle创建自增长主键
Oracle主键常用的分为UUID和自增长int两种,下面简单说下各自的优缺点: UUID的优点 1.生成方便,不管是通过sys_guid() 还是java的uuid都能很方便的创建UUID. 2.适 ...
- oracle的自增序列
因为oracle中的自增序列与mysql数据库是不一样的,所以在这里唠嗑一下oracle的自增序列 1. 创建和修改自增序列 --创建序列的语法 -- create sequence [user.]s ...
- oracle创建表之前判断表是否存在,如果存在则删除已有表
Mysql 创建表之前判断表是否存在,如果存在则删除已有表 DROP TABLE IF EXISTS sys_area; CREATE TABLE sys_area ( id int NOT NULL ...
随机推荐
- [技巧篇]04.使用PowerDesigner逆向生成
- Java设计模式の观察者模式(推拉模型)
目录: 一.观察者定义 二.观察者模式的结构(推模式实现) 三.推模型和拉模型(拉模式实现) 四.JAVA提供的对观察者模式的支持 五.使用JAVA对观察者模式的支持(自带推模式实现实例) 一.观察者 ...
- Win7 安装配置 nexus3.7.1
安装准备: nexus3.7.1 环境准备: maven.jdk 解压nexus目录结构为: E:\nexus-3.7.1-02 配置环境变量: 启动: nexus.exe /run
- hihocoder1445 后缀自动机二·重复旋律5
传送门:http://hihocoder.com/problemset/problem/1445 [题解] 大概看了一天的后缀自动机,总算懂了一些 这篇文章写的非常好,诚意安利:Suffix Auto ...
- .Net MVC4 上传大文件,并保存表单
1. 前台 cshtml </pre><pre name="code" class="csharp">@model BLL.BLL.Pr ...
- 打开Android系统安装APK的页面
//使用隐式意图开启安装APK的Activity Intent intent = new Intent("android.intent.action.VIEW"); intent. ...
- Yii 1.1.17 四、属性标签、AR类增删改查、使用上传类与扩展第三方类库
一.属性标签与规则设置 当进入网站页面,将会读数据库返回信息到视图上.那么,现在定义模型中的属性在视图标签上的显示, 也就是模型属性到前台标签的映射 // 定义模型属性到前台标签的映射 public ...
- 用tkinter实现的gui小工具
import tkinter import requests import json from tkinter import * class FindLocation(object): def __i ...
- win7旗舰版64位缺失tbb.dll文件
win7旗舰版64位缺失tbb.dll文件 https://zhidao.baidu.com/question/688589990330312804.html 到好的电脑中复制一个,黏贴到下同的路径下 ...
- Oracle 获取ddl语句
--得到所有表空间的ddl语句 SELECT DBMS_METADATA.GET_DDL('TABLESPACE', TS.tablespace_name)FROM DBA_TABLESPACES T ...