亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot整合mybatis常見問題(小結(jié))

 更新時(shí)間:2020年12月25日 09:54:27   作者:哇啦哇啦哇  
這篇文章主要介紹了SpringBoot整合mybatis常見問題(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

Spring中常見問題

1.NoSuchBeanDefinitionException

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

3.port 80 was already in use 端口號(hào)被占用

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

  • 1.檢查模板所在的目錄是否與配置的前綴目錄相同
  • 2.檢查返回的模板是否存在,返回值類型是否一致
  • 3.檢查配置前綴時(shí)是否以"/"斜杠結(jié)尾
  • 4.控制層的url與客戶端的ur是否一致

5. 404異常 訪問資源不存在

6. 500異常 500異常要查看控制臺(tái)

Mybatis中常見問題

1.springboot中添加maven依賴

2.BadSqlGrammarException 錯(cuò)誤的sql語句

3.BindingException 綁定異常

  • 1.檢查映射文件的路徑配置與實(shí)際存儲(chǔ)位置是否一致
  • 2.檢查dao接口的類名是否與映射文件的namespace值相同(不能有空格)
  • 3.檢查dao接口中的方法名是否在映射文件中有對(duì)應(yīng)的id

4.IllegalArgumentException

原因:同樣說我sql映射是否出現(xiàn)了重復(fù)性的定義(例如:分別以注解方式和xml配置文件方式進(jìn)行定義,也就是說在同一個(gè)namespace下出現(xiàn)了重復(fù)的元素id)

5.SAXParseException xml解析問題

補(bǔ)充

問題一:Mapper類 autowired失敗

原因:掃描mapper包沒有配置或配置不正確

解決:

方案一:

1. 啟動(dòng)類加@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;
 
/**
 * MapperScannerConfigurer 配置DAO層
 */
 
 
@Configuration
public class MyBatisMapperScannerConfig {
  @Bean
  public MapperScannerConfigurer getMapperScannerConfigurer(){
    MapperScannerConfigurer msc = new MapperScannerConfigurer();
    msc.setSqlSessionFactoryBeanName("sqlSessionFactory");
    msc.setBasePackage("com.yx.readingwebsite.mapper");
    return msc;
  }
}

問題二:Mapper掃描成功后,繼續(xù)報(bào)錯(cuò),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/*.xml

方案二:增加配置類

package com.yx.readingwebsite.config;
 
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.annotation.TransactionManagementConfigurer;
 
import javax.sql.DataSource;
 
/**
 * 配置MyBatis,引入數(shù)據(jù)源,sqlSessionFactory,sqlSessionTemplate,事務(wù)管理器
 */
 
@Configuration //配置類
@EnableTransactionManagement //允許使用事務(wù)管理器
public class MyBatisModelConfig implements TransactionManagementConfigurer {
 
  @Autowired
  private DataSource dataSource;
 
  @Bean(name = "sqlSessionFactory")
  public SqlSessionFactory getSqlSessionFactory(){
    SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
    ssfb.setDataSource(dataSource); //設(shè)置數(shù)據(jù)源
    ssfb.setTypeAliasesPackage("com.yx.readingwebsite.model");  //設(shè)置掃描模型包【po】
    try {
      Resource[] resources = new PathMatchingResourcePatternResolver()
          .getResources("classpath:mapper/*.xml");
      ssfb.setMapperLocations(resources);
      return ssfb.getObject();
    } catch (Exception e) {
      e.printStackTrace();
      throw new RuntimeException();
    }
  }
 
  @Bean  //獲得Session 模板,從而獲得Session
  public SqlSessionTemplate getSqlSessionTemplate(SqlSessionFactory sqlSessionFactory){
    return new SqlSessionTemplate(sqlSessionFactory);
  }
 
  @Override  //事務(wù)管理器
  public PlatformTransactionManager annotationDrivenTransactionManager() {
    return new DataSourceTransactionManager(dataSource);
  }
}

需要注意的是,xml版的mybatis一定要在sqlSessionFactory中指定mapperLocations,即下圖

總結(jié):
兩種配置方案。方案一,使用配置類;方案二,使用配置文件。完整配置如下:

方案一:配置類

package com.yx.readingwebsite.config;
 
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.annotation.TransactionManagementConfigurer;
 
import javax.sql.DataSource;
 
/**
 * 配置MyBatis,引入數(shù)據(jù)源,sqlSessionFactory,sqlSessionTemplate,事務(wù)管理器
 */
 
@Configuration //配置類
@EnableTransactionManagement //允許使用事務(wù)管理器
public class MyBatisModelConfig implements TransactionManagementConfigurer {
 
  @Autowired
  private DataSource dataSource;
 
  @Bean(name = "sqlSessionFactory")
  public SqlSessionFactory getSqlSessionFactory(){
    SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
    ssfb.setDataSource(dataSource); //設(shè)置數(shù)據(jù)源
    ssfb.setTypeAliasesPackage("com.yx.readingwebsite.model");  //設(shè)置掃描模型包【po】
    try {
      Resource[] resources = new PathMatchingResourcePatternResolver()
          .getResources("classpath:mapper/*.xml");
      ssfb.setMapperLocations(resources);
      return ssfb.getObject();
    } catch (Exception e) {
      e.printStackTrace();
      throw new RuntimeException();
    }
  }
 
  @Bean  //獲得Session 模板,從而獲得Session
  public SqlSessionTemplate getSqlSessionTemplate(SqlSessionFactory sqlSessionFactory){
    return new SqlSessionTemplate(sqlSessionFactory);
  }
 
  @Override  //事務(wù)管理器
  public PlatformTransactionManager annotationDrivenTransactionManager() {
    return new DataSourceTransactionManager(dataSource);
  }
}
package com.yx.readingwebsite.config;
 
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
/**
 * MapperScannerConfigurer 配置DAO層
 */
 
 
@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);
  }
 
}

