问题标签 [spring-mybatis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1299 浏览

mysql - 如何在mysql中的'case when then'中使用'select'?

我的mysql表是这样的:

有两个参数:开始和结束,我想要的是这样的:

怎么写sql来得到结果?也许“当时的情况”是一个不错的选择,但我不知道该怎么写。

0 投票
1 回答
3705 浏览

spring-batch - 了解 Spring Batch 中的 AsyncItemWriter,以及何时使用 MyBatis 编写块?

在下文中,我的写入是否一次提交到数据库 1000 - 因为我的 Spring Batch 作业中的提交间隔设置为 1000?MyBatis SqlSessionFactory 被定义为一个 BATCH 执行:

我在调试日志中注意到:

在上面的 DEBUG 语句中,我认为它正在打开连接。然后在插入语句下方插入一批 1,000 条 - 或者它是否为每个插入打开了与 MS SQL 服务器的新连接?

最后它正在关闭事务(我再次不确定它是否正在关闭与 MS SQL 服务器的连接,或者它是否在每次插入后都这样做)。同样,我想批量插入 1,000 条记录,并与数据库建立一个连接。

此外,AsyncItemWriter 是否可以委托给 JdbcBatchItemWriter,它会比我配置的 MyBatis 更快吗?在下面的代码中,我委托给 CompositeItemWriter,它使用 MyBatis 映射器写入两个单独的表。

我的用例是这样的:我需要从 mec_mdw 数据库表中读取并验证 700 万条记录。

被处理器视为无效的无效 mec_mdw 记录将被插入到 mec_kickout 表中。此外,该特定记录的验证失败原因将插入到 mec_kickout_reason 表中。我最初读取的 mec_mdw 表也将在处理结束时更新一些列。

这是我到目前为止使用异步处理和写入的内容,目前我正在测试仅读取 2,500 条 mdw 记录,在此测试中,所有 2,500 条记录都是故意无效的,因此被插入到 mec_kickout 表中,而原始记录mdw 表 2,500 行也正在更新。所有这一切都在大约 50 秒内完成,在一台 8 核 CPU 笔记本电脑上,具有 16 Gb 的 RAM,并且一个 MS SQL 服务器数据库是一个网络调用。但是我仍然不完全了解它是否可以更快地完成。

处理器将具有业务逻辑,现在它只有 bean 验证,在 MecMdw 域对象中寻找空属性。最终,我还需要适配器代码来查找其他表中的帐户 ID(这样会带来更多的数据库连接乐趣!)。我认为这个适配器 DAO 逻辑将进入处理器

MdwWriter 和 KickoutWriter 使用 MyBatis DAO 写入数据库。

这是 KickoutWriter.java

0 投票
3 回答
13866 浏览

spring-mybatis - mybatis spring 应用获取 - org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

我知道这个问题已经被问过好几次了,但没有一个答案对我有帮助。因此我又问了一遍。我读到当接口类/包名称与映射器 xml 的类/包不同时会发生此错误。我使用相同的类/包名称仍然出现此错误。

我正在使用 spring-mybatis 并收到此异常 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

这是我的相关文件:-

1)EmployeMapper.java(接口)

2) com.XXX.org.mapper.EmployeeMapper.xml

3)ApplicationContext.xml

4)DBUnit测试

WEBINF/类

我可以在 WEBINF/classes 中看到我的界面和 xml 映射器,但问题是尽管共享相同的包名称,但创建了两个具有相同名称的单独文件夹。我认为两者都应该在生成的类中的一个包中。

0 投票
2 回答
12553 浏览

java - 使用 MyBatis 和 MySql 以编程方式创建表

我想创建一种方法来动态创建表,只需将表名作为变量传递。我已经定义了我的 xml 映射器

我的 Java 接口映射器很简单:

但是当我调用我的界面时

我得到以下异常:

如果我改为更改查询,为表名添加 ``:

我明白了

知道为什么吗?

0 投票
1 回答
324 浏览

spring-mvc - 在课堂外返回 joda DateTime

我在弄清楚如何使用 mybatis 从 SQL 查询中返回单个 DateTime 时遇到了一些麻烦:

我的界面的相关部分:

我的映射器 xml 的相关部分:

我的问题似乎与 property = "time" 因为我收到此错误:

我已经尝试了所有不同的属性名称,例如 DateTime、datetime、dateTime、org.joda.time.DateTime 等……都出现相同的错误。

有任何想法吗?

更新指出 JodaTime 是不可变的,但这应该可以工作:

0 投票
0 回答
566 浏览

spring - Spring Boot 1.2.5.RELEASE & Spring Security 4.0.2.RELEASE - 如何在安全上下文初始化之前加载配置文件?

