Tag: mybatis

带有IN条件的MyBatis问题<带有List的Map中的foreach

我必须使用MyBatis构建IN条件,其中必须传递基于下面的foreach循环获得的PARENT_VALUES列表…. 我试过但无法解决这个问题。 我不确定 通过的值是: Map input = new HashMap(); input.put(“somedata”); List inConditionList = new ArrayList(); inConditionList.add(“P1”); inConditionList.add(“P2”); input.put(inConditionList); sqlSessionTemplate.selectList(“getNameAgeDetails”, input); 必需的SQL: SELECT P.NAME, P.AGE FROM PERSON_DETAILS P WHERE SOMECOLUMN is NULL AND DATA IN (SELECT DATA FROM PARENT_TABLE WHERE PARENT_VALUE IN (“P1, “P2”)) ORDER BY P.NAME FETCH FIRST 10 ROW ONLY MyBatis Mapper SQL: <![CDATA[ […]

基于XML +注释的MyBatis配置

是否可以在应用程序中同时使用基于XML + Annotation的MyBatis配置。 我问这个的原因是因为,在我的应用程序中,我使用的是基于注释的方法。 但是在其中一个场景中,我需要使用一个IN子句,它可以使用 基于XML的配置。 但是,当我启动我的应用程序时,它似乎无法识别我的基于注释的映射器并且给我一个Type interface is not known to the MapperRegistryexceptionType interface is not known to the MapperRegistry 因此,我想知道是否可以在应用程序中同时使用基于XML + Annotation的MyBatis配置。 请建议。

MyBatis – 不调用ResultHandler

我按照这个示例: https : //code.google.com/p/mybatis/wiki/ResultHandlerExample这是我的界面: public interface CountryDirRdbMapper { public static class CountryDirBaseItemWithText { public CountryDirBaseItem baseItem; } public List select(ResultHandler handler); } 这是我的xml映射器 这段代码形成了我的DAO: SqlSession session = MyBatisConnectionFactory.getSqlSessionFactory().openSession(true); List list; try{ CountryDirRdbMapper mapper = session.getMapper(CountryDirRdbMapper.class); class MyResultHandler implements ResultHandler { @Override public void handleResult(ResultContext context) { System.out.println(“#########################”); } } MyResultHandler handler=new MyResultHandler(); list= mapper.select(handler); } […]

未找到XPathFactoryImpl错误(使用myBatis)

使用myBatis standAlone(Atlassian jira插件(OSGi)环境) 发生以下错误。 [INFO] [talledLocalContainer] org.apache.ibatis.exceptions.PersistenceException: [INFO] [talledLocalContainer] ### Error building SqlSession. [INFO] [talledLocalContainer] ### Cause: java.lang.RuntimeException: XPathFactory#newInstance() failed to create an XPathFactory for the default o bject model: http://java.sun.com/jaxp/xpath/dom with the XPathFactoryConfigurationException: javax.xml.xpath.XPathFactoryConfigurationException: java. util.ServiceConfigurationError: javax.xml.xpath.XPathFactory: Provider org.apache.xpath.jaxp.XPathFactoryImpl not found [INFO] [talledLocalContainer] ### Cause: java.lang.RuntimeException: XPathFactory#newInstance() failed to create an XPathFactory for the […]

使用MyBatis持久保存对象

我有POJO课程: class Ticket { private int id; private double cost; private Date time; private List places; // Getters and setters here } class Place { private int row; private int place; // Getters and setters here } 然后我创建一张票和一些地方: Ticket ticket = new Ticket(); ticket.setCost(58.7); ticket.setTime(new Date()); Place place1 = new Place(); place1.setRow(1); place1.setPlace(2); ticket.addPlace(place1); Place […]

MyBatis,插入复杂对象

我有以下情况: public class MyObj{ private String myField_1 private String myField_2 private MyChildObj myChild // Constructor & get/set } public class MyChildObj{ private String myField_3 private String myField_4 // Constructor & get/set } 在我的Query.xml上,我用这种方式写了插入: INSERT INTO MY_TABLE ( FIELD_1, FIELD_2, FIELD_3, FIELD_4) values ( #{myField_1}, #{myField_2}, #{myField_3}, #{myField_4}, ) 阅读mybatis结果地图指南后,我尝试在mybatis-config.xml文件中添加以下行: 但我一直收到以下错误: ### Cause: org.apache.ibatis.builder.BuilderException: Error creating […]

MyBatis:从插入的对象数组中获取id返回错误

我使用mybatis 3.3.0-SNAPSHOT。 我想插入对象列表,并获取每个对象的id。 在接口我有: public void createCore(@Param(“cores”)List cores); 在xml mapper中我有: INSERT INTO mytable (raz,dva,tri ) VALUES (#{core.raz}, #{core.dva}, #{core.tri}) 我得到: 更新数据库出错。 原因:org.apache.ibatis.executor.ExecutorException:生成错误 键或将结果设置为参数对象。 原因:org.apache.ibatis.binding.BindingException:找不到参数’id’。 可用参数是[cores,param1] 我试过和keyProperty =“core.id”但得到了同样的错误。 怎么解决?

是否可以结合MyBatis和QueryDSL / jOOQ?

MyBatis提供了映射,本地缓存和开箱即用的日志记录。 因此,QueryDSL / jOOQ提供SQL语句的编译时检查和IDE自动完成。 是否可以将它们结合起来? 换句话说, 我想用QueryDSL或jOOQ创建一个查询,然后使用MyBatis的一些粘合代码/适配器执行它 。 我已经检查过: 我考虑使用QueryDSL生成SQL查询字符串,并在MyBatis中使用它们的’@SelectProvider’注释,但它似乎是一个死胡同:MyBatis在其SQL字符串中需要“$ {xxx}”,但QueryDSL只生成查询基于实际的Java类型,因此即使对于ID也不起作用。 MyBatis Generator作为QueryDSL / jOOQ的替代品:非常差的替代方案,因为它实际上生成了一个样板代码,您以后必须维护和扩展它 MyBatis SQL Builder作为QueryDSL / jOOQ的替代品:比QueryDSL或jOOQ弱得多,例如它不提供列名的编译时检查,它更麻烦,并且它依赖于使代码复杂化的’@SelectProvider’

MyBatis – 如何创建w动态WHERE子句

该服务获取一个包含三个值列表的未知对象[column,operator,value]例如,EMAIL – like – “TEST” 基于结果列表来构建我有的WHERE子句但我也能够构建如下的条件(例如) WHERE(电子邮件,如’test’和user_id 5)或(trans_id 500) 有谁可以帮我怎么做?

MyBatis String作为参数

我想在MyBatis中为Select语句使用String参数。 我的mapper.xml: SELECT CREATIONDATE, DOCUMENTID, TITEL, REGTITEL, INFORCEDATE, DOCTYPE FROM #{databBaseTable} 和调用函数: public List selectAll(String databBaseTable) { SqlSession session = sqlSessionFactory.openSession(); System.out.println(“Table: “+databBaseTable); try { List list = session.selectList(“FastXMLObject.selectAll”,databBaseTable); return list; } finally { session.close(); } } 字符串dataBaseTable是我的数据库的表的名称(谁会想到),因为我想从verious表中动态获取数据。 但不幸的是,这不起作用:错误:ORA-00903:UngültigerTabellenname(表名无效)但它不是。 当我打印出“databBaseTable”的值时,它就是表的确切名称。 当我将表的名称写入我的mapper.xml而没有变量时,它可以工作。 我做错了什么?