Rising Sun

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  148 随笔 :: 0 文章 :: 22 评论 :: 0 Trackbacks

#

struts2中对action name支持通配符配置,所以使其方便的实现零配置成为可能。

实现零配置后的开发会是怎样,开发员不用配置struts.xml,也不用在action代码中写annotation,是真正干净的零配置。以下的代码是我们希望达到的效果。
action示例
package net.jacker.ww.sys;

public class UserAction extends BaseAction {


  
    
public String execute() throws Exception {
         
         
return "default"
         //
 default表示使用缺省页面,路径名和action所在包和类名相关,为 /sys/User.jsp
    }

    
public String roles(){
        
        
return view("/sys/UserRoles"); // 指定展示页面为 /sys/UserRoles.jsp 
    }


    
public String xxxx(){
       
       
return redirect("/sys/User.do"); // 重定向,url为 /sys/User.do
    
    }




}


以上action的三个方法无需配置,将可以分别用以下链接进行访问:
http://localhost:8080/sys/User.do
http://localhost:8080/sys/User!roles.do
http://localhost:8080/sys/User!xxxx.do(将重定向到User.do)


下面我们来看看以上零配置是如何做到的。
首先,我们需要在struts.xml中做如下的配置。
<struts>
    
<constant name="struts.enable.SlashesInActionNames" value="true" /> <!-- action名可以有'/'字符 -->
    
<constant name="struts.action.extension" value="do"/> <!-- .do为访问扩展名 -->

  
<package name="default" extends="struts-default">
  
  
<!-- 通配符配置,匹配所有的URL对action的访问 -->
    
<action name="*/*!*" class="net.jacker.ww.{1}.{2}Action" method="{3}"> 
      
<result name="default" type="dispatcher">/{1}/{2}.jsp</result>
      
<result name="view" type="dispatcher">${viewpath}.jsp</result>
      
<result name="redirect" type="redirect">${viewpath}</result>
    
</action>
    
<action name="*/*" class="net.jacker.ww.{1}.{2}Action">
      
<result name="default" type="dispatcher">/{1}/{2}.jsp</result>
      
<result name="view" type="dispatcher">${viewpath}.jsp</result>
      
<result name="redirect" type="redirect">${viewpath}</result>
    
</action>
  
</package>

</struts>


然后是写一个Action基类,BaseAction.java
package net.jacker.ww;

import com.opensymphony.xwork2.Action;


public abstract class BaseAction implements Action{

    

    String viewpath; 
//该属性会在struts.xml中用到

    
public String view(String vpath){
        viewpath 
= vpath;
        
return "view";
    }

    
public String redirect(String vpath){
        viewpath 
= vpath;
        
return "redirect";
    }


    
public String getViewpath() {
        
return viewpath;
    }

    

}


做好以上的基础工作,你的action类只要继承BaseAction,符合XxxAction的命名规则,放到对应的包下,页面也放到对应的路径,就可以无需配置而访问了。

如果要替换view层也很简单,只要对struts.xml做简单修改,比如:

<result name="default" type="dispatcher">/{1}/{2}.jsp</result>

改为

 <result name="default" type="velocity">/{1}/{2}.vtl</result>

修改后的struts将统一使用velocity模板取代jsp作为页面展示层。

注意:
实测后发现,以上零配置的做法只在struts2.0.11版本中可以使用,在struts2.0.XX的更高版本中却未能获通过,这不能不说是个遗憾。
posted @ 2009-08-20 17:21 brock 阅读(1308) | 评论 (0)编辑 收藏

1.interceptor的配置

方法1. 普通配置法

