
文章插图
直接在QueryWrapper对象上链式调用即可,需要什么条件就加什么条件 。
再看selectList方法,提出一个需求,查询性别为男,名字中带有字母j或者邮箱中带有字母b的员工信息,实现如下:
@Testvoid contextLoads() { QueryWrapper<Employee> wrapper = new QueryWrapper<Employee>() .eq("gender", 1) .like("last_name", "j") .or() .like("email", "b"); List<Employee> emps = employeeMapper.selectList(wrapper); for (Employee emp : emps) { System.out.println(emp); }}
文章插图
或关系只需要调用or()方法即可实现,执行结果:
==> Preparing: SELECT id,last_name,email,gender,age FROM tbl_employee WHERE (gender = ? AND last_name LIKE ? OR email LIKE ?) ==> Parameters: 1(Integer), %j%(String), %b%(String)<== Columns: id, last_name, email, gender, age<== Row: 2, jack, jack@qq.com, 1, 21<== Row: 5, bbb, bbb@qq.com, 1, 30<== Total: 2Employee(id=2, lastName=jack, email=jack@qq.com, gender=1, age=21, salary=null)Employee(id=5, lastName=bbb, email=bbb@qq.com, gender=1, age=30, salary=null)
文章插图
既然有QueryWrapper提供查询,那么就应该有UpdateWrapper用于更新,比如修改名字中带字母j并且年龄为21岁的员工信息,将其年龄修改为30岁,实现如下:
@Testvoid contextLoads() { Employee employee = new Employee(); employee.setAge(30); UpdateWrapper<Employee> wrapper = new UpdateWrapper<Employee>() .like("last_name", "j") .eq("age", 21); employeeMapper.update(employee, wrapper);}
文章插图
对于删除操作,我们仍然使用QueryWrapper来完成条件的限定,比如删除名字中带字母b并且年龄为30岁的男性员工信息,实现如下:
@Testvoid contextLoads() { QueryWrapper<Employee> wrapper = new QueryWrapper<Employee>() .like("last_name", "b") .eq("age", 30) .eq("gender", 1); employeeMapper.delete(wrapper);}
文章插图
条件构造器的功能远不止于此,具体细节可以参照官方文档:
https://mybatis.plus/guide/wrapper.html
代码生成器与MyBatis一样,MyBatisPlus同样提供了代码生成器,而且是基于Java代码进行生成的,相比于MyBatis,也更具有扩展性 。
引入依赖:
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.4.1</version></dependency><dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.2</version></dependency>
文章插图
然后编写生成代码:
@Testvoid contextLoads() { // 全局配置 GlobalConfig globalConfig = new GlobalConfig(); globalConfig.setAuthor("wwj") // 作者 .setOutputDir("C:/Users/Administrator/Desktop/ideaworkspace/mybatisplus-demo/src/main/java") // 生成路径 .setFileOverride(true) // 若多次生成,则文件覆盖 .setIdType(IdType.AUTO) // 主键策略 .setServiceName("%sService") // 设置生成的service接口名不携带首字母I --> IEmployeeService .setBaseResultMap(true) .setBaseColumnList(true); // 生成sql片段 // 数据源配置 DataSourceConfig dataSourceConfig = new DataSourceConfig(); dataSourceConfig.setDbType(DbType.MYSQL) // 设置数据库类型 .setDriverName("com.mysql.cj.jdbc.Driver") .setUrl("jdbc:mysql:///mybatisplus?serverTimezone=UTC") .setUsername("root") .setPassword("123456"); // 策略配置 StrategyConfig strategyConfig = new StrategyConfig(); strategyConfig.setCapitalMode(true) // 开启全局大写命名 .setColumnNaming(NamingStrategy.underline_to_camel) // 设置字段名与属性的驼峰命名映射 .setTablePrefix("tbl_") // 设置表名前缀 .setInclude("tbl_employee"); // 作用于哪张表 // 包名配置 PackageConfig packageConfig = new PackageConfig(); packageConfig.setParent("com.wwj.mybatisplusdemo") // 设置父包名 .setMapper("mapper") // 设置Mapper接口生成的位置 .setService("service") // 设置Service生成的位置 .setController("controller") // 设置Controller生成的位置 .setEntity("bean") // 设置实体类生成的位置 .setXml("mapper"); // 设置Mapper映射文件生成的位置 // 整合配置 AutoGenerator autoGenerator = new AutoGenerator(); autoGenerator.setGlobalConfig(globalConfig) .setDataSource(dataSourceConfig) .setStrategy(strategyConfig) .setPackageInfo(packageConfig); // 执行 autoGenerator.execute();}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 金丝玫瑰茶烟,茶烟怎么样好吸么
- 红菊花茶,菊花茶的作用有哪些
- Java并发工具类的简单使用
- vscode 前端常用插件推荐
- 一些不好记却很好用的 CSS 属性
- Redis在用户注册登录的妙用
- 诸葛亮用了多少艘船,草船借箭是周瑜还是诸葛亮
- 通用的底层埋点都是怎么做的?
- 免费供苗种植回收,投资成本(不含土地承包费用
- 坝上金莲花颗粒副作用,金莲花的副作用
