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 ...
随机推荐
- JS学习之函数的属性和方法
- Linux下Tomcat重启脚本
我们重启Tomcat服务的时候,Tomcat自带的shutdown.sh脚本有时并不能真正杀死进程,经常需要我们用“kill -9 pid”的方式来杀死进程. 下面的脚本可以简化我们的操作,执行可杀死 ...
- Mayor's posters(线段树+离散化+区间染色)
题目链接:http://poj.org/problem?id=2528 题目: 题意:将n个区间进行染色(对于同一个区间,后一次染色会覆盖上一次的染色),问最后可见的颜色有多少种. 思路:由于区间长度 ...
- HDU 1070 Milk (模拟)
题目链接 Problem Description Ignatius drinks milk everyday, now he is in the supermarket and he wants to ...
- HDU 1231 最大连续子序列 (dp)
题目链接 Problem Description 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= ...
- 基于 python imageai 对象检测 目标检测 识别 视频
1.视频连接如下: http://www.iqiyi.com/w_19s6vownit.html
- cnn 卷积神经网络 人脸识别
卷积网络博大精深,不同的网络模型,跑出来的结果是不一样,在不知道使用什么网络的情况下跑自己的数据集时,我建议最好去参考基于cnn的手写数字识别网络构建,在其基础上进行改进,对于一般测试数据集有很大的帮 ...
- thread_info&内核栈
转载:http://blog.chinaunix.net/uid-22548820-id-2125152.html 之所以将thread_info结构称之为小型的进程描述符,是因为在这个结构中并没有直 ...
- C基础 多用户分级日志库 sclog
引言 - sclog 总的设计思路 sclog在之前已经内置到simplec 简易c开发框架中一个日志库. 最近对其重新设计了一下. 减少了对外暴露的接口. 也是C开发中一个轮子. 比较简单, 非常适 ...
- MYSQL表中向SET类型的字段插入值时值之间不能有空格
MYSQL 中有一种数据类型是 SET,首先我们查看一个包含 SET 类型字段的表结构: 接下来我们向表中插入数据: 按照上面的语句插入数据发现报错了,于是去掉了插入值之间的空格,然后插入成功: