栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot整合mybatis常见问题(小结)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot整合mybatis常见问题(小结)

Spring中常见问题

1.NoSuchBeanDefinitionException

2.'..Service' that could not be found service找不到

3.port 80 was already in use 端口号被占用

4.TemplateInputException 模板解析异常或找不到模板

  • 1.检查模板所在的目录是否与配置的前缀目录相同
  • 2.检查返回的模板是否存在,返回值类型是否一致
  • 3.检查配置前缀时是否以"/"斜杠结尾
  • 4.控制层的url与客户端的ur是否一致

5. 404异常 访问资源不存在

6. 500异常 500异常要查看控制台

Mybatis中常见问题

1.springboot中添加maven依赖

2.BadSqlGrammarException 错误的sql语句

3.BindingException 绑定异常

  • 1.检查映射文件的路径配置与实际存储位置是否一致
  • 2.检查dao接口的类名是否与映射文件的namespace值相同(不能有空格)
  • 3.检查dao接口中的方法名是否在映射文件中有对应的id

4.IllegalArgumentException

原因:同样说我sql映射是否出现了重复性的定义(例如:分别以注解方式和xml配置文件方式进行定义,也就是说在同一个namespace下出现了重复的元素id)

5.SAXParseException xml解析问题

补充 问题一:Mapper类 autowired失败

原因:扫描mapper包没有配置或配置不正确

解决:

方案一:

1. 启动类加@MapperScan("mapperPackagePath")

方案二:

增加配置类:

package com.yx.readingwebsite.config;
 
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 

 
 
@Configuration
public class MyBatisMapperScannerConfig {
  @Bean
  public MapperScannerConfigurer getMapperScannerConfigurer(){
    MapperScannerConfigurer msc = new MapperScannerConfigurer();
    msc.setSqlSessionFactoryBeanName("sqlSessionFactory");
    msc.setbasePackage("com.yx.readingwebsite.mapper");
    return msc;
  }
}
问题二:Mapper扫描成功后,继续报错,org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

原因:xml的mapper SQL 和 Mapper接口没有绑定

解决:

方案一:全局配置文件application.yml增加mybatis配置【xml mapper包在resource目录下】

mybatis:
 mapper-locations: classpath:mapper
 
@Configuration //配置类
@EnableTransactionManagement //允许使用事务管理器
public class MyBatisModelConfig implements TransactionManagementConfigurer {
 
  @Autowired
  private DataSource dataSource;
 
  @Bean(name = "sqlSessionFactory")
  public SqlSessionFactory getSqlSessionFactory(){
    SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
    ssfb.setDataSource(dataSource); //设置数据源
    ssfb.setTypeAliasesPackage("com.yx.readingwebsite.model");  //设置扫描模型包【po】
    try {
      Resource[] resources = new PathMatchingResourcePatternResolver()
   .getResources("classpath:mapper
 
@Configuration //配置类
@EnableTransactionManagement //允许使用事务管理器
public class MyBatisModelConfig implements TransactionManagementConfigurer {
 
  @Autowired
  private DataSource dataSource;
 
  @Bean(name = "sqlSessionFactory")
  public SqlSessionFactory getSqlSessionFactory(){
    SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
    ssfb.setDataSource(dataSource); //设置数据源
    ssfb.setTypeAliasesPackage("com.yx.readingwebsite.model");  //设置扫描模型包【po】
    try {
      Resource[] resources = new PathMatchingResourcePatternResolver()
   .getResources("classpath:mapper
 
 
@Configuration
@AutoConfigureAfter(MyBatisModelConfig.class)
public class MyBatisMapperScannerConfig {
  @Bean
  public MapperScannerConfigurer getMapperScannerConfigurer(){
    MapperScannerConfigurer msc = new MapperScannerConfigurer();
    msc.setSqlSessionFactoryBeanName("sqlSessionFactory");
    msc.setbasePackage("com.yx.readingwebsite.mapper");
    return msc;
  }
}

方案二:配置文件 application.yml

spring:
 datasource:
  url: jdbc:mysql://127.0.0.1:3306/readingWebsite?useUnicode=true&characterEncoding=utf-8
  username:
  password:
  driver-class-name: com.mysql.jdbc.Driver
  max-active: 100
  max-idle: 10
  max-wait: 10000
  default-auto-commit: false
  time-between-eviction-runs-millis: 30000
  min-evictable-idle-time-millis: 30000
  test-while-idle: true
  test-on-borrow: true
  test-on-return: true
  validation-query: SELECT 1
 
mybatis:
 mapper-locations: classpath:mapper/*.xml
package com.yx.readingwebsite;
 
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 
@SpringBootApplication
@MapperScan("com.yx.readingwebsite")
public class ReadingWebsiteApplication {
 
  public static void main(String[] args) {
    SpringApplication.run(ReadingWebsiteApplication.class, args);
  }
 
}

到此这篇关于SpringBoot整合mybatis常见问题(小结)的文章就介绍到这了,更多相关SpringBoot整合mybatis问题内容请搜索考高分网以前的文章或继续浏览下面的相关文章希望大家以后多多支持考高分网!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/129718.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号