zoukankan      html  css  js  c++  java
  • 开发六年mybatisplus使用小结

    最近在项目里用到了一个第三方库,叫mybatisplus,是一个mybatis的增强库,简单来说就是增强了mybatis的功能,让mybatis更好用,mybatisplus给的官方定义是Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。http://mp.baomidou.com/#/这是mybatisplus的网站,有兴趣的可以自己看一下.

    使用前需要增加maven的以来配置下面就简单说下他具体有哪些好用的功能

    com.baomidou
    mybatis-plus
    2.1.9
    com.baomidou
    mybatisplus-spring-boot-starter
    1.0.5

    下面就简单说下他具体有哪些好用的功能.

    1.BaseMapper集成单表crud功能

    假如有一个实体类User,要使用mybatis实现增删改查需要写很多的xml配置文件来实现,但是用mybatisplus之后直接继承BaseMapper接口即可实现,无需编写任何的xml文件,代码如下

    publicinterfaceUserMapperextendsBaseMapper{ }//继承之后即可直接使用BaseMapper中的增删改查方法,例如userMapper.selectById(id); userMapper.deleteById(id); userMapper.updateById(user); userMapper.insert(user);

    2.集成分页功能

    mybatisplus集成了很好用的分页功能,在执行sql查询的时候,传入一个pagination的对象即可实现自动分页.Pagination对象中主要的成员变量如下:

    /**
    * 总数
    */privateinttotal;/**
    * 每页显示条数,默认 10
    */privateintsize=10;/**
    * 总页数
    */privateintpages;/**
    * 当前页
    */privateintcurrent =1;/**
    * 查询总记录数(默认 true)
    */privatebooleansearchCount =true;/**
    * 开启排序(默认 true) 只在代码逻辑判断 并不截取sql分析
    *
    * @see com.baomidou.mybatisplus.mapper.SqlHelper#fillWrapper
    **/privatebooleanopenSort =true;/**
    * 优化 Count Sql 设置 false 执行 select count(1) from (listSql)
    */privatebooleanoptimizeCountSql =true;/**
    *
    * SQL 排序 ASC 集合
    *
    */privateList ascs;/**
    *
    * SQL 排序 DESC 集合
    *
    */privateList descs;/**
    * 是否为升序 ASC( 默认: true )
    *
    * @see #ascs
    * @see #descs
    */privatebooleanisAsc =true;/**
    *
    * SQL 排序 ORDER BY 字段,例如: id DESC(根据id倒序查询)
    *
    *
    * DESC 表示按倒序排序(即:从大到小排序)
    * ASC 表示按正序排序(即:从小到大排序)
    *
    * @see #ascs
    * @see #descs
    *
    */privateString orderByField;

    对这些成员变量例如isAsc赋值,即可实现想要的分页功能.

    另外pagination是RowBounds的子类,如果你想要一个自定义的分页方式,可以继承RowBounds类并重写对应的方法即可实现,这里就不详细说明了.

    3.条件构造器实现复杂的sql查询

    这个功能主要用户实现动态的sql拼接,主要用到的对象是EntityWrapper,通过生成一个EntityWrapper对象,然后通过该wrapper对象的方法实现sql的拼接.例如可以wrapper的eq方法实现sql中的=功能,like方法实现sql中的like功能,gt方法实现sql的>

    功能等等等等,这块大家可以自己看下wrapper中的方法就可以了,非常简单,拿来即可用.

    4.代码自动生成

    mybatis generator不知道大家有没有用过,就是更加表结构自动生成实体类和mapper及xml配置文件,mybatisplus在这个基础上提供了更强大的代码自动生成功能,示例代码如下

    privatevoidgenerateByTables(StringpackageName,String... tableNames) { GlobalConfig globalConfig =newGlobalConfig(); globalConfig.setActiveRecord(false)
    .setEnableCache(false)
    .setBaseColumnList(true)
    .setBaseResultMap(true)
    .setAuthor("administrator")
    .setOutputDir(baseProjectPath)
    .setFileOverride(true)
    .setServiceName("%sService")
    .setControllerName("Con")
    .setActiveRecord(false)
    .setFileOverride(true);
    DataSourceConfig dataSourceConfig =newDataSourceConfig(); dataSourceConfig.setDbType(DbType.MYSQL).setUrl(URL) .setUsername(USERNAME)
    .setPassword(PASSWORD)
    .setDriverName(DRIVER_NAME);
    StrategyConfig strategyConfig =newStrategyConfig(); strategyConfig.setEntityBuilderModel(false)
    .setCapitalMode(false)
    .setEntityLombokModel(true)
    .setDbColumnUnderline(true) .setNaming(NamingStrategy.underline_to_camel) .setInclude(tableNames);//修改替换成你需要的表名,多个表名传数组
    PackageConfig packageConfig =newPackageConfig() .setParent(packageName)
    .setEntity("model.mybatis")
    .setMapper("dao")
    .setXml("../../../../../mapper");
    TemplateConfig templateConfig =newTemplateConfig();
    templateConfig
    .setController(null)
    .setService(null)
    .setServiceImpl(null);newAutoGenerator()
    .setGlobalConfig(globalConfig)
    .setDataSource(dataSourceConfig)
    .setStrategy(strategyConfig)
    .setPackageInfo(packageConfig)
    .setTemplate(templateConfig)
    .execute(); }

    其中packagename为你需要生成代码的包地址,tables是表名

    以上就是mybatisplus常用的功能,最后给大家推荐一个好用的mybaitsplus在idea里的插件, 可以通过idea的File -> Settings -> Plugins -> Browse Repositories..输入 mybatisx 安装下载,能够 很好的提升mybatisplus的开发体验.

    写在最后:欢迎留言讨论,加关注,持续更新!!!

  • 相关阅读:
    CSS3—— 2D转换 3D转换 过渡 动画
    CSS3——边框 圆角 背景 渐变 文本效果
    CSS3——表单 计数器 网页布局 应用实例
    CSS3——提示工具 图片廓 图像透明 图像拼接技术 媒体类型 属性选择器
    CSS3——对齐 组合选择符 伪类 伪元素 导航栏 下拉菜单
    CSS3——分组和嵌套 尺寸 display显示 position定位 overflow float浮动
    CSS3——盒子模型 border(边框) 轮廓(outline)属性 margin外边距 padding填充
    Eclipse连接数据库报错Local variable passwd defined in an enclosing scope must be final or effectively final
    数据库——单表查询
    数据库——添加,修改,删除
  • 原文地址:https://www.cnblogs.com/Ti1077/p/9626851.html
Copyright © 2011-2022 走看看