MyBatisPlus

1 生成模块(generator模块)

1 pom文件

mybatis-plus要保持包版本一致

1 MyBatisPlus 相关包

  	<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
    </dependency>
        
    <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus-boot-starter</artifactId>
          <version>3.3.2</version>
   </dependency>
   
   <dependency>
         <groupId>com.baomidou</groupId>
         <artifactId>mybatis-plus-generator</artifactId>
         <version>3.3.2</version>
   </dependency>
        
   <dependency>
         <groupId>com.baomidou</groupId>
         <artifactId>mybatis-plus-annotation</artifactId>
          <version>3.3.2</version>
   </dependency>

	<dependency>
	    <groupId>org.projectlombok</groupId>
	    <artifactId>lombok</artifactId>
	    <version>1.18.12</version>
	    <scope>provided</scope>
	</dependency>

	 <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.31</version>
      </dependency>
	

2 生成模块generator模块的代码生成类

1 模板类

对照注释按需求进行修改即可

package com.wy.util;

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.wy.pojo.BasePojo;

import java.util.HashMap;

/**
 * @program: Coding
 * @Description: TODO
 * @Author: sucre1136@gmail.com
 */
public class Coding {
    public static void main(String[] args) {

        AutoGenerator mpg = new AutoGenerator();
        GlobalConfig gc = new GlobalConfig();
        String basePath = System.getProperty("user.dir");


//        第一步设置作者
        gc.setOutputDir(basePath);
        gc.setAuthor("sucre");    //在这里设置作者名
        gc.setOpen(false);
        mpg.setGlobalConfig(gc);

//        第二步数据库连接设置 ( ip 端口号  mysql的账号密码)
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setDriverName("com.mysql.jdbc.Driver");
        dsc.setUrl("jdbc:mysql://192.168.19.132:3306/db1?useUnicode=true&characterEncoding=utf8");
        dsc.setUsername("root");
        dsc.setPassword("root");
        mpg.setDataSource(dsc);


//        第三步包配置
        PackageConfig pc = new PackageConfig();

        //设置父包
        pc.setParent("com.wy");

        //定义子项目名称(子模块名里面有 controll service mapper)
        String projectName = "user";

        //实体类所存在的项目名
        pc.setEntity("pojo");


//        第四步自定义生成路径(自己根据需要改)
//        xml文件生成在 resource 文件夹下,实体类生成到公共资源 pojo 项目下
        HashMap<String, String> pathInfo = new HashMap<String, String>();
        pathInfo.put("entity_path",basePath + "/pojo/src/main/java/com/wy/pojo");
        pathInfo.put("mapper_path",basePath + "/" + projectName + "/src/main/java/com/wy/mapper");
        pathInfo.put("xml_path",basePath + "/" + projectName + "/src/main/resources/com/wy/mapper");
        pathInfo.put("service_path",basePath + "/" + projectName + "/src/main/java/com/wy/service");
        pathInfo.put("service_impl_path",basePath + "/" + projectName + "/src/main/java/com/wy/service/impl");
        pathInfo.put("controller_path",basePath + "/" + projectName + "/src/main/java/com/wy/controller");
        pc.setPathInfo(pathInfo);
        mpg.setPackageInfo(pc);


//        第五步配置生成策略
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);

//       设置实体类是否需要继承父类,此处为继承父类BasePojo中的id属性
//       而且要把pojo作为jar包交给父工程管理,然后在generator的pom文件引入pojo这个jar包
//        这样才能使用如下这个功能
        strategy.setSuperEntityClass(BasePojo.class);

//      是否使用Lombok注解
        strategy.setEntityLombokModel(true);
//      是否使用RestController注解
        strategy.setRestControllerStyle(true);

//      不需要生成的字段
//      前面设置了id继承了父类,所有这里设置不需要生成id字段
        strategy.setSuperEntityColumns("id");

//      设置要生成的表名(多个表明之间用逗号隔开)
        strategy.setInclude("ums_user");


