集团主站
欢迎来到成都达内官方网站!达内—美国上市公司 亿元级外企IT培训企业!
成都it培训哪家好
成都it培训哪家好
全国服务监督电话:15023458194  |   联系客服   |
当前位置:主页 > 培训课程 > Java >

成都java培训哪里好?整合 Mybatis Plus

发布者: 成都达内     浏览次数:     发布时间:2020-08-11 10:36:32

需要考量的最大因素不是它功能的强大而是它社区的活跃度。文档是否齐全,是否拥有完善的Q/A,版本维护周期是否持续。目前来看Mybatis Plus经过数年的打磨算是比较成熟的类库。...

  1. Mybatis Plus的优势

  成都java培训哪里好?整合 Mybatis Plus

  我认为如果你需要在你的框架中引用第三方包,需要考量的最大因素不是它功能的强大而是它社区的活跃度。文档是否齐全,是否拥有完善的Q/A,版本维护周期是否持续。目前来看Mybatis Plus经过数年的打磨算是比较成熟的类库。目前我认为它几个突出的优点:

  单表的通用Mapper功能,这个算一个基本的需求。

  在单表查询的基础之上增加了语义化查询,可通过UpdateWrapper、QueryWrapper等条件构造器丰富单表个性化操作。

  多种主键策略的支持,常见的UUID、雪花算法等。

  基础的代码生成器,减少样板代码编写、提高效率的利器。

  其它还有一些多租户、乐观锁等功能。

  2. 集成依赖

  以mybatis-plus-boot-starter 3.3.2 版本为例。

  我们只需要将kono项目day02分支pom.xml中的mybatis-spring-boot-starter依赖替换为即可:

  dependency>

  groupId>com.baomidou/groupId>

  artifactId>mybatis-plus-boot-starter/artifactId>

  /dependency>

  如果你还需要代码生成器功能请引入下面的模块:

  dependency>

  groupId>com.baomidou/groupId>

  artifactId>mybatis-plus-generator/artifactId>

  scope>compile/scope>

  optional>true/optional>

  /dependency>

  !-- 引入freemarker包作为代码生成器引擎-->

  dependency>

  groupId>org.springframework.boot/groupId>

  artifactId>spring-boot-starter-freemarker/artifactId>

  scope>compile/scope>

  optional>true/optional>

  /dependency>

  关于代码生成器可参阅Mybatis Plus代码生成器和Java代码生成器的原理这两篇文章,本文不再对代码生成器进行详细解释。

  3. 配置

  Mybatis Plus重写了starter,所以配置上有了变化。使用原生Mybatis的Starter配置为:

  mybatis:

  configuration:

  # 下划线转驼峰

  map-underscore-to-camel-case: true

  # 扫描 xml 文件位置

  mapper-locations: classpath:mapper/*Mapper.xml

  对应的Mybatis Plus配置为:

  mybatis-plus:

  configuration:

  # 下划线转驼峰

  map-underscore-to-camel-case: true

  # 扫描 xml 文件位置

  mapper-locations: classpath:mapper/*Mapper.xml

  我们还可以增加一些Mybatis Plus所集成的特性,诸如新增修改查询填充策略、逻辑删除、主键填充等等个性化能力。这里以最常用的主键填充策略为例,如果我们使用分布式主键策略雪花算法的话,可以增加如下配置:

  mybatis-plus:

  global-config:

  db-config:

  id-type: assign_id

  分页也是我们非常常用的功能,最后我们加入Mybatis Plus分页功能,整体的配置如下:

  /**

  * mybatis configuration.

  *

  * @author felord.cn

  */

  @MapperScan("cn.felord.kono.mapper")

  @Configuration

  public class MybatisConfiguration {

  /**

  * 分页插件

  */

  @Bean

  public PaginationInterceptor paginationInterceptor() {

  return new PaginationInterceptor();

  }

  }

  请注意这里的分页只支持一对一分页,一对多分页还不支持。

  5. 使用

  Mybatis Plus使用了一种叫Active Record的领域模型范式,特点是一个模型类(Model)对应关系型数据库中的一个表(table),而模型类的一个实例对应表中的一行记录。因此我们的POJO对象这么编写,以UserInfo为例:

  /**

  * @author felord.cn

  * @since 15:43

  **/

  @EqualsAndHashCode(callSuper = false)

  @Data

  public class UserInfo extends Model {

  private static final long serialVersionUID = -8938650956516110149L;

  @TableId

  private Long userId;

  private String name;

  private Integer age;

  @Override

  protected Serializable pkVal() {

  return this.userId;

  }

  }

  不适用lombok的情况下请对POJO增加Getter/Setter方法。

  对应的Mapper接口只需要继承BaseMapper就可以了:

  public interface UserInfoMapper extends BaseMapper {}

  这时就已经具有了通用Mapper提供的一些接口能力了,当然你可以使用传统的模式去实现自定义的操作方法。

  服务层的接口范式是这样的,需要继承IService接口:

  public interface UserInfoService extends IService {}

  实现类UserInfoServiceImpl同时继承了ServiceImpl:

  @Service

  public class UserInfoServiceImpl extends ServiceImpl implements UserInfoService {

  }

  接下来就是使用了,首先我们来用通用Mapper进行查询:

  final String userId ="12334343455457";

  UserInfo byId = userInfoService.getById(userId);

  我们也可以使用更加灵活的方式来实现上面的查询:

  final String userId ="12334343455457";

  UserInfo one = userInfoService.getOne(new QueryWrapper().lambda()

  .eq(UserInfo::getUserId, userId));

  你可以根据你的业务灵活地增加更多的条件或者指定查询字段进行单表查询,而无需编写SQL,其它新增、更新、删除同理。对于上面的范式,Mybatis Plus提供了代码生成器来实现

