综合网站开发,随州网站建设有哪些,哪个网站可以做编程题,界面设计效果图排版1、简单介绍MyBatisPlus
MyBatisPlus是一个MyBatis的增强工具#xff0c;在MyBatis的基础上只做增强不做改变#xff0c;完全去SQL化#xff0c;封装好了大量的CRUD操作。甚至吧CRUD操作封装到了Service层#xff0c;可以直接在Controller调用现成的CRUD服务层#xff0c…1、简单介绍MyBatisPlus
MyBatisPlus是一个MyBatis的增强工具在MyBatis的基础上只做增强不做改变完全去SQL化封装好了大量的CRUD操作。甚至吧CRUD操作封装到了Service层可以直接在Controller调用现成的CRUD服务层极度舒适省心。 局限只支持简单的CRUD操作不支持多表操作join、union、子查询不支持GroupBy和各种函数。
2 初步使用
2.1 引入依赖
新建SpringBoot工程。引入依赖 dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.4.1/version/dependency2.2 增加符合MyBatisPlus规范的Mapper和Service
Repository
public interface EmployeePlusMapper extends BaseMapperEmployee
{
}Service
public class EmployeePlusServiceImpl extends ServiceImplEmployeePlusMapper, Employee
{}2.3 指定Bean的主键属性为自增
public class Employee
{TableId(value id,type IdType.AUTO)private Integer id;
}2.4 修改Controller
RestController
public class EmployeePlusController
{Autowired private EmployeePlusServiceImpl employeeService;RequestMapping(value /emp)public Object handle1(String op,Integer id,String lastname,String gender,String email){//封装数据模型Employee employee new Employee(id, lastname, gender, email);switch (op){case select: if (id null){return 必须传入员工id;}else {Employee e employeeService.getById(id);return e null ? 查无此人! : e;}case insert : employeeService.save(employee);return 操作完成!;case update: if (id null){return 必须传入员工id;}else {employeeService.updateById(employee);return 操作完成!;}case delete: if (id null){return 必须传入员工id;}else {employeeService.removeById(id);return 操作完成!;}default: return 请正确操作;}}RequestMapping(value /getAllEmp)public Object handle2(){ListEmployee all employeeService.list();return all;}
}3、按条件查询
现在希望对id3的男性员工执行查询和更新删除操作如下
SpringBootTest
public class MyTest
{AutowiredEmployeeService employeeService;Testpublic void testQuery(){//指定查询条件: id2的男性员工QueryWrapperEmployee wrapper new QueryWrapperEmployee().eq(gender, male).gt(id, 2);//根据条件查询ListEmployee list employeeService.list(wrapper);//指定更新条件UpdateWrapperEmployee updateWrapper new UpdateWrapperEmployee().eq(gender, male).gt(id, 4).set(gender, female);//根据条件更新性别为女性employeeService.update(updateWrapper);//根据条件删除employeeService.remove(wrapper);}
}4、MyBatisPlus模板生成器
虽然MyBatisPlus已经节省了sql编写的大部分工作但是当面对几十上百个的处理的时候仍然有大量的类模块要写其中最大的工作量就是实体类的编写如果手工还容易出错。 所以MyBatis-Plus还推出了代码生成工具https://github.com/baomidou/generator。
4.1 添加依赖
在pom.xml文件中添加代码生成工具
dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-generator/artifactIdversion3.5.3.1/version
/dependencydependencygroupIdorg.apache.velocity/groupIdartifactIdvelocity-engine-core/artifactIdversion2.3/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-freemarker/artifactId
/dependency4.2 编写生成器
编写生成器代码
public class MyGenerator
{public static void main(String[] args) {//指定为哪些表生成String[] tables{ activity_info,activity_sku };FastAutoGenerator.create(jdbc:mysql://hadoop102:3306/gmall,root,000000).globalConfig(builder - {builder.author(atguigu) //作者.outputDir(D:\\repo\\221109\\mybatisplusdemo\\src\\main\\java) //输出路径(写到java目录).commentDate(yyyy-MM-dd).dateType(DateType.ONLY_DATE); //选择实体类中的日期类型 Date or LocalDatetime}).packageConfig(builder - { //各个package 名称builder.parent(com.atguigu.mybatisplus)//.moduleName(governance).entity(bean).service(service).serviceImpl(service.impl).controller(controller).mapper(mapper);}).strategyConfig(builder - {builder.addInclude(tables).serviceBuilder().enableFileOverride() //生成代码覆盖已有文件 谨慎开启.formatServiceFileName(%sService) //类后缀.formatServiceImplFileName(%sServiceImpl) //类后缀.entityBuilder().enableFileOverride().enableLombok() //允许使用lombok.controllerBuilder().enableFileOverride().formatFileName(%sController) //类后缀.enableRestStyle() //生成RestController 否则是Controller.mapperBuilder().enableFileOverride()//生成通用的resultMap 的xml映射.enableBaseResultMap() //生成xml映射.superClass(BaseMapper.class) //标配.formatMapperFileName(%sMapper) //类后缀.mapperAnnotation(Mapper.class) ; //生成代码Mapper上自带Mapper}).templateConfig(builder - {// 实体类使用我们自定义模板builder.entity(templates/myentity.java);}).templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板默认的是Velocity引擎模板.execute();}}4.3 自定义模块
以上生成代码主函数中有设计自定义模块。从idea中的jar包目录中找到jar包的模板。 拷贝到Resource/template目录下重命名为myentity.java.ftl并吧第29,30行的修改 修改前
…
#if entityLombokModel
Getter
Setter…修改后
……
#if entityLombokModel
Data
……之后重新运行生成器的代码就可以根据自己的模板生成Bean。 注意可以重复生成是覆盖操作。