        strategy.setControllerMappingHyphenStyle(true);
        mpg.setStrategy(strategy);
        mpg.setTemplateEngine(new FreemarkerTemplateEngine());  //模板引擎用freemarker
        mpg.execute();
    }
}

2 报错处理

出现 Class Not Found 就表示有包没导入

2 公共资源模块(pojo模块)

1 pom文件

    <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
	   		<scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-annotation</artifactId>
            <version>3.3.2</version>
        </dependency>

2 实体类

package com.wy.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;

/**
 * @program: BasePojo
 * @Description: TODO
 * @Author: sucre1136@gmail.com
 */
@Data
public class BasePojo {
//公共属性id ,自动增加
    @TableId(type = IdType.AUTO)
    private Long id;
    
//用于分页查询的公共属性,但是不在数据库表中存在    
    @TableField(exist = false)
    private Integer pageNo;
    
    @TableField(exist = false)
    private Integer pageSize;
}

3 启动准备

检查mysql的配置文件是否匹配
mysql是否启动
运行自动生成文件

4 注解

1 修改RequestMapping注解

自动生成的注解多了一个‘/’删除
在这里插入图片描述

2 在主程序入口添加包扫描注解

@MapperScan(basePackages = "com.wy.mapper")

5 设置配置文件

mybatis-plus:
  type-aliases-package: com.wy.pojo

6 分页插件(MyBatisPlus自带的)

1 配置(分页拦截器)

https://mp.baomidou.com/guide/page.html

注意:如果当前这个配置文件在一个公共工程中,其坐标一定要和调用它的项目一致

创建一个配置类把这个分页插件交给spring管理就行了
@Bean
public PaginationInterceptor paginationInterceptor() {
    PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
    // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
    // paginationInterceptor.setOverflow(false);
    // 设置最大单页限制数量,默认 500 条,-1 不受限制
    // paginationInterceptor.setLimit(500);
    // 开启 count 的 join 优化,只针对部分 left join
    paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
    return paginationInterceptor;
}

2 使用(前端)

<template>
	<div>
		<el-table :data="tableData.records" border>

<!-- 按需求修改 行列信息 -->
			<el-table-column label="id" prop="id">
			</el-table-column>

			<el-table-column label="姓名" prop="name">
			</el-table-column>

			<el-table-column label="邮箱" prop="email">
			</el-table-column>

			<el-table-column label="手机号" prop="phone">
			</el-table-column>

			<el-table-column label="登入名" prop="longinName">
			</el-table-column>

		</el-table>

<!-- 不修改 -->
		<el-pagination 
			background layout="prev,pager,next" 
			:page-count="tableData.pages"
			:current-page.sync="params.pageNo" 
			@current-change="getTableData">
		</el-pagination>
	</div>
</template>

<script>
	export default {
		name: 'UserIndex',

		data() {
			return {
				tableData: {},
				params: {
// 按需求修改
					pageNo: 1,
					pageSize: 9
				}
			}
		},

		created() {
			this.getTableData()
		},

		methods: {
			getTableData() {
				const loading = this.$loading({
					lock: true,
					text: '加载中....',
					background: 'rgba(255,255,255,0.7)'
				})


				const that = this;
				this.$axios.request({
// 请求地址按需求修改
					url: '/ums-user/page',
					method: 'get',
					// params: that.params
					params: this.params
				}).then(response => {
					that.tableData = response.data
				}).catch(error => {
// 按需求添加错误页面
					console.log(error)
				}).finally(() => {
					loading.close()
				})
			}
		}

	}
</script>

<style scoped lang="less">
</style>


3 使用(后端)

    /**
     * current 当前页码
     * size  每页个数
     * @return
     */
    @GetMapping("/page")
    IPage page(UmsUser umsUser){
    //        TimeUnit.SECONDS.sleep(3);
        return iUmsUserService.page(new Page(umsUser.getPageNo(),umsUser.getPageSize()));
    }
  

7 再次启动代码生成类的化,不会覆盖原有的代码

即你如果对生成后的代码进行过修改,再次使用代码生成的化,不会覆盖你的修改的内容。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值