哪个旅游网站可以做私人定制,关键词排名软件,微网站建设方案财政,购物网站建设的思路MyBatis-Plus 是在 MyBatis 的基础上进行了封装#xff0c;提供了更加便捷的开发方式#xff0c;具有简化开发、提高效率等优点。以下是 MyBatis-Plus 的一些特点和用法#xff1a; 通用 CRUD 操作#xff1a;MyBatis-Plus 提供了通用的 CRUD 接口#xff0c;可以直接调用…MyBatis-Plus 是在 MyBatis 的基础上进行了封装提供了更加便捷的开发方式具有简化开发、提高效率等优点。以下是 MyBatis-Plus 的一些特点和用法 通用 CRUD 操作MyBatis-Plus 提供了通用的 CRUD 接口可以直接调用无需再编写 SQL 语句。例如可以通过继承 BaseMapper 接口来实现对数据表的增删改查操作。 支持 Lambda 表达式MyBatis-Plus 除了提供常规的 CRUD 接口还支持使用 Lambda 表达式进行条件构造使用更加简单代码更加易读。例如 ListUser userList userMapper.selectList(new LambdaQueryWrapperUser().eq(User::getName, Jack).or().like(User::getEmail, test)
);支持分页查询MyBatis-Plus 提供了 Page 类用于分页查询可以轻松地进行分页查询操作例如 PageUser page new Page(1, 10);
IPageUser userPage userMapper.selectPage(page, new QueryWrapperUser().eq(status, 1).like(name, Jack)
);
ListUser userList userPage.getRecords();代码生成器MyBatis-Plus 提供了代码生成器可以快速生成实体类、Mapper 接口以及 XML 映射文件大大提高了开发效率。 支持注解方式配置MyBatis-Plus 支持使用注解来配置 SQL 语句例如可以使用 TableName 注解来指定实体类对应的数据表使用 TableId 注解来指定主键字段。
以下是 MyBatis-Plus 的一些配置示例 配置 XML 映射文件 mapper namespacecom.example.mapper.UserMapperresultMap idBaseResultMap typecom.example.entity.Userid columnid propertyid jdbcTypeBIGINT/result columnname propertyname jdbcTypeVARCHAR/result columnage propertyage jdbcTypeINTEGER/result columnemail propertyemail jdbcTypeVARCHAR//resultMapselect idselectById resultMapBaseResultMapselect id, name, age, email from user where id#{id}/select
/mapper配置注解方式 TableName(user)
public class User {TableId(type IdType.AUTO)private Long id;private String name;private Integer age;private String email;// ...
}使用 Lambda 表达式 ListUser userList userMapper.selectList(new LambdaQueryWrapperUser().eq(User::getName, Jack).or().like(User::getEmail, test)
);以上就是 MyBatis-Plus 的一些特点和用法接下来可以更深入地了解 MyBatis-Plus 的一些重要功能和用法
实体类的代码生成MyBatis-Plus 提供了代码生成器可以根据数据库表结构自动生成实体类、Mapper 接口以及 XML 配置文件。使用代码生成器可以极大地提高开发效率并且减少出错的可能性。以下是代码生成器的使用示例
public class CodeGenerator {public static void main(String[] args) {// 数据源配置DataSourceConfig dataSourceConfig new DataSourceConfig();dataSourceConfig.setDbType(DbType.MYSQL);dataSourceConfig.setUrl(jdbc:mysql://localhost:3306/test?useUnicodetruecharacterEncodingutf-8useSSLfalseserverTimezoneGMT%2B8);dataSourceConfig.setUsername(root);dataSourceConfig.setPassword(root);// 全局配置GlobalConfig globalConfig new GlobalConfig();globalConfig.setOutputDir(System.getProperty(user.dir) /src/main/java);globalConfig.setAuthor(test);globalConfig.setOpen(false);globalConfig.setServiceName(%sService);globalConfig.setMapperName(%sMapper);globalConfig.setXmlName(%sMapper);// 策略配置StrategyConfig strategyConfig new StrategyConfig();strategyConfig.setNaming(NamingStrategy.underline_to_camel);strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);strategyConfig.setSuperEntityClass(com.baomidou.mybatisplus.extension.activerecord.Model);strategyConfig.setEntityLombokModel(true);strategyConfig.setRestControllerStyle(true);strategyConfig.setInclude(user); // 需要生成的表名strategyConfig.setControllerMappingHyphenStyle(true);// 包配置PackageConfig packageConfig new PackageConfig();packageConfig.setParent(com.example.demo);packageConfig.setEntity(entity);packageConfig.setService(service);packageConfig.setServiceImpl(service.impl);packageConfig.setMapper(mapper);packageConfig.setXml(mapper.xml);packageConfig.setController(controller);// 代码生成器AutoGenerator generator new AutoGenerator();generator.setDataSource(dataSourceConfig);generator.setGlobalConfig(globalConfig);generator.setStrategy(strategyConfig);generator.setPackageInfo(packageConfig);// 执行生成代码generator.execute();}
}上述代码会根据指定的数据库表生成对应的实体类、Mapper 接口以及 XML 配置文件并且可以自定义配置生成的代码的包路径、作者名等信息。
分页查询MyBatis-Plus 提供了一个非常方便的分页查询 API可以通过 Page 对象来实现分页查询例如
Service
public class UserServiceImpl extends ServiceImplUserMapper, User implements UserService {Overridepublic PageUser listUsersByPage(int pageNum, int pageSize) {PageUser page new Page(pageNum, pageSize);QueryWrapperUser wrapper new QueryWrapper();wrapper.lambda().eq(User::getIsDeleted, false);return this.page(page, wrapper);}
}上述代码会根据传入的 pageNum 和 pageSize 参数查询对应的分页数据并且使用 QueryWrapper 来构造查询条件。 条件构造器MyBatis-Plus 提供条件构造器是 MyBatis-Plus 中的一个重要特性它可以帮助我们在使用 MyBatis 进行数据库操作时更加方便地进行条件组合和查询。MyBatis-Plus 提供了三种类型的条件构造器Wrapper、QueryWrapper 和 UpdateWrapper。 Wrapper
Wrapper 是最基本的条件构造器它提供了 where、and、or、in、notIn、eq、ne、gt、lt、ge、le、groupBy、orderBy 等方法可以方便地构造查询条件示例代码如下
WrapperUser wrapper new WrapperUser() {Overridepublic String getSqlSegment() {return where age 18 and sex 1 order by create_time desc;}
};
ListUser userList userMapper.selectList(wrapper);QueryWrapper
QueryWrapper 继承自 Wrapper增加了一些更加方便的方法如 eq、ne、gt、ge、lt、le 等方法可以更加方便地进行条件组合示例代码如下
QueryWrapperUser queryWrapper new QueryWrapperUser();
queryWrapper.gt(age, 18).eq(sex, 1).orderByDesc(create_time);
ListUser userList userMapper.selectList(queryWrapper);UpdateWrapper
UpdateWrapper 也是继承自 Wrapper它提供了一些更新操作的方法如 set、setSql、inc、mul、like 等方法可以方便地构造更新条件示例代码如下
UpdateWrapperUser updateWrapper new UpdateWrapperUser();
updateWrapper.set(name, Tom).eq(age, 20);
int count userMapper.update(null, updateWrapper);除了以上三种条件构造器MyBatis-Plus 还提供了 LambdaQueryWrapper 和 LambdaUpdateWrapper 两种条件构造器它们采用 Lambda 表达式的方式构造查询和更新条件可以使代码更加简洁和易读。例如
LambdaQueryWrapperUser lambdaQueryWrapper new LambdaQueryWrapperUser();
lambdaQueryWrapper.gt(User::getAge, 18).eq(User::getSex, 1).orderByDesc(User::getCreateTime);
ListUser userList userMapper.selectList(lambdaQueryWrapper);LambdaUpdateWrapperUser lambdaUpdateWrapper new LambdaUpdateWrapperUser();
lambdaUpdateWrapper.set(User::getName, Tom).eq(User::getAge, 20);
int count userMapper.update(null, lambdaUpdateWrapper);总之MyBatis-Plus 提供了强大的条件构造器功能可以帮助我们更加方便地进行条件组合和查询操作提高开发效率。