一 背景
- 你的SpringBoot项目中使用Mybatis是否还是需要自己写一堆xmlmapper和sql,经常新增一个字段,要改多个地方且容易改错(entity、mapper)。
- 你是否经常在代码中重复公共字段的设置,如创建时间、修改时间、修改人、创建人等等公共信息。
- 你是否在使用mybatis的时候,为了防止并发更新,要手动去控制version乐观锁。
以上问题,只要你使用了MybatisPlus,就能很好的解决,具体的一个实践请参考下面的博文。更多文档参考github:https://github.com/baomidou/mybatis-plus
二 实践步骤1 pom依赖
1 | <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus --> |
三 实践步骤2 自动填充
1 | import com.baomidou.mybatisplus.annotation.FieldFill; |
1 | import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; |
四 实践步骤3 自动配置
1 | import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; |
五 实践步骤4 application配置
1 | mybatis-plus: |
六 实践步骤5Mapper与Service使用
mapper1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xxxx.entity.XXXEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* mapper
*
* @author jacky
* @since 2020/01/07
*/
public interface XXXEntityMapper extends BaseMapper<XXXEntity> {
"select * from coupon_activity_product where activity_id = #{activityId} and delete_flag = 0") (
List<XXXEntity> findByActivityId(Long activityId);
}
service-interface1
2
3
4
5
6
7
8
9
10
11
12import com.baomidou.mybatisplus.extension.service.IService;
import com.xxx.XXXEntity;
/**
* service
*
* @author jacky
* @since 2020/01/07
*/
public interface XXXEntityService extends IService<XXXEntity> {
}
service-impl1
2
3
4
5
6
7
8
9
10
11
12
13
14
15import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xxx.XXXEntityVO;
import com.xxx.XXXEntityMapper;
import com.xxx.XXXEntityService;
/**
* service
*
* @author jacky
* @since 2020/01/07
*/
4j
public class XXXEntityServiceImpl extends ServiceImpl<XXXEntityMapper, XXXEntity> implements XXXEntityService {
}
7 其他说明
写到最后,虽然MybatisPlus有非常多的优点,但是很多公司(如阿里和其他一些互联网公司)都不建议使用,因为SQL这块不可控,是由mybatisplus自己拼装,可能由于传入的条件没有索引导致出现慢查询等问题。