到此這篇關(guān)于SpringBoot整合mybatis常見問題(小結(jié))的文章就介紹到這了,更多相關(guān)SpringBoot整合mybatis問題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Feign調(diào)用服務(wù)各種坑的處理方案

    Feign調(diào)用服務(wù)各種坑的處理方案

    這篇文章主要介紹了Feign調(diào)用服務(wù)各種坑的處理方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 詳解lambda表達(dá)式foreach性能分析

    詳解lambda表達(dá)式foreach性能分析

    這篇文章主要介紹了詳解lambda表達(dá)式foreach性能分析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 若依 MyBatis改為MyBatis-Plus的實(shí)現(xiàn)步驟

    若依 MyBatis改為MyBatis-Plus的實(shí)現(xiàn)步驟

    本文主要介紹了若依 MyBatis改為MyBatis-Plus的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • Windows下使用Graalvm將Springboot應(yīng)用編譯成exe大大提高啟動(dòng)和運(yùn)行效率(推薦)

    Windows下使用Graalvm將Springboot應(yīng)用編譯成exe大大提高啟動(dòng)和運(yùn)行效率(推薦)

    這篇文章主要介紹了Windows下使用Graalvm將Springboot應(yīng)用編譯成exe大大提高啟動(dòng)和運(yùn)行效率,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • Java 虛擬機(jī)(JVM)之基本概念詳解

    Java 虛擬機(jī)(JVM)之基本概念詳解

    下面小編就為大家?guī)硪黄狫ava 虛擬機(jī)(JVM)之基本概念詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • java中List集合及其遍歷詳解

    java中List集合及其遍歷詳解

    這篇文章主要介紹了java中List集合及其遍歷詳解的相關(guān)資料,需要的朋友可以參考下
    2015-07-07
  • 在deepin上如何使用Fleet開發(fā)SpringBoot?3.0.0項(xiàng)目

    在deepin上如何使用Fleet開發(fā)SpringBoot?3.0.0項(xiàng)目

    這篇文章主要介紹了在deepin上使用Fleet開發(fā)SpringBoot?3.0.0項(xiàng)目的過程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • Java設(shè)計(jì)模式之命令模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java設(shè)計(jì)模式之命令模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    命令模式就是對(duì)命令的封裝,下文中給大家介紹了命令模式類圖中的基本結(jié)構(gòu),對(duì)java設(shè)計(jì)模式之命令模式相關(guān)知識(shí)感興趣的朋友一起看看吧
    2017-08-08
  • 在Spring Boot中加載初始化數(shù)據(jù)的實(shí)現(xiàn)

    在Spring Boot中加載初始化數(shù)據(jù)的實(shí)現(xiàn)

    這篇文章主要介紹了在Spring Boot中加載初始化數(shù)據(jù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 淺談MySQL中是如何實(shí)現(xiàn)事務(wù)提交和回滾的

    淺談MySQL中是如何實(shí)現(xiàn)事務(wù)提交和回滾的

    本文主要介紹了MySQL中是如何實(shí)現(xiàn)事務(wù)提交和回滾的,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評(píng)論