- 浏览: 187020 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
kjmmlzq19851226:
这个和排序米有关系吧
一个排好序的数组,找出两数之和为m的所有组合 -
ileson:
...
spring在web.xml中的配置
说明:使用以下方法时首先确认你已经配置好了
如果运行报:org.springframework.transaction.TransactionSystemException: Could not commit Hibernate transaction; nested exception is org.hibernate.TransactionException: Transaction not successfully started
将Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();改 为:Session session = getHibernateTemplate().getSessionFactory().openSession();记得关闭session
以下内容转自http://hi.baidu.com/sunjsp/blog/item/9ca1fedb73c86e60d0164ec2.html
JAVA操作CLOB类型的数据库字段还是有点麻烦,虽然CLOB不像BLOB那样是用二进制来存值,但不能当成普通的String来操作,当初操作ORACLE这种字段类型时,可把我折腾了半天,现将如何操作的步骤写了个比较详细的例子和说明,以供大家参考.
这里只写最关键的几个地方,其它的地方平时该怎么写就怎么写
首先是POJO类:
import java.sql.Clob;
import java.util.Date;
/**
*
* @author coffee
*
*/
public class KybasicInfo implements java.io.Serializable {
private Long infoId;
private String infoTitle;
private String infoKeyword;
private Clob infoContent; //注意这个地方是java.sql.Clob类型的,生成默认是String类型的,需要手工改一下
private String infoContentToString; //这个是和infoContent做转换时,手工添加的一个,不和数据库里的字段进行对应的
private Long infoTop;
private String userSno;
private Date infoTime;
private Long icId;
private String infoStandby1;
private String infoStandby2;
private String infoStandby3;
private Long infoStandby4;
private Long infoStandby5;
private Long infoStandby6;
public KybasicInfo() {
}
public KybasicInfo(String infoTitle, String infoKeyword,
Clob infoContent, Long infoTop, String userSno,
Date infoTime, Long icId, String infoStandby1, String infoStandby2,
String infoStandby3, Long infoStandby4, Long infoStandby5,
Long infoStandby6) {
this.infoTitle = infoTitle;
this.infoKeyword = infoKeyword;
this.infoContent = infoContent;
this.infoTop = infoTop;
this.userSno = userSno;
this.infoTime = infoTime;
this.icId=icId;
this.infoStandby1 = infoStandby1;
this.infoStandby2 = infoStandby2;
this.infoStandby3 = infoStandby3;
this.infoStandby4 = infoStandby4;
this.infoStandby5 = infoStandby5;
this.infoStandby6 = infoStandby6;
}
public Long getInfoId() {
return this.infoId;
}
public void setInfoId(Long infoId) {
this.infoId = infoId;
}
public String getInfoTitle() {
return this.infoTitle;
}
public void setInfoTitle(String infoTitle) {
this.infoTitle = infoTitle;
}
public String getInfoKeyword() {
return this.infoKeyword;
}
public void setInfoKeyword(String infoKeyword) {
this.infoKeyword = infoKeyword;
}
public Clob getInfoContent() {
return this.infoContent;
}
public void setInfoContent(Clob infoContent) {
this.infoContent = infoContent;
}
public Long getInfoTop() {
return this.infoTop;
}
public void setInfoTop(Long infoTop) {
this.infoTop = infoTop;
}
public Date getInfoTime() {
return this.infoTime;
}
public void setInfoTime(Date infoTime) {
this.infoTime = infoTime;
}
public String getInfoStandby1() {
return this.infoStandby1;
}
public void setInfoStandby1(String infoStandby1) {
this.infoStandby1 = infoStandby1;
}
public String getInfoStandby2() {
return this.infoStandby2;
}
public void setInfoStandby2(String infoStandby2) {
this.infoStandby2 = infoStandby2;
}
public String getInfoStandby3() {
return this.infoStandby3;
}
public void setInfoStandby3(String infoStandby3) {
this.infoStandby3 = infoStandby3;
}
public Long getInfoStandby4() {
return this.infoStandby4;
}
public void setInfoStandby4(Long infoStandby4) {
this.infoStandby4 = infoStandby4;
}
public Long getInfoStandby5() {
return this.infoStandby5;
}
public void setInfoStandby5(Long infoStandby5) {
this.infoStandby5 = infoStandby5;
}
public Long getInfoStandby6() {
return this.infoStandby6;
}
public void setInfoStandby6(Long infoStandby6) {
this.infoStandby6 = infoStandby6;
}
public String getUserSno() {
return userSno;
}
public void setUserSno(String userSno) {
this.userSno = userSno;
}
public Long getIcId() {
return icId;
}
public void setIcId(Long icId) {
this.icId = icId;
}
public String getInfoContentToString() {
return infoContentToString;
}
public void setInfoContentToString(String infoContentToString) {
this.infoContentToString = infoContentToString;
}
}
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="kymanage.kybasic.vo.KybasicInfo" table="KYBASIC_INFO" schema="BL">
<id name="infoId" type="java.lang.Long">
<column name="INFO_ID" precision="22" scale="0" />
<generator class="sequence">
<param name="sequence">INFO_ID</param>
</generator>
</id>
<property name="infoTitle" type="java.lang.String">
<column name="INFO_TITLE" length="100" />
</property>
<property name="infoKeyword" type="java.lang.String">
<column name="INFO_KEYWORD" length="100" />
</property>
<!--注意:这里要将默认生成的String类型改成java.sql.Clob-->
<property name="infoContent" type="java.sql.Clob">
<column name="INFO_CONTENT" />
</property>
<property name="infoTop" type="java.lang.Long">
<column name="INFO_TOP" precision="38" scale="0" />
</property>
<property name="userSno" type="java.lang.String">
<column name="USER_SNO" length="100" />
</property>
<property name="infoTime" type="java.util.Date">
<column name="INFO_TIME" length="7" />
</property>
<property name="icId" type="java.lang.Long">
<column name="IC_ID" precision="38" scale="0" />
</property>
<property name="infoStandby1" type="java.lang.String">
<column name="INFO_STANDBY1" length="100" />
</property>
<property name="infoStandby2" type="java.lang.String">
<column name="INFO_STANDBY2" length="100" />
</property>
<property name="infoStandby3" type="java.lang.String">
<column name="INFO_STANDBY3" length="100" />
</property>
<property name="infoStandby4" type="java.lang.Long">
<column name="INFO_STANDBY4" precision="38" scale="0" />
</property>
<property name="infoStandby5" type="java.lang.Long">
<column name="INFO_STANDBY5" precision="22" scale="0" />
</property>
<property name="infoStandby6" type="java.lang.Long">
<column name="INFO_STANDBY6" precision="22" scale="0" />
</property>
</class>
</hibernate-mapping>
hibernate DAO类:
import oracle.sql.CLOB;
import java.io.IOException;
import java.io.Writer;
import java.sql.Clob;
import java.sql.SQLException;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Hibernate;
import org.hibernate.LockMode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.lob.SerializableClob;
import org.springframework.context.ApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/**
* kybasicInfo
*
* @author coffee
*
*/
public class KybasicInfoDAOImpl extends HibernateDaoSupport {
protected void initDao() {
}
//新增,在action里将表单中的这个大文本按正常情况传过来,也就是传String类型过来,然后,再在DAO里做Clob类型转换,
//这里面可能会有其它层来传参,但最终还是将传过来的Stirng转换成Clob型的,然后通过文件流形式写入到CLOB字段中去
public void save(KybasicInfo kybasicInfo) {
try {
Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
Transaction tran=session.beginTransaction();
kybasicInfo.setInfoContent(Hibernate.createClob(" "));//注意,这里的参数是个空格,先新增一个空的Clob进去
session.save(kybasicInfo);
session.flush();//强制执行
session.refresh(kybasicInfo,LockMode.UPGRADE);
SerializableClob sc=(SerializableClob)kybasicInfo.getInfoContent();//kybasicInfo.getInfoContent()是Clob类型的
Clob wrapclob=sc.getWrappedClob();//这里的Clob是java.sql.Clob
CLOB clob=(CLOB)wrapclob;//这里的CLOB是oracle.sql.CLOB
Writer writer=clob.getCharacterOutputStream();
writer.write(kybasicInfo.getInfoContentToString());//kybasicInfo.getInfoContentToString() 是String类型的,在action里就是传这个进来,然后再通过文件流形式写成CLOB字段中
writer.close();
session.update(kybasicInfo);
tran.commit();
} catch (RuntimeException re) {
throw re;
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//更新,操作的新增是一样的,都是先接收String类型的参数过来,然后再将String的转成CLOB类型的
public void update(KybasicInfo persistentInstance) {
try {
Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
Transaction tran=session.beginTransaction();
persistentInstance.setInfoContent(Hibernate.createClob(" "));
session.update(persistentInstance);
session.flush();
session.refresh(persistentInstance,LockMode.UPGRADE);
SerializableClob sc=(SerializableClob)persistentInstance.getInfoContent();
Clob wrapclob=sc.getWrappedClob();
CLOB clob=(CLOB)wrapclob;
Writer writer=clob.getCharacterOutputStream();
writer.write(persistentInstance.getInfoContentToString());
writer.close();
session.update(persistentInstance);
tran.commit();
} catch (RuntimeException re) {
throw re;
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//读取Clob字段值
public KybasicInfo findById(java.lang.Long id) {
try {
KybasicInfo instance = (KybasicInfo) getHibernateTemplate().get(
"kymanage.kybasic.vo.KybasicInfo", id);
Clob clob=instance.getInfoContent();//取得Clob的值
if(clob!=null){
String clobString="";
try {
clobString = clob.getSubString(1, (int)clob.length());//将Clob类型的值转换成String类型的值
instance.setInfoContentToString(clobString);//通过setter方法,设置String值,然后就可以通过instance.getInfoContentToString()来取值了
} catch (SQLException e) {
e.printStackTrace();
}
}
return instance;
} catch (RuntimeException re) {
throw re;
}
}
public static KybasicInfoDAOImpl getFromApplicationContext(
ApplicationContext ctx) {
return (KybasicInfoDAOImpl) ctx.getBean("KybasicInfoDAO");
}
}
发表评论
-
Struts2参数赋值的方式和原理
2018-03-15 14:06 553参数赋值方式 1.属性驱动 public cl ... -
Spring事务传播属性与事务隔离级别
2012-03-25 15:32 1165一、PROPAGATION(事务传 ... -
spring在web.xml中的配置
2012-02-26 18:09 2876<?xml version="1.0" ... -
web项目中加载spring容器的方式
2012-02-26 17:14 12021、在Web.xml中,通过ContextLoaderList ... -
Spring加载配置文件的几种方式
2012-02-26 17:02 5100第一种:使用XmlBeanFactory+Resource ... -
Hibernate 与 Spring 多数据源的配置【转载】
2012-01-09 11:48 891Hibernate 与 Spring 多数据源的配置【转载】 ... -
Spring让LOB数据操作变得简单易行
2011-10-26 15:43 881本文讲解了在 Spring 中处理 LOB 数据 ... -
Spring源码学习
2011-09-22 12:01 871a) Spring 初始化的时候首先要运行的类 ... -
Spring Quartz 任务调度配置二
2011-05-10 15:04 8961、Spring 配置文件模板 <?xml ve ... -
Spring Quartz 任务调度配置一
2011-05-10 14:56 9311、Spring 配置文件模板 ... -
struts+spring+hibernate整合
2011-04-25 14:42 895本文基于Struts1.3.10+Spring2.5.6+Hi ... -
Hibernate的三种连接池设置C3P0、dbcp和Proxool
2011-04-13 16:17 801<!-- JDBC驱动程序 --> <p ... -
Java框架数据库连接池比较(c3p0,dbcp和proxool)
2011-04-13 16:07 913现在常用的开源数据连接池主要有c3p0,dbcp和proxoo ... -
Struts+Spring+JPA整合
2011-04-13 10:51 1415本文基于Struts1.3.10+Spring ... -
dwr配置文件
2011-04-12 13:15 859dwr.xml是DWR的配置文件。 ... -
struts2+spring+dwr+ibatis整合开发的最精简jar组合
2011-03-17 18:13 1241struts 2应用只需要下列几个必须的jar: common ... -
spring+dwr
2011-03-17 18:07 795首先开发环境是eclipse.这里需要hibernate3.2 ...
相关推荐
ORACLE中CLOB字段转String类型
运用Java如何存取Oracle中的CLOB类型字段
把oracle数据库中字段类型为clob的字段值以字符串的形式读取出来
JDBC读写Oracle的CLOB字段
NULL 博文链接:https://hackpro.iteye.com/blog/1845366
sql server中的image类型的数据导出到oracle的clob字段中
asp.net操作oracle clob字段demo
J2EE开发中,经常会遇到存储大文本的文字信息,而oracle数据库的vachar字段最大能存储4000个字节,存储更大的信息必须使用clob或blob字段,本文档就是针对j2ee开发中对colb字段操作的实现。
CLOB字段类型报错 ORA-01704:文字字符串过长的解决
ibatis 读取oracle clob类型
oracleoracleoracleoracleoracleoracleoracleoracleoracleoracleoracleoracleoracleoracleoracleoracle
最近在用oracle的过程中用到了对blob字段模糊查询的问题。接下来通过本文给大家分享关于oracle中clob字段查询慢的问题及解决方法,需要的的朋友参考下吧
java操作oracle clob,基础教程,教你clob在java中的用法,简单易学。
本文讲解Oracle如何对CLOB行字段来执行全文检索。
java操作oracle clob,基础教程,教你clob在java中的用法,简单易学。
VARCHAR2既分PL/SQL Data Types中的变量类型,也分Oracle Database中的字段类型,不同场景的最大长度不同。接下来通过本文给大家分享Oracle的CLOB大数据字段类型操作方法,感兴趣的朋友一起看看吧
oracle中使用jdbc读写clob字段,很多细节介绍,内容全面。
主要是整合了jdbc处理clob类型的增删改查方法,有需要的同学可以看下