广告
返回顶部
首页 > 资讯 > 精选 >SpringBoot整合Mybatis,解决TypeAliases配置失败的问题如何解决
  • 556
分享到

SpringBoot整合Mybatis,解决TypeAliases配置失败的问题如何解决

2023-06-20 15:06:28 556人浏览 泡泡鱼
摘要

本篇内容主要讲解“SpringBoot整合mybatis,解决TypeAliases配置失败的问题如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springBoot整合Mybatis,解

本篇内容主要讲解“SpringBoot整合mybatis,解决TypeAliases配置失败的问题如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习springBoot整合Mybatis,解决TypeAliases配置失败的问题如何解决”吧!

问题描述

在应用MyBatis时,使用对象关系映射,将对象和Aliase映射起来。

在Mybatis的文档明确写出,如果你没有明确定义实体类的Aliase,框架会自动将Class Name自动作为别名。

那么问题来了,当使用java -jar xxx.jar&启动的时候,会报出以下错误,

Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'XXXXX'.Cause: java.lang.ClassNotFoundException: Cannot find class: XXXXX

从异常信息来看,明显就是无法从本地检索到alise对应的类,并最终导致sqlSessionFactory等初始化失败。而且吊轨的是,直接在idea中启动是没有问题的,启动jar包才会出现这个问题

解决方法

参考博主A_Beaver的文章,原来mybatis的facroty需要加载SpringBoot独特的虚拟文件系统,才能识别类路径

public SpringBootVFS() {    this.resourceResolver = new PathMatchingResourcePatternResolver(getClass().getClassLoader());}

从以上代码看,其实是通过PathMatchingResourcePatternResolver实现资源的加载

修复该问题只需要在mybatis的配置类中,设置一下factory即可,