<struts>
    <package name="struts2" extends="struts-default">
        <interceptors>
            <interceptor name="myInterceptor" class="edu.hust.interceptor.MyInterceptor"></interceptor>
        </interceptors>

        <action name="register" class="edu.hust.action.RegisterAction">
            <result name="input">/register.jsp</result>
            <result>/result.jsp</result>
            
            <!-- 在自定义interceptor并将其ref时, 系统会覆盖掉默认的interceptor-stack(defaultStack), 为了保证系统默认的defaultStack不受印象, 我们需要显式的将其引入 -->
            <!-- 注意两个interceptor-ref的顺序, 顺序不同, 执行效果也不同: 先配置的先执行/后配置的先退出(先进后出) --> 
            <interceptor-ref name="defaultStack"></interceptor-ref> 
            <interceptor-ref name="myInterceptor"></interceptor-ref>
        </action>
    </package>
</struts>
方法2. 配置拦截器栈(即将多个interceptor串联的一种元素)。然后在<action>中引入该拦截器栈就可以了。

<struts>
    <package name="struts2" extends="struts-default">
        
        <interceptors>
            <interceptor name="myInterceptor" class="edu.hust.interceptor.MyInterceptor"></interceptor>
        
            <interceptor-stack name="myInterceptorStack">
                <interceptor-ref name="myInterceptor"></interceptor-ref> 
                <interceptor-ref name="defaultStack"></interceptor-ref> 
            </interceptor-stack>
        </interceptors>
        
        <action name="register" class="edu.hust.action.RegisterAction">
            <result name="input">/register.jsp</result>
            <result>/result.jsp</result> 
             
            <interceptor-ref name="myInterceptorStack"></interceptor-ref> 
        </action>
    </package>
</struts>
方法3. 修改默认拦截器,将自定义的拦截器栈定义为struts2的默认拦截器。

<struts>
    <package name="struts2" extends="struts-default">
        
        <interceptors>
            <interceptor name="myInterceptor" class="edu.hust.interceptor.MyInterceptor"></interceptor>
            <interceptor-stack name="myInterceptorStack">
                <interceptor-ref name="myInterceptor"></interceptor-ref> 
                <interceptor-ref name="defaultStack"></interceptor-ref> 
            </interceptor-stack>
        </interceptors>

        <!-- 此默认interceptor是针对所有action的 -->
        <!-- 如果某个action中引入了interceptor, 则在这个action中此默认interceptor就会失效 -->
        <default-interceptor-ref name="myInterceptorStack"></default-interceptor-ref>
        
        <action name="register" class="edu.hust.action.RegisterAction">
            <result name="input">/register.jsp</result>
            <result>/result.jsp</result>
        </action>
        
    </package>
</struts>
2. Interceptor的角色对象

(1)拦截目标对象(被代理对象),这里目标对象就是action;

(2)拦截器(一个类,动态的将某些方法插入到目标对象的某方法的before、after);

(3)对目标对象生成的(动态)代理对象(代理对象内部方法综合了目标对象方法+拦截器方法)。程序最终执行的是目标对象的代理,而这个代理已经插入了interceptor。

拦截器作用:拦截action。interceptor相当于一个入口和出口,通过interceptor进入action,执行完action的代码再通过interceptor出去。

针对"struts2 -- interceptor(Interceptor怎么写)"这篇文章的MyInterceptor.class和MyInterceptor2.class。根据下面的配置文件执行程序

<struts>
    <package name="struts2" extends="struts-default">
        
        <interceptors>
            <interceptor name="myInterceptor" class="edu.hust.interceptor.MyInterceptor"></interceptor>
            <interceptor name="myInterceptor2" class="edu.hust.interceptor.MyInterceptor2"></interceptor>
            <interceptor-stack name="myInterceptorStack">
                <interceptor-ref name="myInterceptor"></interceptor-ref>
                <interceptor-ref name="myInterceptor2"></interceptor-ref>
                <interceptor-ref name="defaultStack"></interceptor-ref>
            </interceptor-stack>
        </interceptors>
        
        <default-interceptor-ref name="myInterceptorStack"></default-interceptor-ref>
        
        <action name="register" class="edu.hust.action.RegisterAction">
            <result name="input">/register.jsp</result>
            <result>/result.jsp</result>
        </action>
        
    </package>
