ssm如何整合mybatis-plus

說明

之前使用ssm時,使用mybatis,已經幫助我們簡化了很多持久化操作,但是仍然要自己寫很多sql語句,Mybatis-plus的有點就不多介紹了,其是國內團隊苞米豆在MyBatis基礎上開發的增強框架,擴展了一些功能,以提高效率。引入 Mybatis-Plus 不會對現有的 Mybatis 構架產生任何影響,而且 MyBatis-plus 支持所有 Mybatis 原生的特性。
這裏結合自己遇到的問題總結一下。

步驟

刪除原來的mybatis依賴

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>${mybatis.version}</version>
</dependency>
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis-spring</artifactId>
  <version>1.3.0</version>
</dependency>

引入mybatis-plus依賴

mybatis-plus包含了上面兩個依賴。當然你使用的是別的mybatis增強組件如:通用tk.mapper,操作也是一樣。

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.0.5</version>
</dependency>

這一步很重要

如果只做了上面兩步,在執行時會拋出這個異常org.apache.ibatis.binding.BindingException: Invalid bound statement (not found),使用mybatis是拋出這個異常,我們回去查看對應的mapper.xml,檢查方法是否和mapper接口寫的對應,檢查語法錯誤。但是使用mybatis-plus,是不用我們編寫sql語句的,去哪裏檢查,這就很蒙,但是想想其實是配置的問題。
(看看,又是配置,這也許就是springboot火的原因了,人家是自動配置 。)

Exception in thread "xxxxx" org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): xxxx.xxxxx.xxxx.xxx.xxxxx(這是我的包名)
	at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:227)
	at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:49)
	at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:65)
	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:58)
	at com.sun.proxy.$Proxy21.selectList(Unknown Source)
	at serve.Demo.testService(Demo.java:38)
	at Test.main(Test.java:18)

因爲引入了新的mybatis-plus,所以配置中必須使用這個組件下的SqlSessionFactoryBean對象,這兩個的SqlSessionFactoryBean對象肯定是不一樣的。這裏如果不配置,你的mybatis-plus是可以編譯但是無法使用的。
這是原來mybatis的SqlSessionFactoryBean對象

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

這是mybatis-plus的MybatisSqlSessionFactoryBean對象,我們應該使用這個。

 <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">

mybatis-plus

以下內容
感謝作者:小院看客
鏈接:https://www.jianshu.com/p/8556c8468241
來源:簡書


1)依賴少:僅僅依賴 Mybatis 以及 Mybatis-Spring 。

2)損耗小:啓動即會自動注入基本 CURD,性能基本無損耗,直接面向對象操作 。

3)預防Sql注入:內置 Sql 注入剝離器,有效預防Sql注入攻擊 。

4)通用CRUD操作:內置通用 Mapper、通用 Service,僅僅通過少量配置即可實現單表大部分 CRUD 操作,更有強大的條件構造器,滿足各類使用需求 。

5)多種主鍵策略:支持多達4種主鍵策略(內含分佈式唯一ID生成器),可自由配置,完美解決主鍵問題 。

6)支持熱加載:Mapper 對應的 XML 支持熱加載,對於簡單的 CRUD 操作,甚至可以無 XML 啓動

7)支持ActiveRecord:支持 ActiveRecord 形式調用,實體類只需繼承 Model 類即可實現基本 CRUD 操作

8)支持代碼生成:採用代碼或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 層代碼(生成自定義文件,避免開發重複代碼),支持模板引擎、有超多自定義配置等。

9)支持自定義全局通用操作:支持全局通用方法注入( Write once, use anywhere )。

10)支持關鍵詞自動轉義:支持數據庫關鍵詞(order、key…)自動轉義,還可自定義關鍵詞 。

11)內置分頁插件:基於 Mybatis 物理分頁,開發者無需關心具體操作,配置好插件之後,寫分頁等同於普通List查詢。

12)內置性能分析插件:可輸出 Sql 語句以及其執行時間,建議開發測試時啓用該功能,能有效解決慢查詢 。

13)內置全局攔截插件:提供全表 delete 、 update 操作智能分析阻斷,預防誤操作。

14)默認將實體類的類名查找數據庫中的表,使用@TableName(value=“table1”)註解指定表名,@TableId指定表主鍵,若字段與表中字段名保持一致可不加註解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章