mybatis常見庫及問題彙總
orm框架的本質是簡化程式設計中運算元據庫的編碼,發展到現在基本上就剩兩家了,
一個是宣稱可以不用寫一句SQL的hibernate,
一個是可以靈活除錯動態sql的mybatis,
兩者各有特點,在企業級系統開發中可以根據需求靈活使用。
發現一個有趣的現象:
傳統企業大都喜歡使用hibernate,網際網路行業通常使用mybatis。
hibernate特點就是所有的sql都用Java程式碼來生成,不用跳出程式去寫(看)sql,有著程式設計的完整性,
發展到最頂端就是spring data jpa這種模式了,基本上根據方法名就可以生成對應的sql了。
mybatis初期使用比較麻煩,需要各種配置檔案、實體類、dao層對映關聯、還有一大推其它配置。
當然mybatis也發現了這種弊端,
初期開發了generator可以根據表結果自動生產實體類、配置檔案和dao層程式碼,可以減輕一部分開發量;
後期也進行了大量的優化可以使用註解了,自動管理dao層和配置檔案等,發展到最頂端就是今天要講的這種模式了,
mybatis-spring-boot-starter就是springboot+mybatis可以完全註解不用配置檔案,也可以簡單配置輕鬆上手。
參考:
springboot-mybatis多資料來源的兩種整合方法
springboot(七):springboot+mybatis多資料來源最簡解決方案
springboot(五):spring data jpa的使用
springboot(十五):springboot+jpa+thymeleaf增刪改查示例
一、mybatis常見庫:
MyBatis Generator (MBG)
自動生成dao類mapper,mapper.xml和對應資料庫欄位的entity實體類
PageHelper
用於分頁
通用mapper,
極其方便的使用MyBatis單表的增刪改查
MyBatis-Plus(MP)
是一個 MyBatis 的增強工具,
在 MyBatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生。
二、mybatis整合demo:
原生mybatis可以使用xml,也可註解形式來運算元據庫。
原生:
庫的使用:
mybatis-generator + 通用Mapper的使用
其他:關於jpa的demo:
三、mybatis常見問題:
問題一:
org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'com.example.demo.DemoApplicationTests':
Unsatisfied dependency expressed through field 'userMapper';
nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type 'com.example.demo.dao.UserMapper' available:
expected at least 1 bean which qualifies as autowire candidate. Dependency annotations:
{@org.springframework.beans.factory.annotation.Autowired(required=true)}
原因:找不到mapper的Java檔案,缺少@Mapper或者@MapperScan(“Mapper包名”),新增即可,如下:
@Mapper
public interface UserMapper {
int deleteByPrimaryKey(Integer id);
int insert(User record);
User selectByPrimaryKey(Integer id);
List<User> selectAll();
int updateByPrimaryKey(User record);
}
或
@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
注意:只要有mapper的Java檔案就需要配置。
問題二:
org.apache.ibatis.binding.BindingException:
Invalid bound statement (not found): com.example.demo.dao.UserMapper.selectByPrimaryKey
//或
org.apache.ibatis.binding.BindingException:
Invalid bound statement (not found): com.example.demo.dao.BookDao.getAll
原因:找不到mapper的xml檔案,【缺少】以下配置或者【路徑錯誤】:
# mapper
mybatis.mapper-locations=classpath:mapper/*.xml
注意:只要有mapper的xml檔案就需要配置。
問題三
java.sql.SQLException:
The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.
You must configure either the server or JDBC driver (via the serverTimezone configuration property)
to use a more specifc time zone value if you want to utilize time zone support.
資料庫配置需要新增時區:&serverTimezone=GMT,如下:
# database
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mydb?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT
spring.datasource.username=root
spring.datasource.password=admin
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
問題四
### Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation:
Data truncation: Out of range value for column 'id' at row 1
; Data truncation: Out of range value for column 'id' at row 1;
nested exception is com.mysql.cj.jdbc.exceptions.MysqlDataTruncation:
Data truncation: Out of range value for column 'id' at row 1] with root cause
將欄位的型別由int轉為BIGINT,如下:
ALTER TABLE user MODIFY id BIGINT(20) AUTO_INCREMENT;
相關文章
- MyBatis學習總結(24)——Mybatis常見問題彙總MyBatis
- Redis常見問題彙總Redis
- Java 常見問題彙總Java
- Bootstrap常見問題彙總boot
- mount命令詳解及常見問題彙總
- 面試寶典:15道MyBatis 常見面試題彙總及答案MyBatis面試題
- 代理IP常見問題彙總
- Redis Manager 常見問題彙總Redis
- SpringMvc常見問題彙總SpringMVC
- JuniperNetScreen常見問題彙總
- Java常見面試題及答案彙總Java面試題
- Vue專案常見問題彙總Vue
- MyBatis常見問題MyBatis
- VNC常用操作及常見問題解決辦法彙總VNC
- Java程式設計常見問題彙總Java程式設計
- Android Studio 常見問題彙總Android
- 安裝PHP常見問題彙總薦PHP
- Java程式設計常見問題彙總(一)Java程式設計
- 新手雲伺服器租用常見問題彙總伺服器
- 雲端計算 常見問題案例彙總情況
- Oracle RAC+DG巡檢常見問題彙總(一)Oracle
- 物聯網平臺常見問題與答案彙總
- JavaScript常見面試題彙總(含答案)JavaScript面試題
- 常見問題總結
- Mybatis基礎:常見問題與FAQMyBatis
- Linux常見問題彙總,比較適合菜鳥哈Linux
- Win7系統上常見IE 10問題彙總Win7
- mybatis常見面試題MyBatis面試題
- 【彙總】Python爬蟲常見面試題!Python爬蟲面試題
- mysql常見問題總結MySql
- Vue 常見問題總結Vue
- TCP常見問題總結TCP
- GeoServer 常見問題總結Server
- Xlua常見API彙總API
- 常見問題及解決
- 開發微信小程式之HTTPS報錯常見問題彙總及解決方法微信小程式HTTP
- 蓮花池--MyBatis系列之面試常見問題MyBatis面試
- 分享視訊直播常見問題與解決辦法彙總