</struts>

Console会得到以下打印输出
intercept start
intercept2 start
2008-9-19 19:42:06 com.opensymphony.xwork2.validator.ActionValidatorManagerFactory <clinit>
信息: Detected AnnotationActionValidatorManager, initializing it...
intercept2 finish
intercept finish

这个结果解释了"interceptor相当于一个入口和出口,通过interceptor进入action,执行完action的代码再通过interceptor出去"这句话。

3. extends MethodFilterInterceptor的拦截器如何配置哪些方法该拦截、哪些方法不该拦截(针对方法拦截的配置)

<struts>
    <package name="struts2" extends="struts-default">
        
        <interceptors>
            <interceptor name="myInterceptor3" class="edu.hust.interceptor.MyInterceptor3"></interceptor>
        </interceptors>
        
        <action name="register" class="edu.hust.action.RegisterAction" method="queryAll">
            <result name="input">/register.jsp</result>
            <result>/result.jsp</result>
            <!-- myInterceptor3拦截器只对RegisterAction中的queryAll()方法和insert()方法进行了拦截, 其他方法未进行拦截 -->
            <interceptor-ref name="myInterceptor3">
                <param name="includeMethods">queryAll, execute</param>
            </interceptor-ref>
            <interceptor-ref name="defaultStack"></interceptor-ref>
        </action>
        
        <action name="register" class="edu.hust.action.RegisterAction" method="insert">
            <result name="input">/register.jsp</result>
            <result>/result.jsp</result>
            <interceptor-ref name="myInterceptor3">
                <param name="includeMethods">queryAll, insert</param>
            </interceptor-ref>
            <interceptor-ref name="defaultStack"></interceptor-ref>
        </action>
        
        <action name="register" class="edu.hust.action.RegisterAction" method="update">
            <result name="input">/register.jsp</result>
            <result>/result.jsp</result>
            <interceptor-ref name="myInterceptor3">
                <param name="includeMethods">queryAll, insert</param>
            </interceptor-ref>
            <interceptor-ref name="defaultStack"></interceptor-ref>
        </action>
        
    </package>
</struts>


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ForWayfarer/archive/2008/09/20/2955586.aspx

posted @ 2009-08-20 11:03 brock 阅读(7515) | 评论 (0)编辑 收藏

1.非Ioc方式

HttpServletRequest request1 
= ServletActionContext.getRequest();
ActionContext context 
= ActionContext.getContext();
HttpServletRequest request2 
= (HttpServletRequest).context.get(ServletActionContext.HTTP_REQUEST);

取值:
<s:property value="#request.key"/>

HttpSession  session1 
= ServletActionContext.getRequest().getSession();

取值:
<s:property value="#session.key"/>
Map  session2 
=(Map) ActionContext.getContext().get(ActionContext.SESSION);
Map  session3 
= ActionContext.getContext().getSession();

取值:
<s:property value="key"/>

2.IoC方式 
     <interceptor-ref name="defaultStack"/>配置一定要真确 不然为null 
这种方式相对来说变化就比较少了,具体流程如下所示。 
获得request对象: 
第一步:让action实现ServletRequestAware接口 
第二步:在action中声明一个HttpServletRequest类型的实例变量 
第三步:在action中实现ServletRequestAware接口的setServletRequest方法,实现方式很简单,如下所示。 


private HttpServletRequest request; 
publicvoid setServletRequest(HttpServletRequest request) 

            
this.request = request; 
    }
 
获得Session对象(注意,此时的session是SessionMap类型): 
第一步:让action实现SessionAware接口 
第二步:在action中声明一个HttpServletRequest类型的实例变量 
第三步:在action中实现SessionAware接口的setSession方法,实现方式很简单,如下所示。 


private Map session; 
publicvoid setSession(Map session) 

            
this. session = session; 
    }
 



