Backend Development 8 min read

Why Replacing MyBatis with MyBatis-Plus Can Break Your Java App—and How to Fix It

This article walks through replacing MyBatis with MyBatis-Plus in a Spring Boot project, explains the LocalDateTime conversion error caused by MyBatis 3.5.1 and an outdated MySQL connector, and shows how upgrading the connector resolves the issue while highlighting the risks of component upgrades.

macrozheng
macrozheng
macrozheng
Why Replacing MyBatis with MyBatis-Plus Can Break Your Java App—and How to Fix It

MyBatis Replaced by MyBatis-Plus

Background

An old project uses MySQL 5.7, MyBatis 3.5.0, and mysql-connector-java 5.1.26.

Why replace

A new developer found MyBatis cumbersome and decided to switch to MyBatis-Plus for simpler code.

Migration steps

Created table

tbl_order

with two rows, then switched the ORM to MyBatis-Plus 3.1.1 while keeping the same connector version.

Running

com.qsl.OrderTest#orderListAllTest

produced the exception “Conversion not supported for type java.time.LocalDateTime”.

Root cause analysis

The exception originates from MyBatis 3.5.1, which stopped handling

LocalDateTime

,

LocalDate

, and

LocalTime

conversions and delegated them to the JDBC driver. The driver version 5.1.26 does not support these types.

Upgrading

mysql-connector-java

to 5.1.37 adds support for the three Java time types, eliminating the error.

Further issues

After the upgrade, inserting a row with a

NULL

timestamp caused a

NullPointerException

. The stack trace showed that

getTimestamp(columnIndex)

returned

NULL

. Updating the driver to 5.1.42 resolved the problem.

Lesson

Component upgrades can introduce subtle incompatibilities. Always verify the compatibility of ORM libraries, JDBC drivers, and Java time types, and perform thorough testing after any version change.

debuggingJavaSpring BootMySQLORMMyBatis-Plus
macrozheng
Written by

macrozheng

Dedicated to Java tech sharing and dissecting top open-source projects. Topics include Spring Boot, Spring Cloud, Docker, Kubernetes and more. Author’s GitHub project “mall” has 50K+ stars.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.