MyBatis的加強方案確實有很多,甚至有種感受是如今若是隻用 「裸MyBatis」,不來點加強插件都很差意思了。這不,在上一篇文章《Spring Boot項目利用MyBatis Generator進行數據層代碼自動生成》 中嘗試了一下 MyBatis Generator。此次來點更加先進的 Mybatis-Plus,SQL語句都不用寫了,分頁也是自動完成,嗯,真香!java
CREATE TABLE tbl_user ( user_id BIGINT(20) NOT NULL COMMENT '主鍵ID', user_name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', user_age INT(11) NULL DEFAULT NULL COMMENT '年齡', PRIMARY KEY (user_id) ) charset = utf8;
工程搭建 (不贅述了)mysql
依賴引入spring
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.9</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> <version>8.0.12</version> </dependency>
主要是 Mybatis Plus、Lombok(不知道Lombok幹嗎的?能夠看這裏)、Druid鏈接池 等依賴。sql
項目配置數據庫
mybatis-plus: mapper-locations: classpath:/mapper/*Mapper.xml
新增 MyBatis Plus配置類mybatis
@Configuration @MapperScan("cn.codesheep.springbtmybatisplus.mapper") public class MyBatisConfig { }
看到沒,幾乎零配置啊,下面就能夠寫業務邏輯了app
@Data @TableName("tbl_user") public class User { @TableId(value = "user_id") private Long userId; private String userName; private Integer userAge; }
public interface UserMapper extends BaseMapper<User> { }
這裏啥接口方法也不用寫,就能夠實現增刪改查了!ide
Service接口:spring-boot
public interface UserService extends IService<User> { int insertUser( User user ); int updateUser( User user ); int deleteUser( User user ); User findUserByName( String userName ); IPage getUserPage( Page page, User user ); }
Service實現:學習
@Service @AllArgsConstructor public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { // 增 @Override public int insertUser(User user) { return baseMapper.insert( user ); } // 改 @Override public int updateUser(User user) { return baseMapper.updateById( user ); } // 刪 @Override public int deleteUser(User user) { return baseMapper.deleteById( user.getUserId() ); } // 查 @Override public User findUserByName( String userName ) { return baseMapper.getUserByName( userName ); } }
@RestController @RequestMapping("/user") public class UserContorller { @Autowired private UserService userService; // 增 @PostMapping( value = "/insert") public Object insert( @RequestBody User user ) { return userService.insertUser( user ); } // 改 @PostMapping( value = "/update") public Object update( @RequestBody User user ) { return userService.updateUser( user ); } // 刪 @PostMapping( value = "/delete") public Object delete( @RequestBody User user ) { return userService.deleteUser( user ); } // 查 @GetMapping( value = "/getUserByName") public Object getUserByName( @RequestParam String userName ) { return userService.findUserByName( userName ); } }
經過以上幾個簡單的步驟,咱們就實現了 tbl_user
表的增刪改查,傳統 MyBatis的 XML文件一個都不須要寫!
很牛批的 logo就會出現
接下來經過 Postman來發送增刪改查的請求
經過 Postman隨便插入幾條記錄 POST localhost:8089/user/insert
{"userId":3,"userName":"劉能","userAge":"58"} {"userId":4,"userName":"趙四","userAge":"58"} {"userId":5,"userName":"謝廣坤","userAge":"58"} {"userId":6,"userName":"劉大腦殼","userAge":"58"}
修改記錄時須要帶用戶ID,好比咱們修改 趙四
那條記錄的名字爲 趙四(Zhao Four)
修改記錄時一樣須要帶用戶ID,好比刪除ID=6 那條 劉大腦殼
的記錄
好比,按照名字來查詢:GET localhost:8089/user/getUserByName?userName=劉能
@Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); }
public interface UserMapper extends BaseMapper<User> { // 普通查詢 User getUserByName( String userName ); // 分頁查詢 IPage<List<User>> getUsersPage( Page page, @Param("query") User user ); }
@Service @AllArgsConstructor public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { // 查:普通查 @Override public User findUserByName( String userName ) { return baseMapper.getUserByName( userName ); } // 分頁查 @Override public IPage getUserPage(Page page, User user) { return baseMapper.getUsersPage( page, user ); } }
@GetMapping( value = "/page") public Object getUserPage( Page page, User user ) { return userService.getUserPage( page, user ); }
實際實驗一下,咱們分頁查詢 年齡 = 58
的多條記錄:
能夠看到結果數據中,除了給到當前頁數據,還把總記錄條數,總頁數等一併返回了,非常優雅呢 !
因爲能力有限,如有錯誤或者不當之處,還請你們批評指正,一塊兒學習交流!