本文来自CSDN博客,转载请标明出处:http:
//blog.csdn.net/xxxx1243/archive/2009/02/16/3896133.aspx
posted @ 2009-08-20 10:32 brock 阅读(351) | 评论 (0)编辑 收藏

大多数语言都有包含其它代码文件的命令,如ASP和c/c++下的Include,java下的import,唯独javascript好像没这功能,为了应付工作,特写了如下这个函数:

//******************************************************
// 包含文件 用法: $import('../include/mian.js', 'js');
//                 $import('../style/style.css', 'css');
//******************************************************
function $import(path, type){
 var i,
      base,
      src = "common.js",
      scripts = document.getElementsByTagName("script");

 

 for (i = 0; i < scripts.length; i++) {
      if (scripts[i].src.match(src)) {
          base = scripts[i].src.replace(src, "");
          break;
      }
  }
 
  if (type == "css") {
      document.write("<" + "link href=\"" + base + path + "\" rel=\"stylesheet\" type=\"text/css\"></" + "link>");
  } else {
      document.write("<" + "script src=\"" + base + path + "\"></" + "script>");
  }
}

附带几个类型判断的函数:

//******************************************************
// 判断类型
//******************************************************
function isAlien(a) {
  return isObject(a) && typeof a.constructor != 'function';
}

 

function isArray(a) {
  return isObject(a) && a.constructor == Array;
}

function isBoolean(a) {
  return typeof a == 'boolean';
}

function isEmpty(o) {
  var i, v;
  if (isObject(o)) {
    for (i in o) {
      v = o[i];
      if (isUndefined(v) && isFunction(v)) {
        return false;
      }
    }
  }
  return true;
}

function isFunction(a) {
  return typeof a == 'function';
}

function isNull(a) {
  return typeof a == 'object' && !a;
}

function isNumber(a) {
  return typeof a == 'number' && isFinite(a);
}

function isObject(a) {
  return (a && typeof a == 'object') || isFunction(a);
}

function isString(a) {
  return typeof a == 'string';
}

function isUndefined(a) {
  return typeof a == 'undefined';
}

posted @ 2009-07-23 13:50 brock 阅读(184) | 评论 (0)编辑 收藏

StringUtil.replace(StringUtil.replace(str,"\n","<br/>"),"\r\n","<br/>");  
posted @ 2009-07-17 12:16 brock 阅读(201) | 评论 (0)编辑 收藏

ifconfig -a
/sbin/ifconfig
看IP

export LANG=zh_CN.UTF-8


locale 看字体


ps -ef|grep serverName


kill -9 num


dos2unix run-wetv.sh


rz 上传


#date -s 11:12:00
#date -s 07/26/2005

1)uname -a
2)cat /proc/version
3)cat /etc/issue  重点

查看gcc的版本
gcc --version

查看 libc的版本
rpm -qa|grep glibc

建目录
mkdir -p ivas


useradd ivas
passwd ivas


修改用户主目录
修改用户的主目录主要使用usermod命令的-d参数,例如:
usermod -d /www floatboat
这一行将floatboat的主目录改到/www。如果想将现有主目录的主要内容转移到新的目录,应该使用-m开关,如下所示:
usermod -d -m /www floatboat

远程拷备
scp 文件 ivas@10.0.86.230:/ivas  指定文件
scp -r * ivas@10.0.86.230:/ivas  所有文件

tar -zxvf xxx.tar.gz

安装apache
所需要安装文件:
httpd-2.2.0.tar.gz
apache-tomcat-5.5.12.tar.gz
jakarta-tomcat-connectors-1.2.15-src.tar.gz
Linux下安装:
# tar xzvf httpd-2.2.0.tar.gz
# cd httpd-2.2.0
# ./configure --prefix=/usr/local/apache2 --enable-so
# make
# make install

起动
apache2/bin/apachectl -f /usr/local/apache2/conf/httpd.conf

[root@localhost bin]# ./apachectl stop
[root@localhost bin]# ./apachectl start

 


