因为Oracle10g中并不提供字段类型为boolean的属性,所以我们需要通过使用char或number来代替!接下来看一个例子。
Person类
import java.sql.Timestamp;
public class Person{
private int PId;
private String PGender;
private Timestamp PGraduate;
private byte[] PFile;
private boolean isMan;
public boolean getIsMan() {
return isMan;
}
public void setIsMan(boolean isMan) {
this.isMan = isMan;
}
public int getPId() {
return PId;
}
public void setPId(int pId) {
PId = pId;
}
public String getPGender() {
return PGender;
}
public void setPGender(String pGender) {
PGender = pGender;
}
public Timestamp getPGraduate() {
return PGraduate;
}
public void setPGraduate(Timestamp pGraduate) {
PGraduate = pGraduate;
}
public byte[] getPFile() {
return PFile;
}
public void setPFile(byte[] pFile) {
PFile = pFile;
}
}
public class Person{
private int PId;
private String PGender;
private Timestamp PGraduate;
private byte[] PFile;
private boolean isMan;
public boolean getIsMan() {
return isMan;
}
public void setIsMan(boolean isMan) {
this.isMan = isMan;
}
public int getPId() {
return PId;
}
public void setPId(int pId) {
PId = pId;
}
public String getPGender() {
return PGender;
}
public void setPGender(String pGender) {
PGender = pGender;
}
public Timestamp getPGraduate() {
return PGraduate;
}
public void setPGraduate(Timestamp pGraduate) {
PGraduate = pGraduate;
}
public byte[] getPFile() {
return PFile;
}
public void setPFile(byte[] pFile) {
PFile = pFile;
}
}
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">
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
" http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<hibernate-configuration>
<session-factory>
<property name="hbm2ddl.auto">update</property>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<property name="connection.url">
jdbc:oracle:thin:@localhost:1521:Eric
</property>
<property name="connection.username">jinhua</property>
<property name="connection.password">jinhua</property>
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<property name="myeclipse.connection.profile">oracle</property>
<property name="show_sql">true</property>
<mapping resource="Person.hbm.xml" />
<property name="hbm2ddl.auto">update</property>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<property name="connection.url">
jdbc:oracle:thin:@localhost:1521:Eric
</property>
<property name="connection.username">jinhua</property>
<property name="connection.password">jinhua</property>
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<property name="myeclipse.connection.profile">oracle</property>
<property name="show_sql">true</property>
<mapping resource="Person.hbm.xml" />
</session-factory>
</hibernate-configuration>
Person.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="com.zhanlang.bean.Person" table="person">
<id name="PId" type="int" column="P_ID">
<generator class="increment"></generator>
</id>
<property name="PGender" type="string" column="P_GENDER" />
<property name="PGraduate" type="timestamp" column="P_GRADUATE" />
<property name="PFile" type="binary" column="P_FILE" />
<property name="isMan" type="boolean" column="isMan"/>
</class>
</hibernate-mapping>
<!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="com.zhanlang.bean.Person" table="person">
<id name="PId" type="int" column="P_ID">
<generator class="increment"></generator>
</id>
<property name="PGender" type="string" column="P_GENDER" />
<property name="PGraduate" type="timestamp" column="P_GRADUATE" />
<property name="PFile" type="binary" column="P_FILE" />
<property name="isMan" type="boolean" column="isMan"/>
</class>
</hibernate-mapping>
person表
create table person(
p_id number(4) primary key,
p_gender varchar(10) check(p_gender in ('男','女')),
p_graduate Timestamp(4),
p_file blob not null
)
p_id number(4) primary key,
p_gender varchar(10) check(p_gender in ('男','女')),
p_graduate Timestamp(4),
p_file blob not null
)
alter table person add isMan number(1);
alter table person add constraint isMan_check check(isMan in(0,1));
alter table person add constraint isMan_check check(isMan in(0,1));
主函数:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.sql.Date;
import java.sql.Timestamp;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.sql.Date;
import java.sql.Timestamp;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class App {
private static SessionFactory sessionFactory;
static{
try {
sessionFactory=new Configuration().configure().buildSessionFactory();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
static{
try {
sessionFactory=new Configuration().configure().buildSessionFactory();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Person person=new Person();
Timestamp time=new Timestamp(new java.util.Date().getTime());
System.out.println(time);
Date graduate =new Date(new java.util.Date().getTime());
System.out.println(graduate);
Timestamp time=new Timestamp(new java.util.Date().getTime());
System.out.println(time);
Date graduate =new Date(new java.util.Date().getTime());
System.out.println(graduate);
InputStream is=new FileInputStream("c:/sava.txt");
int length=is.available();
byte[] buffer=new byte[length];
is.read(buffer);
person.setPGraduate(time);
person.setPFile(buffer);
person.setPGender("男");
person.setIsMan(true);
save(person);
}
public static boolean save(Person person)
{
Session session=sessionFactory.openSession();
Transaction tx=session.beginTransaction();
try {
session.save(person);
tx.commit();
} catch (Exception e) {
if(tx!=null)
{
tx.rollback();
}
e.printStackTrace();
}finally
{
session.close();
}
return true;
}
}
查询:
int length=is.available();
byte[] buffer=new byte[length];
is.read(buffer);
person.setPGraduate(time);
person.setPFile(buffer);
person.setPGender("男");
person.setIsMan(true);
save(person);
}
public static boolean save(Person person)
{
Session session=sessionFactory.openSession();
Transaction tx=session.beginTransaction();
try {
session.save(person);
tx.commit();
} catch (Exception e) {
if(tx!=null)
{
tx.rollback();
}
e.printStackTrace();
}finally
{
session.close();
}
return true;
}
}
查询:
select * from person;
--当hibernate检索到用户输入的为true时,自动转换为1,false为0!而下面的decode方法则可以将1、0转为true、false
select p_id,p_gender,p_graduate,p_file,decode(isMan, 1,'true',0,'false') as isMan from person;
select p_id,p_gender,p_graduate,p_file,decode(isMan, 1,'true',0,'false') as isMan from person;
转载于:https://blog.51cto.com/eric1314/774571