我在做一个练习的时候后台数据库是Sybase的字符集是cp850用Spring的Hibernate连接后用find()从数据库里取到的值都是乱码,我写了一个方法里到List里把它一项一项的转正了GBK,但是我想问问有没有更好的方法,不用一个一个的转。
下面是applicationContext.xml的代码
<?xml version="1.0" encoding="UTF-8"?>
<!--
- Application context definition for JPetStore's business layer.
- Contains bean references to the transaction manager and to the DAOs in
- dataAccessContext-local/jta.xml (see web.xml's "contextConfigLocation").
- in Spring Train by zhangzhenhua 2007.4.23
-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.0.xsd">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.sybase.jdbc2.jdbc.SybDriver</value>
</property>
<property name="url">
<value>
jdbc:sybase:Tds:10.201.1.111:5000/sgmarketdatabase
</value>
</property>
<property name="username">
<value>sa</value>
</property>
<property name="password">
<value>su27ik</value>
</property>
</bean>
<!--
<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/sysmanager"/>
-->
<bean id="SessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"></ref>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SybaseDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>
com/lhd/sysmanager/pojo/MarketRole.hbm.xml
</value>
<value>
com/lhd/sysmanager/pojo/MarketWork.hbm.xml
</value>
<value>
com/lhd/sysmanager/pojo/MarketUser.hbm.xml
</value>
<value>
com/lhd/sysmanager/pojo/WorkLog.hbm.xml
</value>
<value>
com/lhd/sysmanager/pojo/PubDept.hbm.xml
</value>
</list>
</property>
</bean>
<bean id="MarketRoleDAO"
class="com.lhd.sysmanager.dao.imp.MarketRoleDAO">
<property name="sessionFactory">
<ref bean="SessionFactory"></ref>
</property>
</bean>
<bean id="MarketWorkDAO"
class="com.lhd.sysmanager.dao.imp.MarketWorkDAO">
<property name="sessionFactory">
<ref bean="SessionFactory"></ref>
</property>
</bean>
<bean id="MarketUserDAO"
class="com.lhd.sysmanager.dao.imp.MarketUserDAO">
<property name="sessionFactory">
<ref bean="SessionFactory"></ref>
</property>
</bean>
<bean id="WorkLogDAO"
class="com.lhd.sysmanager.dao.imp.WorkLogDAO">
<property name="sessionFactory">
<ref bean="SessionFactory"></ref>
</property>
</bean>
<bean id="PubDeptDAO"
class="com.lhd.sysmanager.dao.imp.PubDeptDAO">
<property name="sessionFactory">
<ref bean="SessionFactory"></ref>
</property>
</bean>
<bean id="PageDAO"
class="com.lhd.sysmanager.dao.imp.PageDAO">
<property name="sessionFactory">
<ref bean="SessionFactory"></ref>
</property>
</bean>
<tx:advice id="TxManager"><!-- 事务通知 -->
<tx:attributes>
<tx:method name="list*" read-only="true" rollback-for="Exception"/>
<tx:method name="find*" read-only="true" rollback-for="Exception"/>
<tx:method name="query*" read-only="true" rollback-for="Exception"/>
<tx:method name="add*" rollback-for="Exception"/>
<tx:method name="dele*" rollback-for="Exception"/>
</tx:attributes>
</tx:advice>
<aop:config><!-- 事务管理 -->
<aop:pointcut id="defaultService" expression="execution(* com.lhd.sysmanager.manager.*.*(..))"/>
<aop:advisor pointcut-ref="defaultService" advice-ref="TxManager"/>
</aop:config>
<!-- Spring集成的hibernate事务管理类 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory"><ref local="SessionFactory"/></property>
</bean>
<bean id="MarketRoleService" class="com.lhd.sysmanager.manager.MarketRoleManager">
<property name="dao" ref="MarketRoleDAO"></property>
</bean>
<bean id="MarketUserService" class="com.lhd.sysmanager.manager.MarketUserManager">
<property name="dao" ref="MarketUserDAO"></property>
</bean>
<bean id="MarketWorkService" class="com.lhd.sysmanager.manager.MarketWorkManager">
<property name="dao" ref="MarketWorkDAO"></property>
</bean>
<bean id="PubDeptService" class="com.lhd.sysmanager.manager.PubDeptManager">
<property name="dao" ref="PubDeptDAO"></property>
</bean>
<bean id="WorkLogService" class="com.lhd.sysmanager.manager.WorkLogManager">
<property name="dao" ref="WorkLogDAO"></property>
</bean>
<bean id="PageService" class="com.lhd.sysmanager.manager.PageManager">
<property name="page" ref="PageDAO"></property>
</bean>
</beans>
下面是find()方法
public List find() {
log.debug("finding MarketWork instance by example");
try {
List results = getHibernateTemplate().find("from com.lhd.sysmanager.pojo.MarketUser u order by u.id desc");
log.debug("find successful, result size: "
+ results.size());
for(int i= 0;i<result.size();i++)
{
MarketUser us = (MarketUser)result.get(i);
us.setDeptName(PubMethod.ISOtoGBK(us.getDeptName()));
System.out.println("#######"+us.getDeptName()+"#####");
} return results;
} catch (RuntimeException re) {
log.error("find failed", re);
throw re;
}
}
分享到:
相关推荐
本文将深入探讨“hibernate+mysql乱码问题”的原因、解决方案以及如何预防这类问题。 首先,我们需要了解乱码问题的根源。在数据库层面,MySQL的编码格式对数据存储和检索至关重要。如果数据库、表或列的字符集不...
### Hibernate数据库中文乱码问题详解 #### 背景与问题描述 在使用Hibernate框架进行数据库操作时,可能会遇到中文乱码的问题。特别是在使用MySQL作为数据库,并且已将数据库编码设置为`utf-8`的情况下,依然出现...
根据提供的文件信息,我们可以推断出这段代码是关于一个用于设置请求字符编码的过滤器(Filter),主要目的是解决在Hibernate框架使用过程中遇到的中文乱码问题。下面将详细阐述与标题、描述及部分代码相关的关键...
### 解决Struts2.1.6 + Spring + Hibernate 中文乱码问题 在Web开发过程中,特别是使用Java EE框架时,字符编码问题一直是开发者关注的重点之一。对于使用Struts2.1.6、Spring以及Hibernate这三个框架组合的项目而...
以下是解决hibernate与MySQL存储中文时出现乱码问题的详细步骤和相关知识点: 1. **配置Hibernate连接URL**: 在`hibernate.cfg.xml`配置文件中,需要正确设置连接URL以指定字符集。添加`useUnicode=true`和`...
### Hibernate与MySQL中文乱码问题解析及解决方案 #### 一、问题概述 在使用Hibernate框架进行Java应用程序开发的过程中,尤其是在连接MySQL数据库时,经常会遇到中文显示乱码的问题。这一问题通常发生在从数据库...
该项目是解决hibernate反向工程生成的实体文件中文备注乱码问题的。 试用环境 hibernate-version 4.0.1 Hibernate Tools 5.1.4.v20170413-1729 org.hibernate.eclipse.feature.feature.group JBoss by Red Hat ...
在Java的持久层框架中,Hibernate是一个非常流行的ORM(对象关系映射)工具,它极大地简化了数据库操作。...通过合理配置和使用,我们可以避免乱码问题,并生成符合规范的带有丰富注释的实体类代码。
NULL 博文链接:https://kennylee26.iteye.com/blog/1229993
通过以上两种方法之一,可以有效地解决Hibernate在处理中文字符时出现的乱码问题。关键在于确保客户端与服务器端之间传输数据时所使用的字符集保持一致。如果仍然遇到问题,建议检查数据库表的字符集设置、应用程序...
综上所述,解决hibernate+mysql环境下中文存入数据库乱码的问题,需要从Web应用配置、数据库配置、框架配置以及文件编码等多个方面综合考虑,确保整个数据处理链路的字符集一致且支持UTF-8。只有这样,才能确保中文...
关于乱码问题,通常需要在Servlet容器(如Tomcat)和应用程序中设置正确的字符编码。例如,在HTTP响应头中设置`Content-Type`为`text/html;charset=UTF-8`,并在JSP页面中使用`;charset=UTF-8"%>`。此外,确保数据库...
本文将详细介绍如何在使用Hibernate框架进行数据库操作时解决中文乱码问题,特别是针对MySQL数据库。 #### Hibernate与乱码问题概述 在Java开发中,Hibernate作为一种流行的ORM(Object Relational Mapping)框架...
J2EE开发中遇到的乱码问题是一个常见的困扰,尤其是在处理中文字符时。本文将详细介绍如何解决这些问题,以一个基于Eclipse 3.3 + MyEclipse 6.0 + Tomcat 5.5的项目为例,该项目采用了Ext、Struts和Hibernate框架。...
在本篇文章中,我们将深入探讨如何解决Struts + Hibernate + MyEclipse + Tomcat + MySQL环境中出现的乱码问题。该问题通常出现在处理中文字符时,由于编码设置不当导致中文显示为乱码或无法正常读取。为了确保系统...
本文将深入解析在使用Hibernate框架与MySQL数据库时遇到的中文乱码问题,以及如何解决这一问题。 首先,我们需要理解中文乱码出现的根本原因。当Java应用程序中的持久化类包含中文字符串,并通过Hibernate映射到...
### MySQL乱码问题解决方案 在处理数据库操作时,字符集编码问题经常会导致数据展示或存储过程中出现乱码现象。MySQL作为广泛使用的开源关系型数据库管理系统之一,在实际应用中也难免会遇到字符集不匹配导致的数据...
### SQL-SERVER-64位配置ORACLE连接-中文乱码问题 在IT行业中,不同数据库之间的连接配置是一项常见的任务,特别是在需要实现跨平台数据交换的场景下。本文将详细介绍如何解决64位系统下的SQL Server连接Oracle...
在Java Web开发中,我们经常会遇到各种乱码问题,特别是在使用Hibernate、Struts和Spring等框架时。这些框架处理数据的方式以及与数据库交互的过程都可能导致字符编码不一致,从而引发乱码现象。以下是对这些技术全...