我在Fedora Core 3上已经成功安装了jdk(jdk-1_5_0_02-linux-i586.rpm),其它版本的Linux基本相同,过程如下:

1. 先从网上下载jdk(jdk-1_5_0_02-linux-i586.rpm) ,推荐SUN的官方网站www.sun.com,下载后放在/home目录中,当然其它地方也行。

进入安装目录
#cd /home
#cp jdk-1_5_0_02-linux-i586.rpm /usr/local
#cd /usr/local
给所有用户添加可执行的权限
#chmod +x jdk-1_5_0_02-linux-i586.rpm.bin
#./jdk-1_5_0_02-linux-i586.rpm.bin
此时会生成文件jdk-1_5_0_02-linux-i586.rpm,同样给所有用户添加可执行的权限
#chmod +x jdk-1_5_0_02-linux-i586.rpm
安装程序
#rpm -ivh jdk-1_5_0_02-linux-i586.rpm
出现安装协议等,按接受即可。

2.设置环境变量。
#vi /etc/profile
在最后面加入
#set java environment
JAVA_HOME=/usr/java/jdk-1_5_0_02
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
保存退出。

要使JDK在所有的用户中使用,可以这样:
vi /etc/profile.d/java.sh
在新的java.sh中输入以下内容:
#set java environment
JAVA_HOME=/usr/java/jdk-1_5_0_02
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
保存退出,然后给java.sh分配权限:chmod 755 /etc/profile.d/java.sh

3.在终端使用echo命令检查环境变量设置情况。
#echo $JAVA_HOME
#echo $CLASSPATH
#echo $PATH

4.检查JDK是否安装成功。
#java -version
如果看到JVM版本及相关信息,即安装成功!

------------------------------------------------------------
netstat   -anp   |   grep 6500

 liunx 版本
cat   /proc/version
----------------------------------------------------------------
从官网下载mysql-5.0.67-linux-i686.tar.gz,下载的这个版本不需要编译安装,解压就能用了。
#tar -zvxf mysql-5.0.67-linux-i686.tar.gz
#mv mysql-5.0.67   /usr/local/mysql
#cd /usr/local/mysql
#groupadd mysql
#useradd -g mysql mysql
#chown -R mysql .  // 注意后面有个点
#chgrp -R mysql .
#scripts/mysql_install_db --user=mysql
#chown -R root .
#chown -R mysql data
#bin/mysqld_safe --user=mysql &  // 启动
#cp ./support-files/mysql.server /etc/init.d/mysql      // 让mysql以后可以随系统一起启动
#/sbin/chkconfig --add mysql
#./bin/mysql_secure_installation            // 运行这个脚本,会有个mysql的配置向导
# /etc/rc.d/init.d/mysqld start     //重启一下机器,就可以启动 MySQL
# ./bin/mysqladmin -u root password 'password_for_root'
# ./bin/mysqladmin -uroot -p password "新密码"   //可以通过这方式修改密码
# service mysqld stop //关闭 MySQL

----------------------

posted @ 2009-07-10 17:15 brock 阅读(219) | 评论 (0)编辑 收藏