我在使用 Spring 时遇到问题:我正在从 Spring Security 版本迁移。3.2.7.RELEASE4.0.2.RELEASE. 在旧版本中一切正常,但是在加载时出现问题DataSource

让我描述一下架构:

应用程序受到 SAML 和 LDAP 机制的保护(SAML 配置与此处给出的配置非常相似:https ://github.com/vdenotaris/spring-boot-security-saml-sample/blob/master/src/main/java/ com/vdenotaris/spring/boot/security/saml/web/config/WebSecurityConfig.java)。

他们都需要连接到数据库才能获取一些所需的数据。我们使用 MyBatis 和 Spring Mybatis 来获取所需的数据。那就是问题开始的地方。

我的 DAO 配置类如下所示:

在以前的版本中,它就像一个魅力,但现在它在加载映射器时出现问题,导致Bean creation exception on FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'someMapper' defined in file [<filename>]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

一遍又一遍(这不是我的问题,这是一个已知的 Spring/MyBatis 错误)。

我做了一些调试,发现了一些有趣的东西:它看起来不像DaoConfiguration这里的配置!我的意思是:如果我添加

对于这个配置,@Bean注释方法的“正常”调用应该导致调用正确的拦截器,这里它缺乏这个功能。

我的预测是:这个配置类还没有被正确包装,Spring Security 已经需要它生成的 bean。

在 Spring Security 初始化之前,是否有任何解决方案可以正确加载此配置?还是我只是错了并且遗漏了一些明显的东西(也许不是那么)?

0 投票
1 回答
478 浏览

mysql - 使用 mybatis-spring Wiered mysqlSyntaxErrorException

我正面临 mybatis-spring 非常奇怪的问题,它不断给我的 mysql 语法异常

以下是查询:

仅当我在服务器上部署时才会发生这种情况。在本地它工作正常,没有问题。

在本地我使用服务器版本:5.5.27-log MySQL 社区服务器(GPL),但在服务器上它的服务器版本:5.5.44-0+deb7u1(Debian)

我怀疑服务器版本问题,但没有找到任何东西。

以下是我的 jar 版本: mybatis:3.3.0 mybatis-spring:1.2.3 mysql:5.1.36

它在某种意义上说它在本地工作得非常好,因此推出了无效语法的可能性。

我还尝试使用相同的查询创建 .sql 文件,并在服务器上的 mysql 命令行上触发它,它返回了完美的结果。

有没有人有任何指示?

0 投票
1 回答
1286 浏览

mybatis - MyBatis - 根据 javaType 的 ResultMap

你好 StackOverflowers,

MyBatis resultMap 有一些我不明白的地方。

我正在研究的模型正在更新。我们决定创建一个新的对象图来反映我们未来的数据库模式(当前的模式很糟糕)。

总结一下我们的问题,这里有一个简单的例子:与表 SITE 相关的当前对象是org.example.model.SiteModel。我们创建了一个名为 的新对象org.example.entity.Site。(包名是临时的)。

现在的目标是使用由 MyBatis 开发的现有 SQL 请求,并添加一个新的 ResultMap 链接到我们方法的返回类型。

这是一个例子:

然后,在一个 XML 配置文件中,我们定义了以下映射:

然后我们从 DAO 中调用该方法:

我们对此的期望是来自 MyBatis 的动态解释,根据计算的返回类型获取正确的 ResultMap。

但是这两个列表都显示为List<org.example.entity.Site>来自调试器。

在此处输入图像描述

这让我觉得第一个 ResultMap 被拿走了,而忽略了第二个。

我错过了什么吗?有没有办法让 MyBatis 以这种方式表现?

问候

0 投票
2 回答
4602 浏览

java - 动态数据源路由 - 未初始化数据源路由器

我指的是这篇文章,其中我们可以使用 Spring Framework 中的 AbstractRoutingDataSource 来动态更改应用程序使用的数据源。我正在使用 Mybatis (3.3.0) 和 Spring (4.1.6.RELEASE)。如果从主数据库获取数据时发生异常,我想切换到备份数据库。在这个例子中,我使用了 hsql 和 mysql db。

路由数据源

数据源上下文持有者

应用数据配置

客户

我收到以下异常

但是,如果我一次只使用一个数据库,我可以让事情正常工作,这意味着数据源配置没有问题。

0 投票
1 回答
705 浏览

mysql - Mybatis如何在select sql中连接数字类型?

我想根据搜索号参数选择一个结果,比如我通过 7了,我想要这样的sql语句select * from student where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(CREATETIME),现在在Mybatis中,我尝试这样写,也改成${pd.intervalDay}#{pd.intervalDay}但是错误。如何更改?