@Bean(name = "masterSqlSessionFactory")    @Primary    public SqlSessionFactory sqlSessionFactory(@Qualifier("masterDataSource") DataSource dataSource) throws Exception {        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();        bean.setDataSource(dataSource);        bean.setVfs(SpringBootVFS.class);//设置SpringBootVFS        bean.setTypeAliasesPackage("com.fulan.domain.red");        ...    }

SpringBoot整合Mybatis及遇到的坑

1. 搭建项目环境

1.1 创建项目

SpringBoot整合Mybatis,解决TypeAliases配置失败的问题如何解决

1.2 修改POM文件,添加相关依赖

修改pom.xml文件,在其中添加下面依赖。

<!--Thymeleaf启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-WEB</artifactId></dependency><!--mybatis启动器--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.3</version></dependency><!--jdbc启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!--数据库驱动坐标--><dependency><groupId>mysql</groupId><artifactId>Mysql-connector-java</artifactId><version>8.0.12</version></dependency><!--Druid数据源依赖--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency>

1.3 配置数据源

在application.yml文件中配置如下代码。

spring:  datasource:    driver-class-name: com.mysql.cj.jdbc.Driver    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEnconding=utf-8&useSSL=false&serverTimezone=GMT%2B8    username: root    passWord: root    type: com.alibaba.druid.pool.DruidDataSource

2. 配置Maven的generator插件

2.1 添加generator插件坐标

<!--配置generator插件--><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.4.0</version><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.12</version></dependency></dependencies><!--指定配置文件的路径--><configuration><configurationFile>${project.basedir}/src/main/resources/generator.xml</configurationFile><verbose>true</verbose><overwrite>true</overwrite></configuration></plugin>

2.2 添加generator配置文件

将文件命名为generator.xml,在src/main/resources中添加。

<?xml version="1.0" encoding="UTF-8"?>    <!DOCTYPE generatorConfiguration            PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"            "Http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">    <generatorConfiguration>        <context id="testTables" targetRuntime="MyBatis3">            <commentGenerator>                <!-- 是否去除自动生成的注释 true:是 : false:否 -->                <property name="suppressAllComments" value="true" />              </commentGenerator>            <!-- 数据库连接信息:驱动类、连接地址、用户名、密码-->            <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"                connectionURL="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEnconding=utf-8&amp;useSSL=false&amp;serverTimezone=UTC"                            userId="root" password="root">            </jdbcConnection>            <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer true,把JDBC DECIMAL                   和 NUMERIC 类型解析为java.math.BigDecimal -->              <javaTypeResolver>                  <property name="forceBigDecimals" value="false" />              </javaTypeResolver>            <!--targetProject:生成PO类的位置-->            <javaModelGenerator targetPackage="com.example.springbootmybatis.pojo"                targetProject=".\src\main\java">                <!--enableSubPackages:是否让schema作为包的后缀-->                <property name="enableSubPackages" value="false" />                <!-- 从数据库返回的值被清理前后的空格 -->                  <property name="trimStrings" value="true" />              </javaModelGenerator>            <!--对应的mapper.xml文件 -->              <sqlMapGenerator targetPackage="com.example.springbootmybatis.mapper"                targetProject=".\src\main\java">                <!--enableSubPackages:是否让schema作为包的后缀-->                <property name="enableSubPackages" value="false" />            </sqlMapGenerator>            <!-- 对应的Mapper接口类文件 -->              <javaClientGenerator type="XMLMAPPER"                                 targetPackage="com.example.springbootmybatis.mapper" targetProject="./src/main/java">                <!--enableSubPackages:是否让schema作为包的后缀-->                <property name="enableSubPackages" value="false" />            </javaClientGenerator>            <!-- 指定数据库表 -->            <table schema="" tableName="users"></table>            <!-- 列出要生成代码的所有表,这里配置的是不生成Example文件 -->  <!--            <table tableName="userinfo" domainObjectName="UserInfoPO"  --><!--                enableCountByExample="false" enableUpdateByExample="false"  --><!--                enableDeleteByExample="false" enableSelectByExample="false"  --><!--                selectByExampleQueryId="false">  --><!--                <property name="useActualColumnNames" value="false" />  --><!--            </table>  -->        </context>      </generatorConfiguration>

2.3 添加generator配置文件的DTD文件

可以在工具栏中的File->Settings中添加,也可以直接在文件中按alt+shift自动添加。


SpringBoot整合Mybatis,解决TypeAliases配置失败的问题如何解决

2.4 运行generator插件生成代码

SpringBoot整合Mybatis,解决TypeAliases配置失败的问题如何解决

SpringBoot整合Mybatis,解决TypeAliases配置失败的问题如何解决

3. 配置资源拷贝插件

3.1 添加资源拷贝插件坐标

<!--配置资源拷贝插件--><resources><resource><directory>src/main/java</directory><includes><include>***.yml</include></includes></resource></resources>

3.2 修改启动类添加@MapperScan注解

package com.example.springbootmybatis;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication@MapperScan("com.example.springbootmybatis.mapper")//指定扫描接口与映射配置文件的包名public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}

4. 其他配置项

mybatis:  # 扫描classpath中mapper目录下的映射配置文件,针对于映射文件放到了resources目录下  mapper-locations: classpath:/mapper@Controllerpublic class PageController {        @RequestMapping("/{page}")    public String showPage(@PathVariable String page){        return page;    }}

2.2 UsersController

package com.example.springbootmybatis.controller;import com.example.springbootmybatis.pojo.Users;import com.example.springbootmybatis.service.UsersService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/user")public class UsersController {    @Autowired    private UsersService usersService;        @PostMapping("/addUser")    public String addUsers(Users users){        try {            this.usersService.addUsers(users);        } catch (Exception e){            e.printStackTrace();            return "error";        }        return "redirect:/ok";    }}

5.3 创建Service 接口实现类Impl

@Servicepublic class UsersServiceImpl implements UsersService {    @Autowired    private UsersMapper usersMapper;    @Override    @Transactional    public void addUsers(Users users) {        this.usersMapper.insert(users);    }}

接口

public interface UsersService {    void addUsers(Users users);}

遇到的错误

Mybatis Generator自动生成,数据库的同名表也会生产的问题

[WARNING] Table Configuration users matched more than one table (test..users,perfORMance_schema..users)

[WARNING] Cannot obtain primary key information from the database, generated objects may be incomplete

在 MyBatis Generator官网 中对这一问题做出了解答。

SpringBoot整合Mybatis,解决TypeAliases配置失败的问题如何解决

翻译如下:Mysql 无法正常支持 SQL catalogs 和 schema。因此,最好不要在 generator 配置文件中指定 catalog 以及schema,仅需指定数据表的名字并在 JDBC URL 中指定数据库即可。如果使用 mysql-connector-java 8.x 版本,generator 会为MySql中信息数据库(sys, information_schema, performance_schema)的表生成代码,若要避免这种操作,请在 JDBC URL 中加入属性“nullCatalogMeansCurrent=true”。

修改配置文件generator.xml

<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"                        connectionURL="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEnconding=utf-8&amp;useSSL=false&amp;serverTimezone=UTC"                        userId="username" password="password">            <property name="nullCatalogMeansCurrent" value="true"/>        </jdbcConnection>

页面出现500错误

SpringBoot整合Mybatis,解决TypeAliases配置失败的问题如何解决

SpringBoot整合Mybatis,解决TypeAliases配置失败的问题如何解决

2020-06-27 14:23:42.459 ERROR 19676 --- [NIO-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Circular view path [addUsers]: would dispatch back to the current handler URL [/addUsers] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)] with root cause

