mybatisplus使用小结

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

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

<dependency>

<groupId>com.baomidou</groupId>

<artifactId>mybatis-plus</artifactId>

<version>2.1.9</version>

</dependency>

<dependency>

<groupId>com.baomidou</groupId>

<artifactId>mybatisplus-spring-boot-starter</artifactId>

<version>1.0.5</version>

</dependency>

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

1.BaseMapper集成单表crud功能

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

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

2.集成分页功能

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

/**
     * 总数
     */
    private int total;

    /**
     * 每页显示条数,默认 10
     */
    private int size = 10;

    /**
     * 总页数
     */
    private int pages;

    /**
     * 当前页
     */
    private int current = 1;

    /**
     * 查询总记录数(默认 true)
     */
    private boolean searchCount = true;

    /**
     * 开启排序(默认 true) 只在代码逻辑判断 并不截取sql分析
     *
     * @see com.baomidou.mybatisplus.mapper.SqlHelper#fillWrapper
     **/
    private boolean openSort = true;

    /**
     * 优化 Count Sql 设置 false 执行 select count(1) from (listSql)
     */
    private boolean optimizeCountSql = true;

    /**
     * <p>
     * SQL 排序 ASC 集合
     * </p>
     */
    private List<String> ascs;
    /**
     * <p>
     * SQL 排序 DESC 集合
     * </p>
     */
    private List<String> descs;

    /**
     * 是否为升序 ASC( 默认: true )
     *
     * @see #ascs
     * @see #descs
     */
    private boolean isAsc = true;

    /**
     * <p>
     * SQL 排序 ORDER BY 字段,例如: id DESC(根据id倒序查询)
     * </p>
     * <p>
     * DESC 表示按倒序排序(即:从大到小排序)<br>
     * ASC 表示按正序排序(即:从小到大排序)
     *
     * @see #ascs
     * @see #descs
     * </p>
     */
    private String 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在这个基础上提供了更强大的代码自动生成功能,示例代码如下

private void generateByTables(String packageName, String... tableNames) {
        GlobalConfig globalConfig = new GlobalConfig();
        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 = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL)
                .setUrl(URL)
                .setUsername(USERNAME)
                .setPassword(PASSWORD)
                .setDriverName(DRIVER_NAME);

        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setEntityBuilderModel(false)
                .setCapitalMode(false)
                .setEntityLombokModel(true)
                .setDbColumnUnderline(true)
                .setNaming(NamingStrategy.underline_to_camel)
                .setInclude(tableNames);//修改替换成你需要的表名,多个表名传数组

        PackageConfig packageConfig = new PackageConfig()
                .setParent(packageName)
                .setEntity("model.mybatis")
                .setMapper("dao")
                .setXml("../../../../../mapper");

        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig
                .setController(null)
                .setService(null)
                .setServiceImpl(null);

        new AutoGenerator().setGlobalConfig(globalConfig)
                .setDataSource(dataSourceConfig)
                .setStrategy(strategyConfig)
                .setPackageInfo(packageConfig)
                .setTemplate(templateConfig)
                .execute();
    }

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

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

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/24545.html

mybatisplus使用小结

mybatisplus使用小结 微信打赏

mybatisplus使用小结 支付宝打赏

感谢您对作者joy1的打赏,我们会更加努力!    如果您想成为作者,请点我

原文 

https://blog.yayuanzi.com/24545.html

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » mybatisplus使用小结

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址