一、mybatis-plus簡介:
Mybatis-Plus(簡稱MP)是一個 Mybatis 的增強工具,在 Mybatis 的基礎上只做增強不做改變,爲簡化開發、提高效率而生。這是官方給的定義,關於mybatis-plus的更多介紹及特性,可以參考mybatis-plus官網。那麼它是怎麼增強的呢?其實就是它已經封裝好了一些crud方法,我們不需要再寫xml了,直接調用這些方法就行,就類似於JPA。
spring整合mybatis-plus,將mybatis的依賴換成mybatis-plus的依賴,再把sqlSessionFactory換成mybatis-plus的即可
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.14.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.3.14.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.3.14.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>1.7.3</version>
</dependency>
<!-- 配置mybatis的sqlSessionFactory -->
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 自動掃描mappers.xml文件 -->
<property name="mapperLocations" value="classpath:com/lf/entity/xml/*.xml"></property>
<!-- mybatis配置文件 -->
<property name="configLocation" value="classpath:mybatis/config.xml"></property>
</bean>
<!-- DAO接口所在包名,Spring會自動查找其下的類 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.lf.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
增加mybatis-config.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 這個配置使全局的映射器啓用或禁用緩存 -->
<setting name="cacheEnabled" value="true"/>
<!-- 全局啓用或禁用延遲加載。當禁用時,所有關聯對象都會即時加載 -->
<setting name="lazyLoadingEnabled" value="false"/>
<setting name="multipleResultSetsEnabled" value="true"/>
<setting name="useColumnLabel" value="true"/>
<setting name="logImpl" value="STDOUT_LOGGING" />
<setting name="defaultExecutorType" value="REUSE"/>
<setting name="defaultStatementTimeout" value="25000"/>
<setting name="aggressiveLazyLoading" value="true"/>
</settings>
<!-- 別名 -->
<typeAliases>
<package name="com.lf.entity"/>
</typeAliases>
</configuration>
entity:需要加@TableName和@TableField進行映射
@TableName("goods_category") public class GoodsCategory extends BaseEntity { @TableField(exist = false) private static final long serialVersionUID = 1L; /** id 最多 6 位數值,且從 100001 開始分配。 */ @Getter @Setter @TableId(type = IdType.AUTO) private Long id; /** 添加時間 */ @Getter @Setter private Date add_time; /** 刪除狀態,默認值:0 */ @Getter @Setter private Boolean delete_status; /** 分類名稱,默認值:' */ @Getter @Setter private String name; /** 分類圖片ID,只有一級分類纔有分類圖標。引用 image(圖片表)id,默認值:0 */ @Getter @Setter private Long image_id; /** 分類圖片URL,只有一級分類纔有分類圖標,默認值:' */ @Getter @Setter private String image_url; /** 上一級節點ID,默認值:0 */ @Getter @Setter private Long pid; /** 上級分類id路徑是由所有的父節點id組成,使用逗號進行分隔。例如: 1,2,默認值:' */ @Getter @Setter private String parent_id_path; /** 1|一級分類; 2|二級分類; 3|三級分類,默認值:1 */ @Getter @Setter private Integer level; /** 序列,默認值:0 */ @Getter @Setter private Integer sequence; } dao:需要繼承AutoMapper
public interface GoodsCategoryMapper extends AutoMapper<GoodsCategory> { }
個人覺得是mybatis-plus是優化了sql單表的操作