javax.servlet.ServletException: Circular view path [addUsers]: would dispatch back to the current handler URL [/addUsers] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)
at org.springframework.web.servlet.view.InternalResourceView.prepareForRendering(InternalResourceView.java:210) ~[spring-webmvc-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at

解决方法

查了很多博客,但是都不是自己的问题,自己的问题是在pom.xml配置文件中的资源路径中,没有写所有,而是单独的xml和yml配置文件。要加载所有的静态资源。

<!--原本的--><!--资源文件的路径--><resource><directory>src/main/resources</directory><includes><include>***.xml</include></includes><!-- <filtering>false</filtering>--></resource><!--修改后的--><!--资源文件的路径--><resource><directory>src/main/resources</directory><includes><include>**/*.*</include></includes><!-- <filtering>false</filtering>--></resource>

到此,相信大家对“SpringBoot整合Mybatis,解决TypeAliases配置失败的问题如何解决”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: SpringBoot整合Mybatis,解决TypeAliases配置失败的问题如何解决

本文链接: https://www.lsjlt.com/news/297922.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot整合Mybatis,解决TypeAliases配置失败的问题
    问题描述 在应用MyBatis时,使用对象关系映射,将对象和Aliase映射起来。 在Mybatis的文档明确写出,如果你没有明确定义实体类的Aliase,框架会自动将Class N...
    99+
    2022-11-12
  • SpringBoot整合Mybatis,解决TypeAliases配置失败的问题如何解决
    本篇内容主要讲解“SpringBoot整合Mybatis,解决TypeAliases配置失败的问题如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot整合Mybatis,解...
    99+
    2023-06-20
  • SpringBoot怎么解决TypeAliases配置失败问题
    这篇文章主要介绍“SpringBoot怎么解决TypeAliases配置失败问题”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot怎么解决TypeAliases配置失败问题”文章能帮...
    99+
    2023-06-08
  • 如何使用SpringBoot解决TypeAliases配置失败问题
    本文小编为大家详细介绍“如何使用SpringBoot解决TypeAliases配置失败问题”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何使用SpringBoot解决TypeAliases配置失败问题”文章能帮助大家解决疑惑,下面跟着小...
    99+
    2023-07-06
  • 怎么解决springBoot整合Eureka启动失败的问题
    这篇文章主要介绍“怎么解决springBoot整合Eureka启动失败的问题”,在日常操作中,相信很多人在怎么解决springBoot整合Eureka启动失败的问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-06-20
  • springboot多模块化整合mybatis,mapper自动注入失败问题及解决
    目录springboot多模块化整合mybatis,mapper自动注入失败问题解决springboot mapper注入失败的一种原因具体情况是解决办法springboot多模块化...
    99+
    2022-11-12
  • 如何解决php weixin 配置失败问题
    本文操作环境:Windows7系统,PHP7.4版,Dell G3电脑。如何解决php weixin 配置失败问题php 微信公众号开发校验token 提示配置失败<php // //最简单的验证方式 // echo $_GET[&q...
    99+
    2016-12-05
    php 微信
  • SpringBoot整合Mybatis-Plus分页失效的解决
    场景:项目整合mybatis-Plus分页失效,current一直是1,size一直是10,total属性一直是0,数据分页不准 先看官网给的示例:  解决方案是新建m...
    99+
    2023-01-09
    SpringBoot Mybatis-Plus分页失效 SpringBoot Mybatis-Plus分页
  • SpringBoot整合Mybatis LocalDateTime 映射失效的解决
    目录SpringBoot整合Mybatis LocalDateTime映射失效一、概述二、具体原因三、解决办法四、小结一下使用LocalDateTime报错问题解决方法SpringB...
    99+
    2022-11-13
  • 如何解决springboot启动失败的问题
    这篇文章主要介绍如何解决springboot启动失败的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!springboot启动失败的问题springboot版本是1.3.0.M1,连接的mysql版本为8,用spr...
    99+
    2023-06-22
  • springBoot整合Eureka启动失败的解决方案
    其实springBoot 整合Eureka 是比较简单 ,可是我发现很多人整合后会启动不了,我这里列出比较常见的报错的原因 报:A child container failed d...
    99+
    2022-11-12
  • Apache配置PHP启动失败问题如何解决
    这篇“Apache配置PHP启动失败问题如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Apache配置PHP启动失败...
    99+
    2023-07-05
  • 怎么解决php weixin配置失败问题
    小编给大家分享一下怎么解决php weixin配置失败问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!php weixin配置失败的解决办法:1、创建一个PHP...
    99+
    2023-06-22
  • SpringBoot整合Mybatis LocalDateTime 映射失效的解决方法
    今天就跟大家聊聊有关SpringBoot整合Mybatis LocalDateTime 映射失效的解决方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Sprin...
    99+
    2023-06-29
  • springboot项目配置contextpath失效的问题解决
    目录前言现象解决办法前言 最近搭建的springbootboot的网关,配置请求路径,竟然没有生效 现象 配置文件如下: 启动类,控制台打印的结果如下: 我随便更换端口都可以生效...
    99+
    2023-05-15
    springboot配置context path失效 springboot context path
  • 如何解决SpringBoot整合RocketMQ遇到的问题
    本篇内容主要讲解“如何解决SpringBoot整合RocketMQ遇到的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决SpringBoot整合RocketMQ遇到的问题”吧!应用场景...
    99+
    2023-06-20
  • 如何解决SpringBoot整合thymeleaf报错的问题
    这篇文章主要讲解了“如何解决SpringBoot整合thymeleaf报错的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何解决SpringBoot整合thymeleaf报错的问题”吧...
    99+
    2023-06-20
  • springboot指定profiles启动失败问题如何解决
    这篇文章主要讲解了“springboot指定profiles启动失败问题如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“springboot指定profiles启动失败问题如何解决”吧...
    99+
    2023-07-05
  • springboot使用@value注入配置失败的解决
    目录springboot使用@value注入配置文件失败问题解决方向一问题解决方向二@Value注入失败,注入值为null的问题大概就是下面这样结果不知道为什么,@Value注入一直...
    99+
    2022-11-12
  • 常见CentOS配置失败的问题及解决方法
    这篇文章主要讲解了“常见CentOS配置失败的问题及解决方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“常见CentOS配置失败的问题及解决方法”吧!当CentOS配置失败时,也许你对失败...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作