Tag: ibatis

iBatis创建一个包含多个注释的数组(注释重用)

我的问候! 我是iBatis新手,我遇到过这样的优化问题:我有两个绝对相同的@Results ,只有一个参数不同。 有没有什么办法可以创建某种注释数组来重用它来进行映射? 源代码如下: public static interface StoreMapper { @Select(“SELECT * FROM STORE WHERE STORE_NUMBER = #{storeNumber}”) @Results(value = { @Result(property=”storeNumber”, column=”STORE_NUMBER”), @Result(property=”districtId”, column=”DISTRICT_ID”), @Result(property=”managerName”, column=”MANAGER_NAME”)}) Store findByStoreNumber (Integer storeNumber) throws FacadeException; @Select(“SELECT * FROM STORE WHERE STATE = #{state}”) @Results(value = { @Result(property=”storeNumber”, column=”STORE_NUMBER”), @Result(property=”districtId”, column=”DISTRICT_ID”), @Result(property=”managerName”, column=”MANAGER_NAME”)}) List findByState (String state) throws […]

使用IBATIS进行INSERTS的最快方法

我需要使用iBatis在单个表(SQL Server 2005)中插入20,000行。 最快的方法是什么? 我已经在使用批处理模式,但它没有多大帮助: try { sqlMap.startTransaction(); sqlMap.startBatch(); // … execute statements in between sqlMap.commitTransaction(); } finally { sqlMap.endTransaction(); }

Mybatis XML与注释

我已经阅读了有关Mybatis的书和文档,XML和Annotation都做了我想要的,但是从myBatis官方网站,他们声称XML是一种更好的做Mappers的方法,因为Java注释有局限性。 我个人更喜欢注释,例如 public interface PersonDAO { String INSERT_PERSON = “insert into person (title,firstName,surName,jobTitle,dob,email,mobile,landPhone,fax,twitter,facebook,linkedin) VALUES (#{title},#{firstName},#{surName},#{jobTitle},#{dob},#{email},#{mobile},#{landPhone},#{fax},#{twitter},#{facebook},#{linkedin})”; String UPDATE_PERSON = “update person set title=#{title},firstName=#{firstName},surName=#{surName},jobTitle=#{jobTitle},dob=#{dob},email=#{email},mobile=#{mobile},landPhone=#{landPhone},fax=#{fax},twitter=#{twitter},facebook=#{facebook},linkedin=#{linkedin} where id=#{id}”; String GET_PERSON_BY_ID = “SELECT * FROM vw_person WHERE id = #{personId}”; String DELETE_PERSON = “DELETE FROM person WHERE id = #{personId}”; @Select(GET_PERSON_BY_ID) public PersonVO doSelectPerson(long personId) throws Exception; @Update(UPDATE_PERSON)@Options(flushCache = true, […]

使用mybatis“MapperRegistry不知道类型接口”exception

我正在使用注释设置mybatis,并获得这个有用的例外 org.apache.ibatis.binding.BindingException:MapperRegistry不知道类型接口org.foo.Bar 谷歌搜索没有找到任何东西,也没有找到用户指南。 我错过了什么?

iBatis,spring,如何记录执行的sql?

我正在使用带弹簧框架的iBatis。 我想记录iBatis在我说的时候执行的sql Employee e = (Employee) getSqlMapClientTemplate().queryForObject(“emp_sql”, emp); 上面的代码行将在我拥有的ibatis sql文件中查找“emp_sql”id。 然后运行与“emp_sql”对应的查询。 我想记录这个查询。 我有以下log4j xml属性文件。 我仍然无法获得ibatis执行的sql。 配置有问题吗? 我应该说 我是否必须使用p6spy或其他东西? 或者我可以在log4j配置中做些什么来获取iBatis sql日志?

mybatis:使用带有XML配置的mapper接口来获取全局参数

我喜欢XML表示法来指定连接字符串等全局参数。 我也喜欢Mapper注释。 当我尝试将两者结合起来时,我得到了这个例外 。 有没有办法将两者结合起来? 我想使用XML文件进行全局配置,但mybatis会考虑使用Mapper接口。 问题是SqlSessionFactoryBuilder()。build()需要一个Reader(我想用它来传递XML配置),或者一个Configuration对象(我​​看到它有addMappers()方法可以帮助我) – 但我不明白如何将两者结合起来。

Oracle – 连接池与spring框架

我们正在尝试在Spring Framework的帮助下实现Oracle连接池。 我们正在使用DBCP连接池方法。 然而,DBCP和spring之间的集成并没有那么好。 我们面临的问题是DBCP返回PoolableConnections对象,而Oracle期望OracleConnection对象。 (引发ClassCastException) 似乎这个问题已在Oracle 11g中处理。 但是我很好奇其他人如何使用Spring 10 for Oracle 10g(使用TOMCAT)实现Oracle连接池。 我们使用Ibatis作为ORM框架。 我相信有办法。 任何帮助表示赞赏。

如何使用iBatis将数组写入Oracle 10g XE数据库?

我已经找到了这个高低的答案,但无法得到答案。 基本上我有一个使用iBatis写入数据库的对象。 这适用于原始类型,如字符串,int等,但我的对象的一个​​属性是其他对象的数组。 我希望能够持久保存,然后调用’selectById’语句并检索包括数组在内的完整对象。 这是我到目前为止的代码: Mapper.xml insert into TESTTABLE ( ORDERID, MAXPX, COMMISSION, ACCOUNTGRP ) values ( #orderID#, #maxPx#, #commission#, #accountGrp# ) accountGrp是我的数组,但它当前抛出错误。 没有这个字段,该声明工作正常。 java就像这样: public static void insertTrade (Trade obj) throws SQLException { logger.debug(“inserting trade. Order Id: ” + obj.toString()); sqlMapper.insert(“insertTrade”, obj); } 在此先感谢您的帮助!!

从单个ibatis查询返回多个类型

我有一个搜索表单,需要包含两个不同表格的结果。 这些表彼此没有关系,我们是分开的。 在我的示例场景中,我们有加油站和杂货店。 杂货店表可能具有freezerSize,produceStorage,numberOfCarts等属性。 加油站表可能有gasTankSizeInGallons,windowCleanerInGallons等….两个表之间有一些共享字段(即 – numberOfEmployees,squareFeetOfStoreSpace,numberOfShelves等…)。 我的搜索查询需要一起排序和显示加油站和杂货店。 我正在考虑使用SQL联合并将不适用的字段设置为0或null。 但是,我真的很难知道如何使用ibatis(因为两个对象的类型不同): SELECT storeName, storeCity, storeState, numberOfCarts, freezerSize, 0 gasTankSizeInGallons, 0 windowCleanerInGallons FROM grocery_stores UNION SELECT storeName, storeCity, storeState, 0 numberOfCarts, 0 freezerSize, gasTankSizeInGallons, windowCleanerInGallons FROM gas_stations ORDER BY storeState, storeCity, storeName 注意 – 实际查询在顺序中有更多的东西,它是分页的,并且select中有更多的字段(加上select字段中每个适用字段的where子句)。 上述查询的resultClass应该是什么? 我有一个GroceryStore和GasStation类,它们都来自Store。 但是,Store没有很多GroceryStore和GasStation特定字段。 我可以做两个单独的查询,但结果的排序必须在java中完成,并且它将是低效的,因为它需要首先加载大量数据。 谢谢

使用ibatis检索新插入的ID时的并发问题

我正在使用iBatis / Java和Postgres 8.3。 当我在ibatis中插入时,我需要返回id。 我使用下表来描述我的问题: CREATE TABLE sometable ( id serial NOT NULL, somefield VARCHAR(10) ); 序列sometable_id_seq通过运行create语句自动生成。 目前我使用以下sql map: INSERT INTO sometable ( somefield ) VALUES ( #value# ); SELECT last_value AS id FROM sometable_id_seq 看来这是检索新插入的id的ibatis方式。 Ibatis首先运行INSERT语句,然后询问序列的最后一个id。 我怀疑这将适用于许多并发插入。 这会引起问题吗? 喜欢返回错误插入的id? (另请参阅我的相关问题,了解如何让ibatis使用INSERT .. RETURING ..语句 )