(责任编辑:范老师)
最新开班
  • 成都Java培训班
    免费试听名额发放中...
  • 成都C++培训班
    免费试听名额发放中...
  • 成都PHP培训班
    免费试听名额发放中...
  • 成都网络工程培训班
    免费试听名额发放中...
  • 成都Unity3D培训班
    免费试听名额发放中...
  • 成都大数据培训班
    免费试听名额发放中...
  • 成都uid培训班
    免费试听名额发放中...
  • 成都会计培训班
    免费试听名额发放中...
  • 成都Python培训班
    免费试听名额发放中...
  • 成都嵌入式培训班
    免费试听名额发放中...
  • 成都web培训班
    免费试听名额发放中...
  • 成都软件测试培训班
    免费试听名额发放中...
在线留言
提交

校区地址:成都市锦江区东大街紫东楼端35号明宇金融广场19楼1906室

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市高新区奥克斯广场蜀锦路209号一楼商铺

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都锦江区东大街芷泉街229号东方广场C座3楼303

联系电话:15023458194

公交路线:芷泉街(188路;115路;515路;236路;505路;501路;84路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市武侯区佳灵路3号红牌楼广场2号写字楼11楼1115号

联系电话:15023458194

公交路线:红牌楼东(11路;92路;100路;111路;139路;g28路;快速公交K1/K2) 地铁路线:红牌楼站(地铁3号线)

校区地址:成都市锦江区红星路二段70号四川日报大厦502-2

联系电话:15023458194

公交路线:市二医院站(6路;49路;102路;5路;37路;g92路;) 地铁路线:地铁市二医院(地铁3号线)

校区地址:成都市锦江区东大街芷泉段229号东方广场C座16层

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:四川省成都市武侯区高新科技孵化园9号园区E座7楼

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都市高新区奥克斯广场B座1708

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

了解达内动态
关注成都达内教育公众号

首页 | 关于达内 | 课程中心 | 专家师资 | 视频教程 | 学员空间 | 校企合作 | 新闻资讯 | 就业指导 | 网站地图

2016-2025 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56