问题标签 [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 投票
0 回答
499 浏览

java - 当 MyBatis @MapperScan 存在时,spring 云配置客户端不注入属性

我有一个带有 3 个带@Configuration注释类的 spring-boot 应用程序:Application、DBScannerConfig 和 ElasticSearchConfiguration。我的应用程序还使用来自 Spring Cloud Config Server 的配置。

问题是,当我尝试@Value("${key}") 在 DBScannerConfig 类中注释属性时,属性不会被注入。但是,如果我@Value("${key}")在其他两个类中使用注释,则配置效果很好。

我实际上认为它可能与@MapperScan我的 DBScannerConfig 配置类中存在的注释有关。

我想做的是能够在我的@MapperScan带注释的类中检索属性或自动装配 spring 的数据源,但我无法实现这样的事情。

以前有人遇到过这个问题吗?这是代码:

应用程序.java

DBScannerConfig.java

如果我取消注释@AutowiredApplication.java 中的数据源,我会得到一个有效的对象。但是,在 DBScannerConfig.java 中,我得到的是 NULL。

我尝试在我的 Application.java 类中自动装配 Datasource 对象,然后在 DBSCannerConfig.java 中使用它,但没有成功。一旦我将@MapperScan注释添加到 Application.java 类中,它就会停止自动装配 spring 数据源。

0 投票
1 回答
3757 浏览

java - MyBatis 映射器类未在具有两个数据源的 Spring Boot 应用程序中注册

我们有一个 Spring Boot 应用程序,它应该通过 MyBatis 映射器从两个不同的数据库 DB2 和 Oracle 访问存储过程

我们创建了两个 DB2 上下文类,例如用于 DB2

MyBatis bean 看起来像

并且 SqlSessionFactory bean 被注入到具有适当资格的相应 DAO 类中,例如

对于 Oracle,我们也有相同的配置、映射器和 DAO,除了在该配置中 DataSource 和 SqlSessionFactory bean 没有使用 @Primary 注释。根据 Spring Boot 参考中的描述,这是必要的:http: //docs.spring.io/spring-boot/docs/1.2.3.RELEASE/reference/htmlsingle/#howto-two-datasources;否则,Spring Boot 应用程序启动将导致 NoUniqueBeanDefinitionException

使用此配置,Spring Boot 应用程序成功启动,并且在启动期间甚至有 INFO 日志打印输出表明两个映射器类都已成功识别

但是,在运行时我们有一个问题。首先执行 Db2Dao,然后一切顺利,DB2 存储过程开始执行,检索到的结果通过 Db2Mapper 存储。然后是 OracleDao;但是在 Oracle SP 执行之后,收到以下异常

我们一直在与这个问题斗争一段时间,但找不到解决方案。可能@Primary 的使用可能与它有关,但没有它我们甚至无法启动应用程序。我们的研究实际上似乎表明不同的库版本甚至可能提供不同的行为:我们的堆栈是 Java 1.8、Spring Boot 1.2.6、Spring 4.1.7、MyBatis 3.2.5、MyBatis-Spring 1.2.2

0 投票
1 回答
495 浏览

java - 将 Spring 与 MyBatis 一起使用时的 Java 异常

进入 httpInvoker 后出现异常,如下所示:

经过数小时的研究,我发现 spring-db.xml 是问题所在。其中有一些定义可以连接到例如 com.mchange.v2.c3p0.ComboPooledDataSource 或 enviromentProperties。我一步一步地尝试,从那里逐行注释/取消注释,其中部分定义如下:

当我评论最后一个调用配置器的 bean 时,一切顺利(无一例外)。

怎么做才能停止获得该异常?也许我必须以其他方式编写该 bean?(抱歉没有给出完整的代码,我被限制给出它..)

我正在使用:Eclipse Mars Java 1.8 Spring 3.1 MyBatis 32 位 Windows

0 投票
1 回答
801 浏览

mysql - spring mybatis with mysql 在选择数据时出现“无法创建 PoolableConnectionFactory (FUNCTION java_blog.getdate 不存在)”

代码:我的java域:用户

并且有 setter 和 getter。

我的 mysql 数据库表用户喜欢:

当我从 java_blog.user 中选择数据时,会发生错误。

错误信息:</p>

org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是 org.mybatis.spring.MyBatisSystemException: 嵌套异常是 org.apache.ibatis.exceptions.PersistenceException:

查询数据库时出错。原因:org.springframework.jdbc.CannotGetJdbcConnectionException:不能

获取 JDBC 连接;嵌套异常是 org.apache.commons.dbcp.SQLNestedException: 无法创建 PoolableConnectionFactory (FUNCTION java_blog.getdate 不存在)

com/blog/persistence/dao/user/IUserDAO.java 中可能存在该错误(最佳猜测)

该错误可能涉及 com.blog.persistence.dao.user.IUserDAO.getUserById

执行查询时发生错误

原因:org.springframework.jdbc.CannotGetJdbcConnectionException:无法获得JDBC连接;嵌套异常是

org.apache.commons.dbcp.SQLNestedException: 无法创建 PoolableConnectionFactory (FUNCTION java_blog.getdate 不存在) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:981) org.springframework.web.servlet.FrameworkServlet。 doGet(FrameworkServlet.java:860) javax.servlet.http.HttpServlet.service(HttpServlet.java:622) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845) javax.servlet.http.HttpServlet。服务(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121) org.springframework。 web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

