使用mybatis(3.2.8版本)插入2000条记录时的性能问题
我试图在批处理中的员工表中插入2000个记录(使用mybatis).我的要求是: 1.如果任何记录都无法插入,请记录错误. 2.即使记录中的任何一个失败,继续进行插入. 3.如果记录中的任何一个失败,则不应发生回滚. 4.表现良好. DAO实施的示例代码:在这里我提出了2个方案. 在循环外调用sqlsession.commit(). SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession(ExecutorType.BATCH); BatchMapper batchMapper = sqlSession.getMapper(BatchMapper.class); try { for(Employee e: empList){ batchMapper.addEmployee(e); } } catch
0 2024-04-05
编程技术问答社区
从java应用程序中批量插入数据库的不同方法
我正在寻找从Java应用程序中执行批量插入到数据库(例如SQL Server 2012)的不同方法.我需要非常有效地将大量实体插入数据库中,而无需与实体呼叫那么多的数据库. 我的要求是执行实体的大量插入,其中数据库中的实体插入物可能涉及将数据插入一个或多个表中.以下是我能想到的两种方法: 动态生成一批SQL语句,并通过使用本机JDBC支持来对数据库执行. 构造所有实体的XML表示,然后通过传递生成的XML来调用存储过程.存储的过程负责解析XML并将实体插入数据库. 我是Java的新手,对可用框架没有足够的了解. IMO,上述两种方法似乎很幼稚,并且不利用可用框架. 我要求专家分享不同的批量插入方式以及其优点和缺点.我对Mybatis,Spring-Mybatis,Spring-JDBC,JDBC,JDBC等开放,这可以有效地解决问题方式. 谢谢. 解决方案 我有一个演示,JDBC批处理处理 文件:demo.txt 内容 1899942,demo
0 2024-04-05
编程技术问答社区
mybaits Batch ExecutorType和for_each Xml的性能比较
我使用诱饵将记录列表插入DB.以前,我的代码类似于: for(Item item : items){ sqlSession.insert("insert", item); } 使用此方法有效,但由于项目数量,我发现Mysql服务器上有动态增量磁盘. 由于我几乎无法访问MySQL配置,并希望解决此高磁盘IO问题,因此我找到了一些可能的解决方案: 使用ExecutorType.BATCH sqlSession 在单个插入语句中插入多个值,例如: insert into Item values (#{item.a}, #{item.b}...) 有人知道哪个适合解决我的高磁盘问题以及这两个解决方案之间的主要区别?谢谢. 解决方案 尽管很难预测服务器的磁盘I/O的影响,但是方法1(使用Exec
4 2024-03-29
编程技术问答社区
如何用mybaits关联向嵌套列传递一个常量值
如何通过Mybatis关联将常数'1111'传递给嵌套的列? 解决方案 取决于您的DB,您可以使用 IFNULL(#{TYPE}, '1111')(mysql) ISNULL(#{TYPE}, '1111')(SQL Server) 在您的子查询中(getDict). 另一个解决方案是您的父询问可以返回type作为值 例如: SELECT '1111' AS TYPE, ..... 然后在您的专栏中,您可以说 column={VALUE=CERTIFICATE_TYPE,TYPE=TYPE} 希望会有所帮助.
4 2024-03-17
编程技术问答社区
MyBatis不返回查询的所有结果
问题 我有一个查询,可以返回17个记录.当我将Mybatis与具有的地图一起使用时,它将返回6个记录. 请注意,我的其他地图不会发生这种情况,我还有许多其他与关联都可以正常工作的地图. 查询: with leave_counts as ( select leave_type_id, count(llm.leave_id) as count from lw_leave_master llm group by leave_type_id ) select llt.leave_type_id, llt.leave_type_abbr_tx, llt.leave_type_desc_tx, lc.count as count_nm from lw_leave_type llt join leave_counts lc on
6 2024-03-17
编程技术问答社区
使用Mybatis在两个表中插入数据
我对mybatis非常陌生,陷入困境,我有一些问题 完整的方案是,我需要在两个不同的表和外键关系的不同表中读取和Excel文件并将Excel数据插入数据库中. 我能够读取Excel数据并能够在主表中插入,但无法获得如何在第二个表中插入数据实际上是我有两个不同的POJO类,每个表都有两个不同的映射器. . 我通过定义父母班级的Pojo的Pojo来实现关联 有什么方法可以将数据插入两个不同的表中. 可以在单个标签中运行2个插入查询 任何帮助都是可观的 解决方案 有很多方法可以做到这一点. 这里是使用单独的插入物的最直接方法之一.确切的解决方案可能主要取决于是从Excel取的主要密钥还是在插入数据库中生成的主要密钥.在这里,我想在插入过程中生成键(因为这是一个稍微复杂的情况) 假设您有这些pojos: class Parent { private Integer id; private Child child; // other
0 2024-03-17
编程技术问答社区
凸轮 + MyBatis + Apache Aries
我正在关注位于以下位置的设置指南:当我启动服务混音然后启动应用程序时,我会收到以下堆栈跟踪: org.osgi.service.blueprint.container.ComponentDefinitionException: Errorsetting property: PropertyDescriptor
6 2024-02-28
编程技术问答社区
如何整合Spring Boot、Camel和Mybatis
需要使用Springboot将骆驼和mybatis与应用程序集成在一起. Springboot为骆驼和Mybatis提供了盒子的支持.还提供骆驼和Mybatis Springboot启动器. 但是,当我尝试将Spring Boot应用程序与骆驼和Mybatis集成时,它会失败. 我正在使用基于Java DSL的骆驼路线.还使用mybatis春季启动依赖项.注释映射器,在application.properties文件中添加了数据库属性.我期望发生的事情: 1)Springboot设置数据源和映射器,启动时SQLSessionFactory. 2)接下来称为Camel-Mybatis消费者,在(1)中完成的设置将允许使用Mybatis成功拨打数据库调用. 我创建了春季注释的配置类,并用它来创建/获取数据源. 如何让骆驼使用此DataSource Bean? 如何告诉骆驼使用新构建的SQL会话工厂,而不是尝试从配置文件构建? 在github中创建了示例应用程序,
10 2024-02-28
编程技术问答社区
如何通过mybatis将一个对象(超过10个属性)插入到mysql中,基于注解而不列出所有属性
我想根据注释将具有10多个属性的对象插入MySQL中.但是我必须列出所有属性,这太不便了.我想知道,是否有一些方法可以轻松地插入对象,而无需通过mybatis列出所有属性.这是我的片段.非常感谢. @Insert("insert into poi_shop(name,brand,tags,status,phone,mobile,business_time,address,city,lng,lat,business_type,attribute_json) values(#{name},#{brand},#{tags},#{status},#{phone},#{mobile},#{business_time},#{address},#{city},#{lng},#{lat},#{business_type},#{attribute_json})") @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "i
2 2024-02-26
编程技术问答社区
MyBatis: 如何在Postgres下返回插入的对象的ID?
我有一个Postgres表,其中ID定义为bigserial.如何 我可以使用@Insert并恢复插入实体的ID吗?我是 期望映射方法返回ID或填充ID 实体对象中的字段.有什么想法吗? 解决方案 nvm,我想我在另一个线程上找到了答案, http://mybatis-user.963551.n3.nabble.com/How-to-return-the-ID-of-the-inserted-object-under-Postgres-td1926959.html 有链接到这里降落在这里的任何人. 其他解决方案 映射器将返回您实际插入的记录数量. 为了恢复插入记录的ID,您需要添加第二个注释(将填充ID): @Options(useGeneratedKeys=true, keyProperty="idSomething") 请注意,如果识别属性在您的实体对象中命名为" ID",则无需keyProperty.
6 2024-02-26
编程技术问答社区
如何正确使用Mybatis的@Param注解
我一开始没有使用@param注释,这是我的mapper.java public void changeUserAuth(Integer userId,int identity); ,这是我的mapper.xml update user identity = #{identity} userId = #{userId} 然后它正常工作!我继续这样写,如下: //this's mapper.java public void updateUserStatus(Integer userId);
10 2024-02-26
编程技术问答社区
如何在MyBatis中使用带有注释的动态SQL查询(如何使用selectProvider)?
我试图避免使用额外的XML来定义mybatis3中的映射器.注释适合. 我对 @selectProvider/@insertprovider/etc的使用感到有些困惑.不要以为在线有很多资源来指导我. 基本上,我想在mybatis3中找到替代的注释版. 例如,我有一个XML映射器,我想将其转换为使用注释 任何人都可以提供包括代码的具体答案/解决方案吗? 预先感谢! 解决方案 您可能是: 在@Annotation的开头添加 @Update(" update Author username=#{username
4 2024-02-26
编程技术问答社区
如何使用iBatis(myBatis)的注解进行IN查询?
我们只想与mybatis使用注释;我们真的在努力避免XML.我们正在尝试使用" in"子句: @Select("SELECT * FROM blog WHERE id IN (#{ids})") List selectBlogs(int[] ids); mybatis似乎无法挑选出INT数组,并将其放入由此产生的查询中.它似乎"轻声失败",我们没有得到任何结果. 看起来我们可以使用XML映射来实现此目标,但我们真的很想避免这种情况.是否有正确的注释语法? 解决方案 我相信这是JDBC准备的陈述而不是Mybatis的细微差别.有一个链接在这里这解释了这个问题并提供了各种解决方案.不幸的是,这些解决方案都不适合您的应用程序可行,但是,它仍然是一个很好的阅读,可以理解已准备好的语句的局限性在" In"子句中.可以在事物的DB特异性方面找到一个解决方案(也许是次优).例如,在PostgreSQL中,可以使用: "SELECT * FROM blog
4 2024-02-26
编程技术问答社区
ObjectFactory和MyBatis,将结果映射到JAXBElement<XmlGregorianCalendar>
我正在Apache-Camel中运行mybatis. 查询的结果包含jdbctype =" date"格式中的一些数据.我编写了我的自定义Objecttypehandler,它处理SQL Date和XMlGregorianCalendar Date类型之间的转换,将数据设置为JAXB对象(从XSD方案生成). 问题是,并非JAXB类中的所有字段都接受RAW XMLGREGORIANCALENDAR值,其中一些以它们需要Jaxbelement定义. 我可以使用objectFactory实例来解决此问题,但是然后我需要为每个将jaxbelement作为输入的字段编写自定义objecttypehandler(因为它们在ObjectFactory中具有自己的创建*方法),并且其中许多.听起来像是很多样板和重复的代码. 是否可以更慷慨地处理? 解决方案 我使用@Vadim建议解决了这个问题: 只需定义xjb file(generateElementPropre
18 2023-12-22
编程技术问答社区
在程序的生命周期中,xml的机制是什么?
当我需要使用Property Place持有器时,我只是在Spring_config.xml中定义一个bean,而无需在Java代码中对此bean做任何事情,春季怎么会知道? 另一个困惑的部分是:我在spring_config.xml中定义了两个豆子,即sqlsessionfactorybean和mapperfactorybean,spring spring如何实现mapperfactorybean acts and my dao,而无需我编写任何Java代码? 是否有有关XML解析机制或与之相关的其他文章?非常感谢! 解决方案 您需要了
8 2023-12-22
编程技术问答社区
MyBatis 'IN'条款中的列表
如何将整数列表传递给mybatis xml,在我的mysql查询中的子句中使用? 我正在使用Java 7,MySQL 5.6 dB和mybatis 3.0.4,并在mapper-xml文件中进行查询. 目前,我正在将此整数列表转换为字符串,并使用字符串替换(${} operator)将值放入" in"子句中 - 虽然它按预期运行,但此方法使参数易于注射. 我尝试使用元素,但我无法弄清楚要指定的属性. 以下是示例Java代码: public List getStripperDetails(String club, List stripperIds) { Map input = new HashMap(); input.put("club", club); input.put("stripperIds", stripperI
4 2023-12-21
编程技术问答社区
映射的语句集合不包含mybatis mapper的值
我是用户mybatis和Spring创建一些测试网站.现在,我尝试使用MyBatis XML映射器时遇到了问题.问题是" java.lang.illegalgumentException:映射语句集合不包含com.cooldrinker.mybatis.mapper.mapper.adminmapper.getadminbyusername" servlet.xml
46 2023-12-20
编程技术问答社区
Jboss Wildfly EJB3和Mybatis的部署错误。NoSuchMethodError javax.persistence.Table.indexes()[Ljavax/persistence/Index。
我正在尝试将EAR文件部署到JBOSS WILDFLY(8.1.0),但我得到以下例外: Caused by: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index; 我的EAR文件包含一个EJB JAR,其中包含Mybatis(版本3.2.7)持久单元,该单元对CGLIB具有依赖性(版本:3.1). 在JBOSS 7(版本7.1.1)中,此相同的EAR文件部署并没有问题 根据错误的错误,说该方法找不到,但我知道类和方法在那里,在新版本的JBoss中必须存在一些类别冲突. 解决方案 我在调查和剖析了耳朵文件后设法找到了答案.问题是我的EJB罐子中包含的Asm.jar是CGLIB的子依赖性. JBOSS包括Jar和耳罐之间存在阶级冲突.要修复它,只需在ASM子依赖性的CGLIB依赖项上添加Maven排除.
26 2023-12-04
编程技术问答社区
ibatis spring java.lang.NoSuchMethodError com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse
我在WebLogic 10.3.6中使用IBATIS 2.3.4使用Spring 3.2.0 在WebLogic中部署时. 我得到了下面的nosuchmethoderror: User defined listener org.springframework.web.context.ContextLoaderListener failed: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gatewayService' defined in ServletContext resource [/WEB-INF/applicationContext-granite-webservice.xml]: Cannot resolve reference to bean 'daoIPInventory' while setting bean property '
12 2023-12-01
编程技术问答社区