http://www.blogjava.net/justfly/archive/2007/02/05/98090.html
Remote Debugging with Eclipse说明了远程调试的原理,说明了让java程序支持被远程调用所需要的java参数如下
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044
以及如何配置远程调试weblogic、jboss和tomcat,但是里面对如何让tomcat支持远程调用并没有仔细说。再搜索,在tomcat的FAQ就找到了:
How do I configure Tomcat to support remote debugging?
如上面所示,其中的关键在于如何正确的启动tomcat。对于非windows平台下的操作来说,需要把%TOMCAT_HOME%/bin/startup.sh中的最后一行exec "$PRGDIR"/"$EXECUTABLE" start "$@" 中的start改成jpda start。如果的8000端口有其他用处的话,那么还需要修改catalina.sh文件,看其中的说明,添加一行JPDA_ADDRESS=”1044”或者其他你指定的端口。这样就可以通过startup.sh或者catalina.sh jpda start来其中支持远程调试的tomcat了。
在windows平台上是一样的步骤,只不过.sh文件改成了.bat文件了。然后需要注意以下这些地方,
1、 catalina.bat文件默认的JPDA_TRANSPORT是dt_shmem,但是Eclipse只支持dt_socket,所以需要在catalina.bat中添加一行set JPDA_TRANSPORT=”dt_socket”
2、 catalina.bat文件默认的端口是jdbconn,我也不知道这个端口是多少,因此添加一个set JPDA_ADDRESS="1044"
posted @ 2009-06-10 16:36 brock 阅读(476) | 评论 (0)编辑 收藏

      在使用MINA做客户端程序时,发现虽然调用了session.close()方法,通过日志也确实看到当前session已经被关闭了,但未什么客户端程序进程却没有停止呢?即MINA客户端没有根本的关闭。这个现象在版本1和2中都存在。这是MINA的bug吗???其实不然...

      我们可以启动2个服务器端,然后用同一个connector实例来连接这2台服务器,通过结果可以发现2个连接是相互独立工作的,及connector和session不是一对一的。

      通过查阅API和源代码,我们可以发现这里的connector实际是一个连接管理器,其内部通过一个connectQueue队列同步存储一个连接列表。并在调用connect()方法时,将当前连接请求注册到队列中;同时connector中启动着一个内部的Worker(工作线程)来管理这些连接。当我们关闭某个session之后,只是关闭了某个请求,工作线程其实并没有被关闭,所以出现程序没有停止的现象。

MINA1.1.7

可以通过设置工作超时来关闭连接,当所有的连接都被关闭后worker线程将停止,即connector停止。

Java代码 复制代码
  1. connector.setWorkerTimeout(1);   //1秒钟(默认超时60秒)  

PS:Worker定义在SocketConnector类中,内部直接实现管理

MINA2.0

可以调用connector的dispose()方法。该方法通过调用ExecutorService的shutdown()方法停止业务处理线程,并设置内部disposed标志位标识需要停止连接管理器;Worker线程通过该标识停止。

Java代码 复制代码
  1. connector.dispose();  

PS: Worker定义在AbstractPollingIoConnector类中,disposed标志在AbstractIoService类中,通过dispose()方法停止ExecutorService并设置disposed标志

posted @ 2009-06-04 13:18 brock 阅读(2878) | 评论 (0)编辑 收藏


导出数据
mysqldump --opt -h10.10.10.33 -upoi_user -pa_user --skip-lock-tables a_mis_database>/tmp/database.sql 


shell> mysqldump [OPTIONS] database [tables]  

如果你不给定任何表,整个数据库将被导出。  

通过执行mysqldump --help,你能得到你mysqldump的版本支持的选项表。  

注意,如果你运行mysqldump没有--quick或--opt选项,mysqldump将在导出结果前装载整个结果集到内存中,如果你正在导出一个大的数据库,这将可能是一个问题。  

mysqldump支持下列选项:  

--add-locks  
在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。  
--add-drop-table  
在每个create语句之前增加一个drop table。  
--allow-keywords  
允许创建是关键词的列名字。这由表名前缀于每个列名做到。  
-c, --complete-insert  
使用完整的insert语句(用列名字)。  
-C, --compress  
如果客户和服务器均支持压缩,压缩两者间所有的信息。  
--delayed  
用INSERT DELAYED命令插入行。  
-e, --extended-insert  
使用全新多行INSERT语法。(给出更紧缩并且更快的插入语句)  
-#, --debug[=option_string]  
跟踪程序的使用(为了调试)。  
--help  
显示一条帮助消息并且退出。  
--fields-terminated-by=...  
   
--fields-enclosed-by=...  
   
--fields-optionally-enclosed-by=...  
   
--fields-escaped-by=...  
   
