美文网首页
MyBatisPlus入门

MyBatisPlus入门

作者: 程序员Darker | 来源:发表于2019-09-30 08:39 被阅读0次

    1. 引入

    2. 简介

    3. 准备

    3.1 步骤分析

    1. 新建一个项目,导包
    2. 给项目新建两个子模块。代码生成项目用于写代码生成模板,用于生成代码,运行项目是存放子模块1生成的代码

    3.2 步骤实现

    3.2.1 新建项目顶级项目,导包

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <springboot.version>2.0.5.RELEASE</springboot.version>
    </properties>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${springboot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    

    3.2.2 代码生成项目(用于写代码生成模板)

    3.2.2.1 步骤分析

    1. 新建子模块,导包
    2. 配置文件(要使用.properties后缀)
    3. 代码生成模板(在resources目录下)
    4. 代码生成的主类

    3.2.2.2 步骤实现

    1. 新建子模块1,导包
    <dependencies>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>2.2.0</version>
            </dependency>
    
            <!--模板引擎-->
            <dependency>
                <groupId>org.apache.velocity</groupId>
                <artifactId>velocity-engine-core</artifactId>
                <version>2.0</version>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
        </dependencies>
    
    1. 配置文件
    #此处为本项目src所在路径(代码生成器输出路径),注意一定是当前项目所在的目录哟
    OutputDir=D:\\Java20190329\\workspace\\java6webSpringCloud\\mybatisPlusTest\\mybatisplus_test\\src\\main\\java
    #mapper.xml SQL映射文件目录
    OutputDirXml=D:\\Java20190329\\workspace\\java6webSpringCloud\\mybatisPlusTest\\mybatisplus_test\\src\\main\\resources
    OutputDirBase=D:\\Java20190329\\workspace\\java6webSpringCloud\\mybatisPlusTest\\mybatisplus_test\\src\\main\\java
    #设置作者
    author=wangningbo
    #自定义包路径
    parent=cn.wangningbo
    #数据库连接信息
    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql:///test
    jdbc.user=root
    jdbc.pwd=apy06942
    
    1. 代码生成模板编写
    2. 代码生成的主类

    注意里面的一些配置,需要修改的,比如对那个表进行生成代码,生成的代码输出的路径等等配置

    import com.baomidou.mybatisplus.generator.AutoGenerator;
    import com.baomidou.mybatisplus.generator.InjectionConfig;
    import com.baomidou.mybatisplus.generator.config.*;
    import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
    import com.baomidou.mybatisplus.generator.config.po.TableInfo;
    import com.baomidou.mybatisplus.generator.config.rules.DbType;
    import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
    
    import java.util.*;
    
    public class GenteratorCode {
    
        public static void main(String[] args) throws InterruptedException {
            //用来获取Mybatis-Plus.properties文件的配置信息
            ResourceBundle rb = ResourceBundle.getBundle("mybatis");
            AutoGenerator mpg = new AutoGenerator();
            // 全局配置
            GlobalConfig gc = new GlobalConfig();
            gc.setOutputDir(rb.getString("OutputDir"));
            gc.setFileOverride(true);
            gc.setActiveRecord(true);// 开启 activeRecord 模式
            gc.setEnableCache(false);// XML 二级缓存
            gc.setBaseResultMap(true);// XML ResultMap
            gc.setBaseColumnList(false);// XML columList
            gc.setAuthor(rb.getString("author"));
            mpg.setGlobalConfig(gc);
            // 数据源配置
            DataSourceConfig dsc = new DataSourceConfig();
            dsc.setDbType(DbType.MYSQL);
            dsc.setTypeConvert(new MySqlTypeConvert());
            dsc.setDriverName("com.mysql.jdbc.Driver");
            dsc.setUsername(rb.getString("jdbc.user"));
            dsc.setPassword(rb.getString("jdbc.pwd"));
            dsc.setUrl(rb.getString("jdbc.url"));
            mpg.setDataSource(dsc);
            // 策略配置
            StrategyConfig strategy = new StrategyConfig();
            strategy.setTablePrefix(new String[]{"t_"});// 此处可以修改为您的表前缀
            strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
            strategy.setInclude(new String[]{"t_user"}); // 需要生成的表
            mpg.setStrategy(strategy);
            // 包配置
            PackageConfig pc = new PackageConfig();
            pc.setParent(rb.getString("parent"));
            pc.setController("web.controller");
            pc.setService("service");
            pc.setServiceImpl("service.impl");
            pc.setEntity("domain");
            pc.setMapper("mapper");
            mpg.setPackageInfo(pc);
    
            // 注入自定义配置,可以在 VM 中使用 cfg.abc 【可无】
            InjectionConfig cfg = new InjectionConfig() {
                @Override
                public void initMap() {
                    Map<String, Object> map = new HashMap<String, Object>();
                    map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-rb");
                    this.setMap(map);
                }
            };
    
            List<FileOutConfig> focList = new ArrayList<FileOutConfig>();
    
            // 调整 domain 生成目录演示
            focList.add(new FileOutConfig("/templates/entity.java.vm") {
                @Override
                public String outputFile(TableInfo tableInfo) {
                    return rb.getString("OutputDirBase") + "/cn/wangningbo/domain/" + tableInfo.getEntityName() + ".java";
                }
            });
    
            // 调整 xml 生成目录演示
            focList.add(new FileOutConfig("/templates/mapper.xml.vm") {
                @Override
                public String outputFile(TableInfo tableInfo) {
                    return rb.getString("OutputDirXml") + "/cn/wangningbo/mapper/" + tableInfo.getEntityName() + "Mapper.xml";
                }
            });
            cfg.setFileOutConfigList(focList);
            mpg.setCfg(cfg);
    
            // 自定义模板配置,可以 copy 源码 mybatis-plus/src/main/resources/templates 下面内容修改,
            // 放置自己项目的 src/main/resources/templates 目录下, 默认名称一下可以不配置,也可以自定义模板名称
            TemplateConfig tc = new TemplateConfig();
            tc.setService("/templates/service.java.vm");
            tc.setServiceImpl("/templates/serviceImpl.java.vm");
            tc.setEntity(null);
            tc.setMapper("/templates/mapper.java.vm");
            tc.setController(null);
            tc.setXml(null);
            // 如上任何一个模块如果设置 空 OR Null 将不生成该模块。
            mpg.setTemplate(tc);
    
            // 执行生成
            mpg.execute();
        }
    }
    

    3.2.3 运行项目(存放子模块1生成的代码)

    3.2.3.1 步骤分析

    1. 新建项目,导包
    2. 配置文件application.yml
    3. 分页插件配置
    4. 测试

    3.2.3.2 步骤实现

    1. 新建项目,导包
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>2.2.0</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
    
    1. 配置文件application.yml\
    spring:
      application:
        name: mybatisplus-test
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/test
        username: root
        password: apy06942
    mybatis-plus:
      mapper-locations: classpath:cn/wangningbo/mapper/*Mapper.xml
      type-aliases-package: cn.wangningbo.domain,cn.wangningbo.query
    
    1. 分页插件配置
    
    package cn.wangningbo.config;
    
    import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.transaction.annotation.EnableTransactionManagement;
    
    //Spring boot方式:配置分页插件
    @EnableTransactionManagement
    @Configuration
    @MapperScan(" cn.itsource.hrm.mapper")
    public class MybatisPlusConfig {
    
        @Bean
        public PaginationInterceptor paginationInterceptor() {
            return new PaginationInterceptor();
        }
    }
    
    1. 测试

      执行代码生成项目运行主类,就会生成代码到指定的路径下!查看是否生成!

      由于要写测试类,所以要先写一个入口类

    package cn.wangningbo;
    
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    @MapperScan("cn.wangningbo.mapper")
    public class App {
        public static void main(String[] args) {
            SpringApplication.run(App.class, args);
        }
    }
    
    测试类
    
    package cn.wangningbo.cn.wangningbo;
    
    import cn.wangningbo.App;
    import cn.wangningbo.domain.User;
    import cn.wangningbo.service.IUserService;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest(classes = App.class)
    public class ServiceTest {
        @Autowired
        private IUserService userService;
    
        @Test
        public void testGetAll() throws Exception {
    
    //        System.out.println(userService.selectById(1L)); //根据id查询一个
    //        userService.insert(new User());   //添加
    //        userService.updateById(new User());   //修改
    //        userService.deleteById(1L);   //删除
            //查询所有并遍历
            for (User user : userService.selectList(null)) {
                System.out.println(user);
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:MyBatisPlus入门

          本文链接:https://www.haomeiwen.com/subject/ymlcpctx.html