`
mowengaobo
  • 浏览: 165190 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

ibatis 动态语句拼写心得

阅读更多

ibatis 动态语句拼写心得

文章分类:Java编程

 项目中用到了ibatis。看了很多篇在XML 里动态编写sql 的文章!

 我突然有了疑问,在一个statement 中可以包含多个 dynamic 子标签么?

 于是 试验了一把,嘿嘿 果然能行~~

dynamic 标签的作用是  可以自动添加或者移除 在SQL语句中 多余的表单符号 不用再担心 少了逗号,and 连接符号之类的

 贴代码。。。(前提是你要理解dynamic 动态标签的基本作用)

 下面代码 是一段插入数据 片段  我所要说的是只要数据库字段没有强制的 “不许为空”的话 都可以这样写,这样加大了 灵活性,只要设置作为参数的对象 sheetState 的任何一个或者N个属性 都成。可以进行动态的插入 ,也不用再担心SQL 语句会因为少写插入字段出错的问题。

  当然如果表字段多的话 我还是不建议使用这样写~~  因为每个字段都要去写入判断标签内的,会很长很长。

  但虽然麻烦,但只要写完一个,以后的所有关于此表的添加 都可以这样通用了。

 

 

Xml代码
  1. < statement   id = "addSheetState"   parameterClass = "sheetState"   resultClass = "Integer" >   
  2.         INSERT INTO  
  3.         < dynamic   prepend = "EOMS_SHEETSTATE"   open = "("   close = ")" >   
  4.          < isNotEmpty   prepend = ","   property = "v_parachsheetid" >   
  5.             V_PARACHSHEETID  
  6.          </ isNotEmpty >   
  7.          < isNotEmpty   prepend = ","   property = "v_sheetno" >   
  8.             V_SHEETNO  
  9.          </ isNotEmpty >   
  10.          < isNotEmpty   prepend = ","   property = "v_sheetstatus" >   
  11.             V_SHEETSTATUS  
  12.          </ isNotEmpty >   
  13.          < isNotEmpty   prepend = ","   property = "dtm_statustime" >   
  14.             DTM_STATUSTIME  
  15.          </ isNotEmpty >   
  16.          < isNotEmpty   prepend = ","   property = "v_people" >   
  17.             V_PEOPLE  
  18.          </ isNotEmpty >   
  19.         < dynamic   open = "("   close = ")"   prepend = "VALUES" >   
  20.          < isNotEmpty   prepend = ","   property = "v_parachsheetid" >   
  21.             #v_parachsheetid#  
  22.          </ isNotEmpty >   
  23.          < isNotEmpty   prepend = ","   property = "v_sheetno" >   
  24.             #v_sheetno#  
  25.          </ isNotEmpty >   
  26.          < isNotEmpty   prepend = ","   property = "v_sheetstatus" >   
  27.             #v_sheetstatus#  
  28.          </ isNotEmpty >   
  29.          < isNotEmpty   prepend = ","   property = "dtm_statustime" >   
  30.             #dtm_statustime#  
  31.          </ isNotEmpty >   
  32.          < isNotEmpty   prepend = ","   property = "v_people" >   
  33.             #v_people#  
  34.          </ isNotEmpty >   
  35.                 </ dynamic >   
  36.     </ statement >   
<statement id="addSheetState" parameterClass="sheetState" resultClass="Integer">
		INSERT INTO
		<dynamic prepend="EOMS_SHEETSTATE" open="(" close=")">
		 <isNotEmpty prepend="," property="v_parachsheetid">
		 	V_PARACHSHEETID
		 </isNotEmpty>
		 <isNotEmpty prepend="," property="v_sheetno">
		 	V_SHEETNO
		 </isNotEmpty>
		 <isNotEmpty prepend="," property="v_sheetstatus">
		 	V_SHEETSTATUS
		 </isNotEmpty>
		 <isNotEmpty prepend="," property="dtm_statustime">
		 	DTM_STATUSTIME
		 </isNotEmpty>
		 <isNotEmpty prepend="," property="v_people">
		 	V_PEOPLE
		 </isNotEmpty>
		<dynamic open="(" close=")" prepend="VALUES">
		 <isNotEmpty prepend="," property="v_parachsheetid">
		 	#v_parachsheetid#
		 </isNotEmpty>
		 <isNotEmpty prepend="," property="v_sheetno">
		 	#v_sheetno#
		 </isNotEmpty>
		 <isNotEmpty prepend="," property="v_sheetstatus">
		 	#v_sheetstatus#
		 </isNotEmpty>
		 <isNotEmpty prepend="," property="dtm_statustime">
		 	#dtm_statustime#
		 </isNotEmpty>
		 <isNotEmpty prepend="," property="v_people">
		 	#v_people#
		 </isNotEmpty>
				</dynamic>
	</statement>

 

这是测试时调用的代码

 

Java代码
  1. Eoms_SheetState sheetstate= new  Eoms_SheetState();  
  2. sheetstate.setV_parachsheetid("testid" );  
  3. sheetstate.setDtm_statustime("2010-11-13 11:31:21" );            
  4. sheetstatedao.addSheetState(sheetstate);  
 Eoms_SheetState sheetstate=new Eoms_SheetState();
 sheetstate.setV_parachsheetid("testid");
 sheetstate.setDtm_statustime("2010-11-13 11:31:21");		  
 sheetstatedao.addSheetState(sheetstate);

 

 

 

 1.首先要先去下载你需要的DTD文件,只所以MyEclipse不会给出关于ibatis的提示,就是因为MyEclipse 本身没有此DTD文件!(要注意的是你下载的DTD文件要和你使用ibatis版本一致) 要不知道怎么下?最简单的办法就是下面例子中的那个以HTTP 开头的地址 就是了 。

2.你打开你的ibatis  XML文件 看到DTD的引入部分 最好复制下来 粘贴到TXT文本里 方便操作使用

 

   例如:

 

Xml代码
  1. <!DOCTYPE sqlMap        
  2.     PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"        
  3.     "http://ibatis.apache.org/dtd/sql-map-2.dtd">   
<!DOCTYPE sqlMap      
    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"      
    "http://ibatis.apache.org/dtd/sql-map-2.dtd">

 3. 具体操作 :

  打开MyEclipse(我的是6.5其他的应该差不多吧!)

  选择Window-Preferences-(在搜索框里输入XML 会出现 XML Catalog选项),选中XML Catalog后  点击右边 Add按钮 第一个Location 选项是你DTD文件的真实地址,你放到哪都无所谓,只要能找得到。

  第二个选项KeyType  不用管 应该是默认的 Public ID

  第三个就要填 上面例子中 PUBLIC  后 第一段用引号包含的部分了。

  也就是 -//ibatis.apache.org//DTD SQL Map 2.0//EN  这一部分。。

Html代码
  1. < html >     
  2. < head >     
  3. < title > 可输入字符进行下拉框筛选 </ title >     
  4. </ head >     
  5. < script >     
  6.     var presscount = 0 ;  
  7.     var pressvalue = "" ;  
  8.     var Select  = {    
  9.         showtext : function(obj,e){   
  10.             presscount++;  
  11.             var inputvalue = String .fromCharCode(e.charCode||e.which||e.keyCode);  
  12.             pressvalue pressvalue =pressvalue+inputvalue;  
  13.             e.returnValue = false ;  
  14.             var comboxitems = obj .options;  
  15.             for(var i = 0 ;i < comboxitems.length ;i++){  
  16.                 if(comboxitems[i].text.toUpperCase().indexOf(pressvalue.toUpperCase())==0){  
  17.                         comboxitems[i].selected = "selected" ;  
  18.                         break;  
  19.                 }  
  20.               }  
  21.         },  
  22.         clear : function(){  
  23.             alert("已清空!");  
  24.             presscount = 0 ;  
  25.             pressvalue = "" ;  
  26.         }  
  27.      }     
  28. </ script >     
  29. < body   >     
  30. < select   id = "select"    onkeypress = "Select.showtext(this,event);"   onchange = "Select.clear();" >      
  31.   < option   value = "" > </ option >      
  32.    < option   value = "CONVMAXULTXPWR" >   
  33.         CONVMAXULTXPWR  
  34.     </ option   
  35.     < option   value = "DLBETRAFFTHSONHSDPA" >   
  36.         DLBETRAFFTHSONHSDPA  
  37.     </ option >                                        
  38.     < option   value = "DLINTERFERERSV" >   
  39.         DLINTERFERERSV  
  40.     </ option >   
  41.     < option   value = "DLSTRTHSONHSDPA" >   
  42.         DLSTRTHSONHSDPA  
  43.     </ option >   
  44.     < option   value = "DWPCHPOWER" >   
  45.         DWPCHPOWER  
  46.     </ option >   
  47.     < option   value = "EVENT4ATHD" >   
  48.         EVENT4ATHD  
  49.     </ option >   
  50.     < option   value = "EVENT4BTHD" >   
  51.         EVENT4BTHD  
  52.     </ option >   
  53.     < option   value = "HSSCCHBLER" >   
  54.         HSSCCHBLER  
  55.     </ option >   
  56.     < option   value = "HSSICHACKNACKPO" >   
  57.         HSSICHACKNACKPO  
  58.     </ option >   
  59.     < option   value = "HSSICHSIRTARGET" >   
  60.         HSSICHSIRTARGET  
  61.     </ option >   
  62.     < option   value = "HSSICHTPCSTEPSIZE" >   
  63.         HSSICHTPCSTEPSIZE  
  64.     </ option >   
  65.     < option   value = "HYSTFOR3A" >   
  66.         HYSTFOR3A  
  67.     </ option >   
  68.     < option   value = "HYSTFORINTERCELL" >   
  69.         HYSTFORINTERCELL  
  70.     </ option >   
  71.     < option   value = "IDLESSEARCHRAT" >   
  72.         IDLESSEARCHRAT  
  73.     </ option >   
  74.     < option   value = "INITSIRTARGET" >   
  75.         INITSIRTARGET  
  76.     </ option >   
  77.     < option   value = "MAXALLOWEDULTXPOWER" >   
  78.         MAXALLOWEDULTXPOWER  
  79.     </ option >   
  80.     < option   value = "MAXDLTXPWR" >   
  81.         MAXDLTXPWR  
  82.     </ option >   
  83.     < option   value = "MAXFACHPOWER" >   
  84.         MAXFACHPOWER  
  85.     </ option >   
  86.     < option   value = "MAXFPACHPOWER" >   
  87.         MAXFPACHPOWER  
  88.     </ option >   
  89.     < option   value = "MAXHSSICHPRXPWR" >   
  90.         MAXHSSICHPRXPWR  
  91.     </ option >   
  92.     < option   value = "MAXSIRTARGET" >   
  93.         MAXSIRTARGET  
  94.     </ option >   
  95.     < option   value = "MAXTXPOWER" >   
  96.         MAXTXPOWER  
  97.     </ option >   
  98.     < option   value = "MINDLTXPWR" >   
  99.         MINDLTXPWR  
  100.     </ option >   
  101.     < option   value = "MINHSSICHPRXPWR" >   
  102.         MINHSSICHPRXPWR  
  103.     </ option >   
  104.     < option   value = "MINSIRTARGET" >   
  105.         MINSIRTARGET  
  106.     </ option >   
  107.     < option   value = "N300" >   
  108.         N300  
  109.     </ option >   
  110.     < option   value = "N302" >   
  111.         N302  
  112.     </ option >   
  113.     < option   value = "N304" >   
  114.         N304  
  115.     </ option >   
  116.     < option   value = "N308" >   
  117.         N308  
  118.     </ option >   
  119.     < option   value = "N312" >   
  120.         N312  
  121.     </ option >   
  122.     < option   value = "N313" >   
  123.         N313  
  124.     </ option >   
  125.     < option   value = "N315" >   
  126.         N315  
  127.     </ option >      
  128. </ select >      
  129. </ body >     
  130. </ html >   
<html>  
<head>  
<title>可输入字符进行下拉框筛选</title>  
</head>  
<script>  
	var presscount=0;
	var pressvalue="";
    var Select = {  
		showtext : function(obj,e){ 
			presscount++;
			var inputvalue=String.fromCharCode(e.charCode||e.which||e.keyCode);
			pressvalue=pressvalue+inputvalue;
			e.returnValue=false;
			var comboxitems=obj.options;
			for(var i=0;i<comboxitems.length;i++){
				if(comboxitems[i].text.toUpperCase().indexOf(pressvalue.toUpperCase())==0){
						comboxitems[i].selected="selected";
						break;
				}
			  }
		},
		clear : function(){
			alert("已清空!");
			presscount=0;
			pressvalue="";
		}
     }   
</script>  
<body >  
<select id="select"  onkeypress="Select.showtext(this,event);" onchange="Select.clear();">   
  <option value=""></option>   
   <option value="CONVMAXULTXPWR">
		CONVMAXULTXPWR
	</option
	<option value="DLBETRAFFTHSONHSDPA">
		DLBETRAFFTHSONHSDPA
	</option>										
	<option value="DLINTERFERERSV">
		DLINTERFERERSV
	</option>
	<option value="DLSTRTHSONHSDPA">
		DLSTRTHSONHSDPA
	</option>
	<option value="DWPCHPOWER">
		DWPCHPOWER
	</option>
	<option value="EVENT4ATHD">
		EVENT4ATHD
	</option>
	<option value="EVENT4BTHD">
		EVENT4BTHD
	</option>
	<option value="HSSCCHBLER">
		HSSCCHBLER
	</option>
	<option value="HSSICHACKNACKPO">
		HSSICHACKNACKPO
	</option>
	<option value="HSSICHSIRTARGET">
		HSSICHSIRTARGET
	</option>
	<option value="HSSICHTPCSTEPSIZE">
		HSSICHTPCSTEPSIZE
	</option>
	<option value="HYSTFOR3A">
		HYSTFOR3A
	</option>
	<option value="HYSTFORINTERCELL">
		HYSTFORINTERCELL
	</option>
	<option value="IDLESSEARCHRAT">
		IDLESSEARCHRAT
	</option>
	<option value="INITSIRTARGET">
		INITSIRTARGET
	</option>
	<option value="MAXALLOWEDULTXPOWER">
		MAXALLOWEDULTXPOWER
	</option>
	<option value="MAXDLTXPWR">
		MAXDLTXPWR
	</option>
	<option value="MAXFACHPOWER">
		MAXFACHPOWER
	</option>
	<option value="MAXFPACHPOWER">
		MAXFPACHPOWER
	</option>
	<option value="MAXHSSICHPRXPWR">
		MAXHSSICHPRXPWR
	</option>
	<option value="MAXSIRTARGET">
		MAXSIRTARGET
	</option>
	<option value="MAXTXPOWER">
		MAXTXPOWER
	</option>
	<option value="MINDLTXPWR">
		MINDLTXPWR
	</option>
	<option value="MINHSSICHPRXPWR">
		MINHSSICHPRXPWR
	</option>
	<option value="MINSIRTARGET">
		MINSIRTARGET
	</option>
	<option value="N300">
		N300
	</option>
	<option value="N302">
		N302
	</option>
	<option value="N304">
		N304
	</option>
	<option value="N308">
		N308
	</option>
	<option value="N312">
		N312
	</option>
	<option value="N313">
		N313
	</option>
	<option value="N315">
		N315
	</option>   
</select>   
</body>  
</html>

 

   在javaeye上的收获可真不小啊,呵呵!

 

   看了过来人的文章,感觉很好,我也顺便写到这里,方便以后用到的来看!

 

   ibatis sql语句中  如果遇到  <,>,&,这三类符号的 ,必须要用CDATA 符号,因为在DTD规定中,那三个字符时有特殊含义的!

     貌似项目用的是EXT3.2.1
    

   

    当我查询出来数据 要动态更新时,此列是combox,可是我之前在renderer中  只单单使用了  load 和 return value,

初始化查询出来值是  汉字,   当我点击汉字要编辑时,会出来下拉框,但当我选择后失去焦点离开后,那值就会变成数字,我一直很迷茫,结果一个玩EXT 很转的同事 帮我解决了~~哎~~ 他说是老外的编码习惯,本身人家是没有汉字的。

 

   下面是解决代码  重点在  renderer中~    

Java代码
  1. {  
  2.                         header : "县市" ,  
  3.                         width : 100 ,  
  4.                         sortable : false ,  
  5.                         dataIndex : 'v_country_name' ,  
  6.                         renderer : function(value, metedata, record,columnIndex, rowIndex, store) {  
  7.                             var combo = Ext.getCmp("combo_country" );  
  8.                             combo.getStore().load({params : {i_subcomp_id:Ext.getCmp('company_id' ).getValue()}});  
  9.                             if (combo.getStore().getCount()> 0 ){  
  10.                                 for (var i =  0 ; i < combo.getStore().getCount();i++){  
  11.                                     if (combo.getStore().getAt(i).get( 'i_country_id' )==value) {  
  12.                                         value = combo.getStore().getAt(i).get('v_country_name' );   
  13.                                     }  
  14.                                 }  
  15.                             }  
  16.                             return  value;  
  17.                         },  
  18.                         editor : new  fm.ComboBox({  
  19.                                     editable : false ,  
  20.                                     id : 'combo_country' ,  
  21.                                     triggerAction : 'all' ,  
  22.                                     mode : 'local' ,  
  23.                                     store : new  Edata.JsonStore({  
  24.                                         root : 'country_lst' ,  
  25.                                         proxy : new  Edata.HttpProxy({  
  26.                                             url : contextPath + 'prodata/findCountry.action'   
  27.                                         }),  
  28.                                         fields : ['i_country_id' 'v_country_name' ]  
  29.                                     }),  
  30.                                     displayField : 'v_country_name' ,  
  31.                                     valueField : 'i_country_id'   
  32.                                 })  
  33.                     }  
{
						header : "县市",
						width : 100,
						sortable : false,
						dataIndex : 'v_country_name',
						renderer : function(value, metedata, record,columnIndex, rowIndex, store) {
							var combo = Ext.getCmp("combo_country");
							combo.getStore().load({params : {i_subcomp_id:Ext.getCmp('company_id').getValue()}});
							if(combo.getStore().getCount()>0){
								for(var i = 0; i < combo.getStore().getCount();i++){
									if(combo.getStore().getAt(i).get('i_country_id')==value) {
										value = combo.getStore().getAt(i).get('v_country_name'); 
									}
								}
							}
							return value;
						},
						editor : new fm.ComboBox({
									editable : false,
									id : 'combo_country',
									triggerAction : 'all',
									mode : 'local',
									store : new Edata.JsonStore({
										root : 'country_lst',
										proxy : new Edata.HttpProxy({
											url : contextPath + 'prodata/findCountry.action'
										}),
										fields : ['i_country_id', 'v_country_name']
									}),
									displayField : 'v_country_name',
									valueField : 'i_country_id'
								})
					}

 

2010 - 05 - 05

weblogic10 配置 domian

文章分类:Java编程
安装 WebLogic 比较容易,在这里就不再累述了,大家可以参阅相关文档。现在着重讲一下 WebLogic 的配置,因为后面在配置 MyEclipse 时将用到这里的配置信息。

①运行开始 -> 程序 -> BEA Products -> Tools -> Configuration Wizard。
②选择 Create a new WebLogic domain,Next。
③在 Select Domain Source 界面保持默认,Next。
④在 User name 处输入 user,两个 password 都输入 12345678(密码要求 8 位),Next。
⑤ 在 Configure Server Start Mode and JDK 界面中保持默认,即 JDK 选择的是“Sun SDK 1.5.0_04 @ C:\BEA\jdk150_04”,注意这里若选择“Other JDK”配置比 SDK 1.5.0_04 更高的版本,服务器启动时将会出现异常,所以最好保持默认,然后 Next。
⑥在 Customize Environment and Services Settings 界面中默认为 No,Next。
⑦在 Domain name 处输入 mydomain,点击 Create。
⑧完成后点击 Done 关闭 Configuration Wizard 对话框。
⑨ 运行开始 -> 程序 -> BEA Products -> User Projects -> mydomain -> Start Admin Server for Weblogic Server Domain,检查服务器是否启动成功。


--------------------关于服务器的配置----------------------
启 动 Eclipse,选择“Window -> Preferences”菜单,打开首选项对话框。展开 MyEclipse 下的 Application Servers 节点,点击 WebLogic 9,选中右边的 Enable 单选按钮,启用 WebLogic 服务器。配置如下:
①BEA home directory:C:\BEA(假定 WebLogic 安装在 C:\BEA 目录中)
②WebLogic installation directory:C:\BEA\WebLogic92
③Admin username:user(来自 WebLogic 中的配置)
④Admin password:12345678(来自 WebLogic 中的配置)
⑤Execution domain root:C:\BEA\user_projects\domains\mydomain
⑥Execution server name:AdminServer
⑦Security policy file:C:\BEA\WebLogic92\server\lib\weblogic.policy
⑧JAAS login configuration file:(Null)

接 着展开 WebLogic 9 节点,点击 JDK,在右边的 WLS JDK name 处选择 WebLogic 9 的默认 JDK。这里组合框中缺省为单独安装的 JRE。单击 Add 按钮,弹出 WebLogic -> Add JVM 对话框,在 JRE 主目录处选择 WebLogic 安装文件夹中的 JDK 文件夹,我的版本为 C:\BEA\jdk150_04,程序会自动填充其他选项。单击确定按钮关闭对话框。这时候就可以在 WLS JDK name 组合框中选择 jdk150_04 了。

至 此,MyEclipse 中 WebLogic 9 的配置工作就算完成了。下面可以看看在 Eclipse 中能否启动 WebLogic 服务器了?安装了 MyEclipse 之后,Eclipse 工具栏中就会有一个“Run/Stop/Restart MyEclipse Application Servers”下拉按钮。点击该按钮的下拉部分,选择“WebLogic 9 -> Start”菜单,即开始启动 WebLogic 了。通过查看控制台的消息,就可以检查启动是否成功,或发生什么异常。

补充配置

点击 Paths,在右边的 Prepend to classpath 列表框中,通过 Add JAR/ZIP 按钮,加入:
C:\BEA\WebLogic81\server\lib\weblogic.jar
C:\BEA\WebLogic81\server\lib\webservices.jar
如果要用到数据库,还需要把数据库的驱动类库添加进来,这里我们用 WebLogic 自带的 SQL Server 数据库驱动类库:
C:\BEA\WebLogic81\server\lib\mssqlserver4v65.jar

对常见启动问题

出现 The WebLogic Server did not start up properly. 提示和 java.io.InvalidClassException 异 常的问题,通常是因为 JDK 选择不当引起的,在 MyEclipse 的配置中选择的 JDK 应该必须与配置 WebLogic 时选择的 JDK 相同。当选择默认 JDK 时,也可以在 MyEclipse 中配置 BEA 的 jrockit90_150_04 这个 JDK。

在这里我直接返回的是Properties对象
这样更灵活 可以在外部调用的时候想哪到Properties文件里的哪个属性都行,当然必须要是Properties里存在的。。。


Java代码
  1.     /**  
  2.      * 读取properties文件   
  3.      * @param propertiesname  
  4.      * @return  
  5.      */   
  6.     public   static  Properties getProperties(String propertiesname) {  
  7.         Map map=new  HashMap();  
  8.         Properties prop=null ;  
  9.         try  {  
  10.             InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(propertiesname);  
  11.             prop = new  Properties();  
  12.             prop.load(in);  
  13.             in.close();  
  14.         } catch  (Exception ex) {  
  15.             ex.printStackTrace();  
  16.         }  
  17.         return  prop;  
  18.     }  
  19.   
  20.   
  21. public   static   void  main(String args[]) {  
  22.           
  23.         Map map=null ;  
  24.         Properties prop=Htools.getProperties("imageurl.properties" );  
  25.         String url=prop.getProperty("imgurl" ).toString();  
  26.         String aa=prop.getProperty("country" ).toString();  
  27.                   //这里是为了解决读取中文的问题   
  28.         try  {  
  29.             aa=new  String(aa.getBytes( "ISO8859_1" ),    "GBK" );  
  30.         } catch  (UnsupportedEncodingException e) {  
  31.             // TODO Auto-generated catch block   
  32.             e.printStackTrace();  
  33.         }   
  34.         System.out.println(url+"-----" +aa);  
  35.           
  36.     }  
   /**
	 * 读取properties文件 
	 * @param propertiesname
	 * @return
	 */
	public static Properties getProperties(String propertiesname) {
		Map map=new HashMap();
		Properties prop=null;
		try {
			InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(propertiesname);
			prop = new Properties();
			prop.load(in);
			in.close();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return prop;
	}


public static void main(String args[]) {
		
		Map map=null;
		Properties prop=Htools.getProperties("imageurl.properties");
		String url=prop.getProperty("imgurl").toString();
		String aa=prop.getProperty("country").toString();
                  //这里是为了解决读取中文的问题
		try {
			aa=new String(aa.getBytes("ISO8859_1"),   "GBK");
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		System.out.println(url+"-----"+aa);
		
	}
    因为项目中遇到处理图片存放的问题,用此方法来解决很实用!我也是给自己保存下,网上很多的,网上得很多人说weblogic8跟weblogic9.X 的weblogic.xml配置不一样,9.x版本要在XMl里的virtual-directory-mapping元素 前面加入 wls:  我用weblogic9.2可加入后会提示错误,不可用!我也就索然没有去研究为什么不能用!如下面代码就会报错!
Java代码
  1. <wls:virtual-directory-mapping>     
  2.           <local-path>E:/upload</local-path>     
  3.           <url-pattern>/*</url-pattern>     
  4. </wls:virtual-directory-mapping>   
<wls:virtual-directory-mapping>   
          <local-path>E:/upload</local-path>   
          <url-pattern>/*</url-pattern>   
</wls:virtual-directory-mapping> 


但去掉wls就OK!

OK!上面的说过了 那么就开始配置虚拟路径了
1.在自己工程/WEB-ROOT/WEB-INF/能找到自己需要的Weblogic.xml
2.在XML里写入下面这段代码即 配置成功!
例如:你想访问E:/upload/1/1025/1025_2009_1.jpg  只要输入contextPath/1/1025/1025_2009_1.jpg

contextPath可以通过 request.getContextPath()得到


Java代码
  1. //这是正确的   
  2. <virtual-directory-mapping>     
  3.           <local-path>E:/upload</local-path>     
  4.           <url-pattern>/*</url-pattern>     
  5. </virtual-directory-mapping>   
//这是正确的
<virtual-directory-mapping>   
          <local-path>E:/upload</local-path>   
          <url-pattern>/*</url-pattern>   
</virtual-directory-mapping> 

不废话,直接上代码

给自己做记录

Java代码
  1. import  org.springframework.jd
分享到:
评论

相关推荐

    动态ibatis查询语句配置

    首先,我们需要理解Ibatis动态SQL的基本概念。在Ibatis的XML映射文件中,我们可以通过条件标签来构建动态SQL。这些标签包括`&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `&lt;otherwise&gt;`, `&lt;where&gt;`, `&lt;set&gt;`, `&lt;foreach&gt;`等。它们...

    iBatis的动态SQL语句

    ### iBatis中的动态SQL语句详解 #### 引言 在进行数据库操作时,我们经常需要根据不同的条件构建不同的SQL语句。这种需求在实际开发中极为常见,尤其是在处理复杂的查询逻辑时。iBatis(现在通常被称为MyBatis)...

    IBATIS动态查询语句.doc

    本文将深入探讨IBATIS动态查询语句的运用,解析其背后的逻辑与机制,以及如何利用这些特性来增强查询的灵活性与安全性。 ### IBATIS动态查询基础 IBATIS,现在更广为人知的名字为MyBatis,是一种半自动映射的持久...

    ibatis动态SQL标签用法

    iBatis动态SQL标签用法 iBatis是Java持久层框架,提供了动态SQL标签来实现动态查询。动态SQL标签可以根据不同的条件生成不同的SQL语句,从而提高查询效率和灵活性。 动态SQL片段 iBatis提供了动态SQL片段的功能,...

    ibatis常用sql语句

    标题与描述概述的知识点主要集中在iBATIS框架的SQL映射技术上,特别是针对不同类型的输入参数如何在iBATIS中构建SQL语句。以下是对这些知识点的详细展开: ### iBATIS SQL映射技术概览 iBATIS是早期流行的Java持久...

    ibatis16个常用sql语句

    iBatis 16个常用SQL语句 iBatis是一个基于Java的持久层框架,提供了一个简洁的方式来访问和操作数据库。在iBatis中,SQL语句是通过XML文件来配置的。下面是16个常用的iBatis SQL语句,涵盖了基本的CRUD(Create、...

    ibatis sql 语句的编写

    ibatis还支持动态SQL,允许根据不同的条件生成不同的SQL语句,这对于复杂的查询非常有用。 ##### 4.1 `if`标签 ```xml SELECT * FROM USERS != null"&gt; AND name = #{name} ``` 这里使用`&lt;if&gt;`标签来...

    Ibatis常用sql语句

    根据给定的文件信息,以下是对“Ibatis常用SQL语句”的详细解析,涵盖了一系列Ibatis在数据操作中的应用实例。 ### Ibatis简介 Ibatis是一个支持普通SQL查询、存储过程以及高级映射的优秀持久层框架。Ibatis可以让...

    ibatis中使用安全的拼接语句,动态查询,大于、小于、等于.doc

    iBatis 中使用安全的拼接语句、动态查询、大于、小于、等于 iBatis 是一个流行的持久层框架,提供了许多强大的功能来帮助开发者构建高效、安全的数据库交互应用程序。本文将详细介绍 iBatis 中使用安全的拼接语句、...

    ibatis UPDATE 动态XML与insert

    标题 "ibatis UPDATE 动态XML与insert" 涉及到的是MyBatis框架中对数据库数据进行更新(UPDATE)和插入(INSERT)操作的动态XML配置方式。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,...

    ibatis_动态查询条件

    iBatis 是一个基于 Java 的持久层框架,它提供了动态查询条件的功能,可以根据不同的条件生成不同的 SQL 语句。在 iBatis 中,动态查询条件是通过 `&lt;dynamic&gt;` 元素来实现的,该元素可以根据参数的值来生成不同的 ...

    Ibatis查询语句里,可以使用多表查询

    iBatis 的核心功能包括 SQL 映射、动态 SQL 生成等,它通过配置文件或者注解的形式来实现 SQL 语句与 Java 代码之间的映射关系。 #### 二、多表查询概述 在实际应用中,经常需要从多个表中获取数据,这被称为多表...

    ibatis sql语句对条件中特殊字符% # 处理

    在ibatis框架中,开发者经常需要根据用户的输入来动态构建SQL查询语句。例如,在实现模糊查询功能时,用户的搜索关键词可能包含SQL中的特殊字符,比如`%`、`_`等。如果不做任何处理,这些特殊字符将会被SQL引擎视为...

    在ibatis日志信息中打印SQL语句的方法(个人总结)

    在使用iBatis(现为MyBatis)作为持久层框架进行开发时,有时我们需要调试SQL语句,以便查看执行的SQL、优化性能或者解决查询问题。本文将详细讲解如何在iBatis日志信息中打印SQL语句,以便更好地理解和优化数据库...

    ibatis查询语句配对.doc

    ### ibatis查询语句配对知识点详解 #### 一、ibatis简介 ibatis(现称为MyBatis)是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。ibatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。...

    Ibatis复杂查询语句.doc

    总结起来,这个Ibatis查询语句充分展示了Ibatis处理复杂查询的能力,包括动态SQL、子查询、多表联接、条件判断、数据类型映射和迭代处理等功能。在实际开发中,这种灵活性使得Ibatis能够适应各种复杂的业务场景,...

    ibatis动态多条件组合查询

    ibatis动态多条件组合查询 实例 说明

    iBATIS动态标签

    iBATIS动态标签是SQL映射文件中的一种功能强大的特性,它允许在SQL语句中进行条件判断,根据传入的参数动态生成合适的查询条件。动态标签主要用于提高灵活性,使得SQL映射文件能够适应多种查询场景,而无需为每种...

    ibatis出错调试心得

    - **动态SQL元素**:iBatis支持使用动态SQL来构建复杂的查询条件。例如,可以使用`&lt;isNotEmpty&gt;`元素来根据条件添加`ORDER BY`子句。 ```xml ORDER BY #orderField# ``` - **自定义SQL片段**:通过`...

Global site tag (gtag.js) - Google Analytics