最近在项目里用到了一个第三方库,叫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
微信打赏
支付宝打赏
感谢您对作者joy1的打赏,我们会更加努力! 如果您想成为作者,请点我