springboot+mybatis启动报错:No suitable driver found for xxx

报错如下

Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: No suitable driver found for informix-sqli://10.10.68.22:10001/prprisk:informixserver=test3;NEWLOCALE=zh_CN,zh_CN;NEWCODESET=gb18030,8859-1,819;IFX_USE_STRENC=true
	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) ~[mybatis-3.5.6.jar:3.5.6]
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:149) ~[mybatis-3.5.6.jar:3.5.6]
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) ~[mybatis-3.5.6.jar:3.5.6]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_161]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_161]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_161]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_161]
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427) ~[mybatis-spring-2.0.6.jar:2.0.6]
	... 46 common frames omitted
Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: No suitable driver found for informix-sqli://10.10.68.22:10001/prprisk:informixserver=test3;NEWLOCALE=zh_CN,zh_CN;NEWCODESET=gb18030,8859-1,819;IFX_USE_STRENC=true
	at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82) ~[spring-jdbc-5.2.12.RELEASE.jar:5.2.12.RELEASE]
	at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80) ~[mybatis-spring-2.0.6.jar:2.0.6]
	at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) ~[mybatis-spring-2.0.6.jar:2.0.6]
	at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) ~[mybatis-3.5.6.jar:3.5.6]
	at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) ~[mybatis-3.5.6.jar:3.5.6]
	at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) ~[mybatis-3.5.6.jar:3.5.6]
	at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) ~[mybatis-3.5.6.jar:3.5.6]
	at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) ~[mybatis-3.5.6.jar:3.5.6]
	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) ~[mybatis-3.5.6.jar:3.5.6]
	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:89) ~[mybatis-3.5.6.jar:3.5.6]
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) ~[mybatis-3.5.6.jar:3.5.6]
	... 52 common frames omitted
Caused by: java.sql.SQLException: No suitable driver found for informix-sqli://10.10.68.22:10001/prprisk:informixserver=test3;NEWLOCALE=zh_CN,zh_CN;NEWCODESET=gb18030,8859-1,819;IFX_USE_STRENC=true
	at java.sql.DriverManager.getConnection(DriverManager.java:689) ~[na:1.8.0_161]
	at java.sql.DriverManager.getConnection(DriverManager.java:208) ~[na:1.8.0_161]
	at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:155) ~[spring-jdbc-5.2.12.RELEASE.jar:5.2.12.RELEASE]
	at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:146) ~[spring-jdbc-5.2.12.RELEASE.jar:5.2.12.RELEASE]
	at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:205) ~[spring-jdbc-5.2.12.RELEASE.jar:5.2.12.RELEASE]
	at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:169) ~[spring-jdbc-5.2.12.RELEASE.jar:5.2.12.RELEASE]
	at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158) ~[spring-jdbc-5.2.12.RELEASE.jar:5.2.12.RELEASE]
	at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116) ~[spring-jdbc-5.2.12.RELEASE.jar:5.2.12.RELEASE]
	at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79) ~[spring-jdbc-5.2.12.RELEASE.jar:5.2.12.RELEASE]
	... 62 common frames omitted

自己找很久原因,同事又帮忙找了很久,终于发现是url写错了,少写了jdbc!!!粗心大意不得!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个报错一般是因为 Mybatis 找不到对应的 TypeHandler 来处理数据库中的某个字段。TypeHandler 是 Mybatis 中用来将 Java 类型与 JDBC 类型进行转换的组件。 解决这个问题的方法是在 Mybatis 的配置文件中配置对应的 TypeHandler。具体的步骤如下: 1. 找到报错的字段,确定它的类型和对应的 JDBC 类型。一般来说,Mybatis 内置了一些常用类型的 TypeHandler,比如 String、Integer、Long 等,如果你使用的类型是内置类型,那么可以直接使用 Mybatis 内置的 TypeHandler。 2. 如果你使用的类型不是内置类型,那么需要自定义一个 TypeHandler。自定义 TypeHandler 的步骤如下: a. 实现 TypeHandler 接口,或者继承 BaseTypeHandler 类。 b. 在 TypeHandler 中实现两个关键方法:setNonNullParameter 和 getNullableResult。setNonNullParameter 用来将 Java 类型转换为 JDBC 类型,getNullableResult 用来将 JDBC 类型转换为 Java 类型。 c. 将自定义的 TypeHandler 注册到 Mybatis 的配置文件中。 例如,假设你有一个 User 类,其中有一个 Gender 字段,它的类型是枚举类型 GenderEnum。那么你需要定义一个 GenderEnumTypeHandler 类来处理这个字段,具体实现代码如下: ``` public class GenderEnumTypeHandler extends BaseTypeHandler<GenderEnum> { @Override public void setNonNullParameter(PreparedStatement ps, int i, GenderEnum parameter, JdbcType jdbcType) throws SQLException { ps.setString(i, parameter.toString()); } @Override public GenderEnum getNullableResult(ResultSet rs, String columnName) throws SQLException { String value = rs.getString(columnName); return GenderEnum.fromString(value); } @Override public GenderEnum getNullableResult(ResultSet rs, int columnIndex) throws SQLException { String value = rs.getString(columnIndex); return GenderEnum.fromString(value); } @Override public GenderEnum getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { String value = cs.getString(columnIndex); return GenderEnum.fromString(value); } } ``` 其中,GenderEnum.fromString(value) 是一个静态方法,用来将字符串转换为 GenderEnum 类型。 然后,在 Mybatis 的配置文件中注册这个 TypeHandler,具体代码如下: ``` <typeHandlers> <typeHandler handler="com.example.GenderEnumTypeHandler"/> </typeHandlers> ``` 注意,这里的 handler 属性是 GenderEnumTypeHandler 类的全限定名。 这样,在使用 Mybatis 进行查询时,就不会再出现 No typehandler found for property 的报错了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值