--fields-terminated-by=...  
这些选择与-T选择一起使用,并且有相应的LOAD DATA INFILE子句相同的含义。  
LOAD DATA INFILE语法。  
-F, --flush-logs  
在开始导出前,洗掉在MySQL服务器中的日志文件。  
-f, --force,  
即使我们在一个表导出期间得到一个SQL错误,继续。  
-h, --host=..  
从命名的主机上的MySQL服务器导出数据。缺省主机是localhost。  
-l, --lock-tables.  
为开始导出锁定所有表。  
-t, --no-create-info  
不写入表创建信息(CREATE TABLE语句)  
-d, --no-data  
不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用的!  
--opt  
同--quick --add-drop-table --add-locks --extended-insert --lock-tables。  
应该给你为读入一个MySQL服务器的尽可能最快的导出。  
-pyour_pass, --password[=your_pass]  
与服务器连接时使用的口令。如果你不指定“=your_pass”部分,mysqldump需要来自终端的口令。  
-P port_num, --port=port_num  
与一台主机连接时使用的TCP/IP端口号。(这用于连接到localhost以外的主机,因为它使用 Unix套接字。)  
-q, --quick  
不缓冲查询,直接导出至stdout;使用mysql_use_result()做它。  
-S /path/to/socket, --socket=/path/to/socket  
与localhost连接时(它是缺省主机)使用的套接字文件。  
-T, --tab=path-to-some-directory  
对于每个给定的表,创建一个table_name.sql文件,它包含SQL CREATE 命令,和一个table_name.txt文件,它包含数据。 注意:这只有在mysqldump运行在mysqld守护进程运行的同一台机器上的时候才工作。.txt文件的格式根据--fields-xxx和--lines--xxx选项来定。  
-u user_name, --user=user_name  
与服务器连接时,MySQL使用的用户名。缺省值是你的Unix登录名。  
-O var=option, --set-variable var=option设置一个变量的值。可能的变量被列在下面。  
-v, --verbose  
冗长模式。打印出程序所做的更多的信息。  
-V, --version  
打印版本信息并且退出。  
-w, --where='where-condition'  
只导出被选择了的记录;注意引号是强制的!  
"--where=user='jimf'" "-wuserid>1" "-wuserid<1" 

最常见的mysqldump使用可能制作整个数据库的一个备份: 

mysqldump --opt database > backup-file.sql  

但是它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的:  

mysqldump --opt database | mysql --host=remote-host -C database  

由于mysqldump导出的是完整的SQL语句,所以用mysql客户程序很容易就能把数据导入了:  

shell> mysqladmin create target_db_name  
shell> mysql target_db_name < backup-file.sql 
就是 
shell> mysql 库名 < 文件名 
posted @ 2009-05-20 11:20 brock 阅读(172) | 评论 (0)编辑 收藏

 

定义Hibernate Dialect解决createSQLQuery时的decimal,long类型问题

org.hibernate.MappingException: No Dialect mapping for JDBC type: 3

首先建一个类,继承org.hibernate.dialect.DB2Dialect,该类的内容如下:

import java.sql.Types;

import org.hibernate.Hibernate;
import org.hibernate.dialect.DB2Dialect;

public class PmDb2Dialect extends DB2Dialect
{
public PmDb2Dialect()
{
     super();
     registerHibernateType(Types.DECIMAL, Hibernate.BIG_DECIMAL.getName());
}
}

第二步,就是修改hibernate的配置文件hibernate.cfg.xml:

将:

     <property name="hibernate.dialect">
      org.hibernate.dialect.DB2Dialect
     </property>

改为:

     <property name="hibernate.dialect">
      com.yonder.pm.common.PmDb2Dialect
     </property>

posted @ 2009-05-12 11:11 brock 阅读(1492) | 评论 (0)编辑 收藏

仅列出标题
共15页: First 上一页 3 4 5 6 7 8 9 10 11 下一页 Last