中国网站制作公司,响应式网站模板,深圳营销咨询公司,地推app接任务平台shigen坚持更新文章的博客写手#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长#xff0c;分享认知#xff0c;留住感动。 个人IP#xff1a;shigen 趁着下午的空闲时间#xff0c;研究了一下mybatis-flex#xff0c;看着对我还… shigen坚持更新文章的博客写手擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长分享认知留住感动。 个人IPshigen 趁着下午的空闲时间研究了一下mybatis-flex看着对我还是挺有吸引力的。于是打开了官网先从代码生成开始
代码生成
都是按照官方给的代码案例
导入依赖
基本上都是很熟悉的依赖必备的数据库连接JDBC、数据库连接池工具
dependencygroupIdcom.mybatis-flex/groupIdartifactIdmybatis-flex-codegen/artifactIdversion1.8.2/version
/dependencydependencygroupIdcom.zaxxer/groupIdartifactIdHikariCP/artifactIdversion4.0.3/version
/dependencydependencygroupIdcom.mysql/groupIdartifactIdmysql-connector-j/artifactIdversion8.0.32/version
/dependency代码生成
在官方给的代码案例上稍微改了一下数据库的连接配置。
public class Codegen {public static void main(String[] args) {//配置数据源HikariDataSource dataSource new HikariDataSource();dataSource.setJdbcUrl(jdbc:mysql://127.0.0.1:3306/security?characterEncodingutf-8);dataSource.setUsername(root);dataSource.setPassword(123456);//创建配置内容两种风格都可以。GlobalConfig globalConfig createGlobalConfigUseStyle1();//GlobalConfig globalConfig createGlobalConfigUseStyle2();//通过 datasource 和 globalConfig 创建代码生成器Generator generator new Generator(dataSource, globalConfig);//生成代码generator.generate();}public static GlobalConfig createGlobalConfigUseStyle1() {//创建配置内容GlobalConfig globalConfig new GlobalConfig();//设置根包globalConfig.setBasePackage(com.gitee.shigen.mybatisflexdemo);//设置表前缀和只生成哪些表globalConfig.setTablePrefix(sys_);// globalConfig.setGenerateTable(tb_account, tb_account_session);//设置生成 entity 并启用 LombokglobalConfig.setEntityGenerateEnable(true);globalConfig.setEntityWithLombok(true);//设置项目的JDK版本项目的JDK为14及以上时建议设置该项小于14则可以不设置// globalConfig.setJdkVersion(17);//设置生成 mapperglobalConfig.setMapperGenerateEnable(true);//可以单独配置某个列// ColumnConfig columnConfig new ColumnConfig();// columnConfig.setColumnName(tenant_id);// columnConfig.setLarge(true);// columnConfig.setVersion(true);// globalConfig.setColumnConfig(tb_account, columnConfig);return globalConfig;}public static GlobalConfig createGlobalConfigUseStyle2() {//创建配置内容GlobalConfig globalConfig new GlobalConfig();//设置根包globalConfig.getPackageConfig().setBasePackage(com.test);//设置表前缀和只生成哪些表setGenerateTable 未配置时生成所有表globalConfig.getStrategyConfig().setTablePrefix(tb_).setGenerateTable(tb_account, tb_account_session);//设置生成 entity 并启用 LombokglobalConfig.enableEntity().setWithLombok(true).setJdkVersion(17);//设置生成 mapperglobalConfig.enableMapper();//可以单独配置某个列ColumnConfig columnConfig new ColumnConfig();columnConfig.setColumnName(tenant_id);columnConfig.setLarge(true);columnConfig.setVersion(true);globalConfig.getStrategyConfig().setColumnConfig(tb_account, columnConfig);return globalConfig;}
}运行测试类生成对应的代码 再来看下生成的代码 基本上很符合我们用lombokmybatis plus的规范了接下来只需要专注业务逻辑的开发即可。
编码体验
选取官方的几个案例测试一下使用的效果。
配置sql打印 dependencygroupIdcom.mybatis-flex/groupIdartifactIdmybatis-flex-spring-boot-starter/artifactIdversion1.8.2/version/dependencyConfiguration
public class MyConfigurationCustomizer implements ConfigurationCustomizer {Overridepublic void customize(FlexConfiguration configuration) {configuration.setLogImpl(StdOutImpl.class);}
}测试代码 MyBatis-Flex 使用了 APTAnnotation Processing Tool技术在项目编译的时候会自动根据 Entity 类定义的字段帮你生成 “ACCOUNT” 类以及 Entity 对应的 Mapper 类 通过开发工具构建项目如下图或者执行 maven 编译命令: mvn clean package 都可以自动生成。这个原理和 lombok 一致。 执行mvn clean package之后需要刷新一下mvn避免必要的包无法导入。
其实效果类似于lombok我们看一下生成的代码 最后编写测试类测试一下。
查询
下边是根据ID进行查询 Resourceprivate UserMapper userMapper;GetMapping(value test/user/{id})public User getUserById(PathVariable(id) String id) {QueryWrapper queryWrapper QueryWrapper.create().select().where(USER.ID.eq(id));return userMapper.selectOneByQuery(queryWrapper);}这样一个简单的查询就可以完成。当然官方的文档中原生的sql查询也是可以的
public interface UserMapper extends BaseMapperUser {/*** 根据id查询用户信息** param id id* return 用户信息*/Select(value select * from sys_user where id #{id})User getUserById(Param(id) String id);
}多条件查询
这里我就直接给出测试的代码了 GetMapping(value test/user/select)public ListUser getUserList() {QueryWrapper queryWrapper QueryWrapper.create().select().where(USER.PASSWORD.isNotNull()).and(USER.NICKNAME.likeRight(张%)).and(USER.ENABLED.eq(true));return userMapper.selectListByQuery(queryWrapper);}更新数据 删除就在这里不演示了。
说实话shigen在最开始并没有觉得这个框架的牛掰之处无非就是抄写了mybatis-plus的优点无非就是写查询的条件就像写sql语句一样的丝滑了。最后看了文档才发现它的妙处连表查询。 时间关系这次的分享就到此为止了连表查询我将会给出详细的案例期待和大家一起探讨。 与shigen一起每天不一样