0 投票
0 回答
174 浏览

spring - SpringMVC 和 Mybatis 无法运行“插入”

当我在 localhost:8080/myregister.jsp(controller: localhost:8080/user/register) 中单击提交时,它得到:

请求处理失败;嵌套异常是 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.cn.hnust.dao.UserMapper.insert

当我在 localhost:8080/login.jsp(控制器:localhost:8080/user/login)中单击提交时,它可以工作。

[MYSQL:

如果存在则删除表user_t
创建表user_t(
usernamevarchar(40) NOT NULL,
passwordvarchar(255) NOT NULL,
PRIMARY KEY ( username)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

]

我使用mybatis-generator-core-1.3.2 到通用UserMapper.xml,但是为什么只有'insert'函数不能运行?

整个 Maven 项目在 github 中:https ://github.com/Bonsen/Spring-SpringMVC-mybatis 。

0 投票
1 回答
773 浏览

mybatis - MyBatis 内部查询

在我的代码库中,我们有一个 MyBatis 查询,如下所示,

唯一约束是列名称和版本。如果多个用户同时插入值,有时我们会收到唯一约束错误。当我们检查时,名称和版本是相同的,并按预期抛出错误。

我的问题是,MyBatis 如何处理内部查询

此查询是否由 MyBatis 提交给 Oracle,然后 oracle 首先执行 SELECT 然后 INSERT 查询或 MyBatis 先执行 SELECT,然后替换 INSERT 中的值并在 Oracle 中提交 INSERT 查询(MyBatis 的 2 个步骤)?

如果像第二个选项一样处理,当两个人在同一时间插入同名时,有可能两个人都得到相同的版本。然后在尝试插入时,我们会得到 UniqueConstraint 错误。

请让我知道 MyBatis 如何在内部处理这个问题。任何指针都可以。

谢谢,标清

0 投票
2 回答
5700 浏览

caching - 从外部刷新 MyBatis 缓存(在映射器之外)

<cache/>我正在使用通过在 xml 映射器文件中激活二级缓存的 MyBatis 。

假设我想与从 MyBatis 解耦的底层 DB/DataSource 进行交互,例如通过直接 jdbcTemplate。

我如何保证,当我通过 jdbcTemplate 插入/更新/删除 MyBatis 保存缓存查询结果的表时,MyBatis 缓存会被适当地刷新。

换句话说,如何强制 MyBatis 从 MyBatis 映射器外部刷新其缓存以获取某些缓存命名空间?

我知道@Options(flushCache=true)注释,但这似乎不适用于映射器接口之外。

0 投票
3 回答
4169 浏览

spring - springboot+mybatis 异常:org.springframework.beans.factory.NoSuchBeanDefinitionException

我得到以下异常:

org.springframework.beans.factory.NoSuchBeanDefinitionException:没有找到符合条件的 bean [pers.panxin.springboot.demo.mapper.UserMapper] 类型的依赖项:预计至少有 1 个 bean 有资格作为此依赖项的自动装配候选者。依赖注解:{@org.springframework.beans.factory.annotation.Autowired(required=true)}

控制器 :

服务:

服务实现:

映射器接口:

应用程序的主类

异常是如何发生的或我的代码中有什么问题?

0 投票
1 回答
201 浏览

java - Mybatis 无法查询并映射到 apt Model 类

我有一个模型类,它只保存另外两个表的外键。像这样 :

相应地,我有以下 Model 类作为 ToolOSRelation.java :

在此之后,我有以下 mybatis 映射器:

javaType="OS" 指向文件 OS.java,"Tools" 指向 Tools.java。

当我在 mysql shell 中运行它时,查询工作正常。但是,这会返回一个 ToolOSRelation 对象,其中所有值(工具和操作系统)都为空。我哪里错了?

编辑:添加工具类和操作系统类:

0 投票
1 回答
249 浏览

eclipse - Vaadin7 与 mybatis 和 Spring

我是 Vaadin 和 Mybatis-Spring 的新手。

我的 UI 类无法使用 @Autowired 注释调用 Service 类。我为服务类附加了@Service。

我的观点:

我的应用程序 context.xml 在资源文件夹下。

开发上下文.xml

服务开发上下文.xml

Web.xml

代码不起作用,请帮我弄清楚我错过了什么