MyBatis-Plus(簡稱 MP)是一個 MyBatis 的加強工具,在 MyBatis 的基礎上只作加強不作改變,爲簡化開發、提升效率而生。html
mysql 、 mariadb 、 oracle 、 db2 、 h2 、 hsql 、 sqlite 、 postgresql 、 sqlserverjava
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.1.tmp</version> </dependency>
spring: datasource: type: com.alibaba.druid.pool.DruidDataSource druid: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://rm-bp12i2og5710db9v75o.mysql.rds.aliyuncs.com:3306/cg_engine_test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&rewriteBatchedStatements=true&useSSL=false&serverTimezone=Asia/Shanghai username: account01 password: Hzga@1234
# mybatis-plus相關配置 mybatis-plus: # xml掃描,多個目錄用逗號或者分號分隔(告訴 Mapper 所對應的 XML 文件位置) mapper-locations: classpath:mybatis/*.xml # 如下配置均有默認值,能夠不設置 global-config: db-config: #主鍵類型 AUTO:"數據庫ID自增" INPUT:"用戶輸入ID",ID_WORKER:"全局惟一ID (數字類型惟一ID)", UUID:"全局惟一ID UUID"; id-type: auto #字段策略 IGNORED:"忽略判斷" NOT_NULL:"非 NULL 判斷") NOT_EMPTY:"非空判斷" field-strategy: NOT_EMPTY #數據庫類型 db-type: MYSQL #邏輯刪除標識 logic-delete-value: 0 #非邏輯刪除 logic-not-delete-value: 1 configuration: # 是否開啓自動駝峯命名規則映射:從數據庫列名到Java屬性駝峯命名的相似映射 map-underscore-to-camel-case: true # 若是查詢結果中包含空值的列,則 MyBatis 在映射的時候,不會映射這個字段 call-setters-on-nulls: true # 這個配置會將執行的sql打印出來,在開發或測試的時候能夠用 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #設置別名 type-aliases-package: com.aliyun.mybatis.dao
@MapperScan
註解,掃描 Mapper 文件夾@SpringBootApplication @MapperScan(basePackages = {"com.aliyun.mybatis.dao"}) public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
@Data @AllArgsConstructor @ToString @EqualsAndHashCode //指定對應的映射表 @TableName("user_info") public class UserInfo { //指定主鍵類型 @TableId(type = IdType.AUTO) private Long id; private String userId; private Long tbUserId; private String userName; private String userMobile; private String address; private Date gmtCreate; private Date gmtModified; private Double totalCharityHours; private Integer userRank; private String avatar; }
@Mapper @Repository public interface UserInfoDao extends BaseMapper<UserInfo> { }
@RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = DemoApplication.class) class DemoApplicationTests { @Autowired private UserInfoDao userInfoDao; @Test public void test() { UserInfo userInfo = userInfoDao.selectById(11); System.out.println(); } }
@TableField(fill = FieldFill.INSERT) // 建立時間只在添加是填充 private Date gmtCreate; @TableField(fill = FieldFill.INSERT_UPDATE) // 更新時間在添加和更新時都填充 private Date gmtModified;
@Component public class MetaObjectHandlerConfig implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { setFieldValByName("gmtCreate", new Date(), metaObject); setFieldValByName("gmtModified", new Date(), metaObject); } @Override public void updateFill(MetaObject metaObject) { this.setFieldValByName("gmtModified",new Date(), metaObject); } }
這裏主要介紹的是springboot的.yml配置文件的方式,這部分的配置主體結構大概以下:mysql
mybatis-plus: ...... configuration: ...... global-config: ...... db-config: ......
那咱們也把分爲4個部分來介紹git
mybatis-plus: # Mybatis的核心配置文件位置 config-location: classpath:mybatis-config.xml # 指定外部化 MyBatis Properties 配置,經過該配置能夠抽離配置,實現不一樣環境的配置部署 configuration-properties: classpath:mybatis-config.properties # Mapper對應的xml文件掃描,多個目錄用逗號或者分號分隔 mapper-locations: classpath*:/mapper/**/*Mapper.xml # MyBaits 別名包掃描路徑,經過該屬性能夠給包中的類註冊別名,註冊後在 Mapper 對應的 XML 文件中能夠直接使用類名,而不用使用全限定的類名(即 XML 中調用的時候不用包含包名) type-aliases-package: com.ck.** # 該配置請和 typeAliasesPackage 一塊兒使用,若是配置了該屬性,則僅僅會掃描路徑下以該類做爲父類的域對象 type-aliases-super-type: java.lang.Object # 枚舉類 掃描路徑,若是配置了該屬性,會將路徑下的枚舉類進行注入,讓實體類字段可以簡單快捷的使用枚舉屬性 type-enums-package: com.baomidou.mybatisplus.samples.quickstart.enums # 啓動時是否檢查 MyBatis XML 文件的存在,默認不檢查 check-config-location: true # SIMPLE:該執行器類型不作特殊的事情,爲每一個語句的執行建立一個新的預處理語句,REUSE:該執行器類型會複用預處理語句,BATCH:該執行器類型會批量執行全部的更新語句 default-executor-type: REUSE
configuration: # 配置返回數據庫(column下劃線命名&&返回java實體是駝峯命名),自動匹配無需as(沒開啓這個,SQL須要寫as: select user_id as userId) map-underscore-to-camel-case: true # 全局地開啓或關閉配置文件中的全部映射器已經配置的任何緩存,默認爲 true cache-enabled: false # 懶加載 aggressive-lazy-loading: true # NONE:不啓用自動映射 PARTIAL:只對非嵌套的 resultMap 進行自動映射 FULL:對全部的 resultMap 都進行自動映射 auto-mapping-behavior: partial # NONE:不作任何處理 (默認值)WARNING:以日誌的形式打印相關警告信息 FAILING:看成映射失敗處理,並拋出異常和詳細信息 auto-mapping-unknown-column-behavior: none # 若是查詢結果中包含空值的列,則 MyBatis 在映射的時候,不會映射這個字段 call-setters-on-nulls: true # 配置JdbcTypeForNull, oracle數據庫必須配置 jdbc-type-for-null: "null" # 這個配置會將執行的sql打印出來,在開發或測試的時候能夠用 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config: # 是否控制檯 print mybatis-plus 的 LOGO banner: true # 機器 ID 部分(影響雪花ID) # worker-id: # 數據標識 ID 部分(影響雪花ID)(workerId 和 datacenterId 一塊兒配置才能從新初始化 Sequence) # datacenter-id:
db-config: #表名下劃線命名默認true table-underline: true #id類型 id-type: auto #是否開啓大寫命名,默認不開啓 #capital-mode: false #邏輯已刪除值,(邏輯刪除下有效) 須要注入邏輯策略LogicSqlInjector 以@Bean方式注入 logic-not-delete-value: 0 #邏輯未刪除值,(邏輯刪除下有效) logic-delete-value: 1 #數據庫類型 這個屬性沒什麼用 數據庫類型,默認值爲未知的數據庫類型 若是值爲OTHER,啓動時會根據數據庫鏈接 url 獲取數據庫類型;若是不是OTHER則不會自動獲取數據庫類型 db-type: mysql # IGNORED 忽略判斷 NOT_NULL 非NULL判斷 NOT_EMPTY 非空判斷(只對字符串類型字段,其餘類型字段依然爲非NULL判斷) DEFAULT 追隨全局配置 相似的還有update-strategy、select-strategy等 insert-strategy: not_null