浏览 4559 次
锁定老帖子 主题:有熟悉ibatis的请进
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2006-12-08
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap namespace="MangeRight"> <typeAlias alias="manageright" type="com.newyl.model.businessobject.ManageRight" /> <resultMap id="manageRightResult" class="manageright"> <result property="recordId" column="record_id" /> <result property="userName" column="user_name" jdbcType="VARCHAR" /> <result property="password" column="user_password" /> <result property="userRight" column="user_right" jdbcType="VARCHAR" /> <result property="department" column="department"/> <result property="roleId" column="role_id" jdbcType="VARCHAR" /> <result property="loginName" column="login_name" jdbcType="VARCHAR" /> </resultMap> <select id="getUserByName" parameterClass="manageright" resultMap="manageRightResult"> select record_id , user_name , user_password , user_right, department , role_id , login_name from tf_manager_right where user_name = #userName#; </select> <select id="getUserByLoginName" resultMap="manageRightResult"> select record_id , user_name , user_password , user_right, department , role_id , login_name from tf_manager_right </select> </sqlMap> 以下是测试方法: public void getDatas() { com.ibatis.sqlmap.client.SqlMapClient sqlMap = null; try { java.io.Reader reader = Resources. getResourceAsReader("SqlMapConfig.xml"); sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader); List list = sqlMap.queryForList("getUserByLoginName",null); System.out.println("list.length" + list.size()); ManageRight user = new ManageRight(); user.setUserName("hjk"); user = (ManageRight)sqlMap.queryForObject("getUserByName", user); if(user!=null) { System.out.println(user.getDepartment()); } } catch (Exception e) { e.printStackTrace(); }finally{ try{ sqlMap.endTransaction(); }catch(Exception ex){ } } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-12-08
List list = sqlMap.queryForList("getUserByLoginName",null);
这个可以得到记录数, 说明数据库连接没有问题。。 但 user = (ManageRight)sqlMap.queryForObject("getUserByName", user); 这个就怎么都有问题, 不过我是改成传类还是传String进去, 都会得到如下错误: com.ibatis.common.jdbc.exception.NestedSQLException: --- The error occurred in manageRight.xml. --- The error occurred while applying a parameter map. --- Check the getUserByName-InlineParameterMap. --- Check the statement (query failed). --- Cause: java.sql.SQLException: ORA-00911: invalid character Caused by: java.sql.SQLException: ORA-00911: invalid character at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:185) at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForObject(GeneralStatement.java:104) at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:561) at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:536) at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSessionImpl.java:93) at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientImpl.java:70) at com.newyl.view.GetData.getDatas(GetData.java:35) at com.newyl.view.GetData.main(GetData.java:52) 等等 以下是我的JavaBean: public class ManageRight implements Serializable { private int recordId; private String userName; private String password; private String userRight; private String department; private String roleId; private String loginName; set..... get..... } 有哪位知道请告知。 郁闷啊 |
|
返回顶楼 | |
发表时间:2006-12-08
去掉#userName#后边的";"试试
|
|
返回顶楼 | |
发表时间:2006-12-08
Caused by: java.sql.SQLException: ORA-00911: invalid character
非法字符! |
|
返回顶楼 | |
发表时间:2006-12-08
谢谢楼上, 去掉;是可以了。。
但是有个疑问就是。 <update id="updateProvider" parameterClass="Provider"> <![CDATA[ update provider SET providerNO = #providerNO#, providerName = #providerName#, providerShortName = #providerShortName#, approveDocID = #approveDocID#, reqPerson = #reqPerson#, reqDate = #reqDate#, reqCompany = #reqCompany#, where providerNO = #providerNO#; ]]> </update> 我朋友他们公司做的开发也加了“;”, 为什么他们的可以呢??? 我也试了将sql语句包含在<![CDATA[里, 再加上";"也还是不行。。 很奇怪喔。。 |
|
返回顶楼 | |
发表时间:2006-12-08
这可能跟具体的DBMS的JDBC驱动实现有关吧,没太注意过,他们用的也是Oracle么?
|
|
返回顶楼 | |
发表时间:2006-12-08
他们用的DB2, 我们用的ORACLE
但是我们在pl/sql里执行SQL语句时加上";"也不会出错啊。 |
|
返回顶楼 | |
发表时间:2006-12-08
; 只有在command模式下才会有作用 其他模式下都是无意义的
至于说报不报错 估计和驱动有关吧 不太清楚 |
|
返回顶楼 | |
发表时间:2006-12-15
直接写jdbc代码有;号也会出错
数据库也是oracle,jdbc driver为oracle官方下载的 |
|
返回顶楼 | |