Springboot mybatis常见配置问题解决

下面是Springboot MyBatis常见配置问题解决的完整攻略。

问题一:MyBatis的Mapper不能正常映射数据库表

原因

由于 Mapper 文件和数据库表的对应关系没有处理好,MyBatis 执行时会找不到对应的表或列,导致不能正常映射。

解决方案

  1. 确认数据库配置是否正确,包括数据库名称、端口、用户名、密码等。

  2. 确认 Mapper 文件的命名是否一致并正确导入,例如:xxxMapper.xml、xxxMapper.java。

    如果使用了通配符代替包名导入,需要确认通配符是否正确,语句示例:

    xml
    <mapper class="com.example.*.mapper.SomeMapper" />

    3. 确认 Mapper 文件中的 SQL 语句是否正确,包括 SQL 语句是否和数据库表字段一一对应、是否使用了正确的语法等。

示例

如果出现报错信息:Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'xxx' doesn't exist,则需要确认 Mapper 文件中定义的表名是否与数据库中的表名对应,例如:

<select id="selectById" resultType="com.example.demo.entity.Person">
    select * from user where id = #{id}
</select>

可以通过修改为:

<select id="selectById" resultType="com.example.demo.entity.Person">
    select * from person where id = #{id}
</select>

解决对应关系不对应带来的问题。

问题二:数据库连接池连接资源泄漏

原因

连接池未及时关闭导致的连接资源泄漏。

解决方案

在 MyBatis-SpringBoot-Starter 中可以配置连接池参数。一般设置了最大连接数和最小连接数,但连接池的连接超时时间、最大空闲连接时间等通常默认值是不可靠的,会造成连接资源泄漏。

推荐使用 Hikari 连接池,它有一个非常好的特性是自动关闭闲置连接,代码示例如下:

spring.datasource.hikari.data-source-properties.auto-commit=false
spring.datasource.hikari.idle-timeout=60000
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.minimum-idle=3

如上面的代码配置了连接池属性:

  • auto-commit=false,表示手动提交事务。
  • idle-timeout=60000,表示连接在池中空闲最长时间为60秒就会被清除并关闭,避免了空闲连接资源泄漏。
  • max-lifetime=1800000,表示连接最大生命周期为30分钟,在这个时间内没有被使用,则连接会被清除并关闭。
  • maximum-pool-size=10,表示连接池的最大连接数
  • minimum-idle=3,表示连接池的最小连接数,这里设置了3

示例

在当前项目中,配置了MySQL数据库和Hikari连接池,但在连接超时之后,MyBatis 无法从连接池中获取连接,导致程序出现连接池资源泄漏的异常。此时,需要将连接超时时间设置为合适的值,例如:

spring.datasource.hikari.data-source-properties.auto-commit=false
spring.datasource.hikari.idle-timeout=600000
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.minimum-idle=3

这样可以避免连接池资源泄漏,保证数据库连接的正常使用。

以上是Springboot Mybatis常见配置问题解决的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Springboot mybatis常见配置问题解决 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Spring MVC注解式开发示例完整过程

    Spring MVC注解式开发示例完整过程 Spring MVC是一种基于Java的Web框架,它可以帮助我们快速开发Web应用程序。在Spring MVC中,我们可以使用注解来简化开发过程。本文将详细讲解Spring MVC注解式开发的示例过程,并提供两个示例说明。 Spring MVC注解式开发的示例过程 下面是一个Spring MVC注解式开发的示例过…

    Java 2023年5月17日
    00
  • JavaScrip数组去重操作实例小结

    本文将详细讲解“JavaScript 数组去重操作实例小结”,包括去重的常用方法以及实例说明。 一、常用去重方法 1. Set(ES6新增) ES6 中引入了 Set 数据结构,它类似于数组,但是数组中的元素是不能重复的,可以很方便地实现数组去重。 const arr = [1, 2, 2, 3, 3, 4]; const uniqueArr = […n…

    Java 2023年5月26日
    00
  • Java中的NoSuchFieldException是什么?

    NoSuchFieldException是Java中的一个异常,当找不到指定名称的字段或对象属性时会引发此异常。其名称源自NoSuchFieldError和NoSuchMethodError异常,它们也处理类和方法的找不到的问题。 在Java中,字段或属性是对象或类的一部分,它们用于存储或表示对象的状态。如果我们要读取或设置这些字段的值,通常使用反射技术。反…

    Java 2023年4月27日
    00
  • Java Date类常用示例_动力节点Java学院整理

    Java Date类常用示例攻略 什么是Date类 在Java中,Date类是一个代表日期和时间的类,用来表示一个固定的日期或时间点。 Date类的构造方法 Date():用当前日期和时间构造一个Date对象。 Date(long date):用一个标准的毫秒数来构造一个Date对象。 Date(int year, int month, int date):…

    Java 2023年5月20日
    00
  • 一步步带你入门Java中File类

    一步步带你入门Java中File类 什么是File类? File类是Java中用来表示文件或目录的类,它可以用来创建、删除、重命名、检查文件或目录是否存在等操作。 如何创建File对象? 我们可以通过以下两种方式来创建File对象: 方法1:使用文件路径字符串创建File对象 File file = new File("path/to/file&q…

    Java 2023年6月1日
    00
  • Maven项目配置Tomcat的两种方式

    下面我会详细讲解“Maven项目配置Tomcat的两种方式”的完整攻略。 方式一:使用Tomcat Maven插件 Tomcat Maven插件是Apache Maven的插件之一,旨在帮助在Maven项目中的Tomcat服务器中运行Web应用程序。 以下是配置Maven插件所需的步骤: 在Maven项目的pom.xml文件中添加以下依赖项: xml &lt…

    Java 2023年6月2日
    00
  • Spring自动装配@Autowired教程

    下面是关于Spring自动装配@Autowired的详细攻略: 什么是Spring自动装配@Autowired 在Spring中,我们说的自动装配(autowiring)是指通过容器自动连接两个或多个不同的bean。当有多个bean可以注入在一个类中时,Spring会自动为我们选择正确的bean并注入。而@Autowired则是Spring提供的一种自动装配…

    Java 2023年5月19日
    00
  • javaweb实战之商城项目开发(二)

    《javaweb实战之商城项目开发(二)》是一篇介绍如何开发一个完整的商城网站的教程,其中包含了从前台页面设计到后台数据管理等方面的内容。 在开发商城项目时,我们需要先进行项目规划和技术选型,如需使用框架,我们可以选择Spring MVC、Spring Boot等常用的框架。在规划完整个项目后,我们需要完成数据库的设计和表的创建。商城项目通常需要的功能包括商…

    Java 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部