Mybatis-Plus 是一款 Mybatis 動態 SQL 自動注入 Mybatis 增刪改查 CRUD 操做中間件, 減小你的開發週期優化動態維護 XML 實體字段,無入侵全方位 ORM 輔助層讓您擁有更多時間陪家人。php
http://mp.baomidou.com/
https://github.com/baomidou/mybatis-plushtml
目前最新版本:3.0 alpha/beta,升級 JDK 8 + 優化性能 Wrapper 支持 lambda 語法等等, Wrapper 也更改成 QueryWrapper和UpdateWrapper,網上的攻略已經不行了,這裏提供一個新版本的入門採坑手冊,並附上spring-cloud-study-mybatisplus開源學習項目。那麼教程開始了。java
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>3.0-beta</version> </dependency> <!-- mybatis-plus begin --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.0-beta</version> </dependency> <!-- mybatis-plus end --> <!-- Spring Boot Mybatis 依賴 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency>
官方給的配置,有報錯,集中報錯在IDGenerator那邊,因而暫時屏蔽了,mysql是不須要的,若是用在oracle上應該是須要配置,等官方更新demo配置。mysql
server:
port: 3333 servlet: context-path: /mybatisplus tomcat: remote-ip-header: x-forward-for uri-encoding: UTF-8 max-threads: 10 background-processor-delay: 30 spring: http: encoding: force: true charset: UTF-8 application: name: spring-cloud-study-mybatisplus freemarker: request-context-attribute: req #prefix: /templates/ suffix: .html content-type: text/html enabled: true cache: false charset: UTF-8 allow-request-override: false expose-request-attributes: true expose-session-attributes: true expose-spring-macro-helpers: true #template-loader-path: classpath:/templates/ datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.jdbc.Driver driver-class-name: com.mysql.jdbc.Driver platform: mysql url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: root initialSize: 5 minIdle: 5 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 1 testWhileIdle: true testOnBorrow: false testOnReturn: false filters: stat,wall,log4j eureka: client: serviceUrl: defaultZone: http://localhost:8888/eureka/ instance: ip-address: ture mybatis-plus: # 若是是放在src/main/java目錄下 classpath:/com/yourpackage/*/mapper/*Mapper.xml # 若是是放在resource目錄 classpath:/mapper/*Mapper.xml mapper-locations: classpath:/com/softdev/system/demo/entity/*Mapper.xml #實體掃描,多個package用逗號或者分號分隔 typeAliasesPackage: com.softdev.system.*.entity global-config: db-config: #主鍵類型 0:"數據庫ID自增", 1:"用戶輸入ID",2:"全局惟一ID (數字類型惟一ID)", 3:"全局惟一ID UUID"; id-type: UUID #字段策略 0:"忽略判斷",1:"非 NULL 判斷"),2:"非空判斷" field-strategy: NOT_EMPTY #駝峯下劃線轉換 table-underline: true #mp2.3+ 全局表前綴 mp_ #table-prefix: mp_ #刷新mapper 調試神器 #refresh-mapper: true #數據庫大寫下劃線轉換 #capital-mode: true # Sequence序列接口實現類配置 #key-generator: com.baomidou.mybatisplus.incrementer.OracleKeyGenerator #邏輯刪除配置(下面3個配置) logic-delete-value: 1 logic-not-delete-value: 0 #sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector #自定義填充策略接口實現 #meta-object-handler: com.baomidou.mybatisplus.core.handlers.MetaObjectHandler configuration: #配置返回數據庫(column下劃線命名&&返回java實體是駝峯命名),自動匹配無需as(沒開啓這個,SQL須要寫as: select user_id as userId) map-underscore-to-camel-case: true cache-enabled: false #配置JdbcTypeForNull, oracle數據庫必須配置 jdbc-type-for-null: 'null'
Mapper只須要extends BaseMapper<T>
就能夠完美實現增刪改查等一系列操做,很是方便git
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface UserMapper extends BaseMapper<User>{ }
這裏Entity省略setter和getter方法,能夠用lombok的@Data代替github
@Data public class User implements Serializable { private static final long serialVersionUID = 1L; private int id; private String userId; private String userName; private String passWord; private String name; private String tell; private int status; }
這裏隨便寫個init方法和find方法,init就不用說了,初始化一些數據進去,find使用了QueryWrapper構造器,很方便。spring
@RestController @RequestMapping("/user") public class UserController { @Autowired private UserMapper userMapper; @GetMapping("/init") public ApiReturnObject init(){ List<User> userList=new ArrayList<User>(); for (int i = 0; i < 10; i++) { int n=RandomUtil.randomInt(10000,99999)+i; User user=new User(); user.setId(n); user.setName(n+""); user.setPassWord(n+""); user.setStatus(1); user.setUserId(n+""); user.setUserName(n+""); userMapper.insert(user); userList.add(user); user=null; } return ApiReturnUtil.success(userList); } @GetMapping("/find") public ApiReturnObject find(){ IPage<User> userList=userMapper.selectPage( new Page<User>(1, 10), new QueryWrapper<User>().like("name","1") ); return ApiReturnUtil.success(userList.getRecords()); } }
訪問數據初始化 http://127.0.0.1:1111/mybatisplus/user/initsql
{
"errorCode": "00", "errorMessage": "success", "returnObject": [ { "id": 52585, "name": "52585", "passWord": "52585", "status": 1, "userId": "52585", "userName": "52585" }, { "id": 33432, "name": "33432", "passWord": "33432", "status": 1, "userId": "33432", "userName": "33432" } 。。。這裏省略其餘的 ] }
訪問構造器查詢 http://127.0.0.1:3333/mybatisplus/user/find數據庫
{
"errorCode": "00", "errorMessage": "success", "returnObject": [ { "id": 41618, "name": "41618", "passWord": "41618", "status": 1, "userId": "41618", "userName": "41618" }, { "id": 17804, "name": "17804", "passWord": "17804", "status": 1, "userId": "17804", "userName": "17804" } 。。。省略其餘包含1的 ] }
查詢方式 | 說明 |
---|---|
setSqlSelect | 設置 SELECT 查詢字段 |
where | WHERE 語句,拼接 + WHERE 條件 |
and | AND 語句,拼接 + AND 字段=值 |
andNew(已失效) | AND 語句,拼接 + AND (字段=值) |
or | OR 語句,拼接 + OR 字段=值 |
orNew(已失效) | OR 語句,拼接 + OR (字段=值) |
eq | 等於= |
allEq | 基於 map 內容等於= |
ne | 不等於<> |
gt | 大於> |
ge | 大於等於>= |
lt | 小於< |
le | 小於等於<= |
like | 模糊查詢 LIKE |
notLike | 模糊查詢 NOT LIKE |
in | IN 查詢 |
notIn | NOT IN 查詢 |
isNull | NULL 值查詢 |
isNotNull | IS NOT NULL |
groupBy | 分組 GROUP BY |
having | HAVING 關鍵詞 |
orderBy | 排序 ORDER BY |
orderByAsc(有變化,中間有By) | ASC 排序 ORDER BY |
orderByDesc(有變化,中間有By) | DESC 排序 ORDER BY |
exists | EXISTS 條件語句 |
notExists | NOT EXISTS 條件語句 |
between | BETWEEN 條件語句 |
notBetween | NOT BETWEEN 條件語句 |
addFilter | 自由拼接 SQL |
last | 拼接在最後,例如:last(「LIMIT 1」) |
已經在springboot注入mybatis的分頁插件,直接使用Page參數json
IPage<User> userList=userMapper.selectPage(
new Page<User>(1, 10), new QueryWrapper<User>().like("name","1") );
https://github.com/moshowgame/spring-cloud-study
https://github.com/moshowgame/spring-cloud-study/tree/master/spring-cloud-study-mybatisplus