Springboot使用mybatis-plus


mybatis-plus簡介

MyBatis-Plus(簡稱 MP)是一個 MyBatis 的增強工具,在 MyBatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生。官網:https://mp.baomidou.com/

使用

  1. 引入pom包文件
<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>
        <!-- 這是mybatis-plus的代碼自動生成器 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.2.0</version>
        </dependency>
        <!-- 這是模板引擎依賴 -->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.28</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.45</version>
            <scope>runtime</scope>
        </dependency>

這個是lombok,實體類的屬性注解

mybatis-plus的依賴包,注意mybatis-plus的依賴包版本要統一,不然jar引用會沖突,另外freemarker一定要引,根據模板自動生成代碼;

2. 編寫generator自動生成代碼

public static void main(String[] args) {
         String author = "hmx";
         String outPutDir = "E:/springboot-mybatis-plus/src/main";
         String javaStr = "/java";
         String resourceStr = "/resources";
        AutoGenerator generator = new AutoGenerator();
        // 選擇 freemarker 引擎需要指定如下加,注意 pom 依賴必須有!
        generator.setTemplateEngine(new FreemarkerTemplateEngine());

        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setAuthor(author);
        globalConfig.setDateType(DateType.ONLY_DATE);
        globalConfig.setOutputDir(outPutDir+javaStr);
        globalConfig.setFileOverride(false);//是否覆蓋同名文件
        globalConfig.setActiveRecord(true);//之繼承model就可實現增刪改查
        globalConfig.setEnableCache(false);//是否開啟二級緩存
        globalConfig.setBaseResultMap(true);
        globalConfig.setBaseColumnList(false);

        ///設置全局參數
        generator.setGlobalConfig(globalConfig);

        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setDbType(DbType.MYSQL);
        dsc.setTypeConvert(new MySqlTypeConvert(){
            /**
             * 自定義數據類型轉換(可選)
             * @param globalConfig
             * @param fieldType
             * @return
             */
            @Override
            public IColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
                return super.processTypeConvert(globalConfig, fieldType);
            }
        });

        dsc.setDriverName("com.mysql.jdbc.Driver");
        dsc.setUrl("jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8");
        dsc.setUsername("root");
        dsc.setPassword("123");

        generator.setDataSource(dsc);

        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent("com.wonders.springbootmybatisplus");
        generator.setPackageInfo(packageConfig);

        //自定義配置
        InjectionConfig icf = new InjectionConfig() {
            @Override
            public void initMap() {

            }
        };
        List<FileOutConfig> foCfgList = new ArrayList<>();
        foCfgList.add(new FileOutConfig("/templates/mapper.xml.ftl") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                return outPutDir+resourceStr+"/mapper/"
                        +"/"+tableInfo.getEntityName()+"Mapper"+ StringPool.DOT_XML;
            }
        });
        icf.setFileOutConfigList(foCfgList);
        generator.setCfg(icf);
        generator.setTemplate(new TemplateConfig().setXml(""));

        //策略配置
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setEntityLombokModel(true);

        strategyConfig.setSuperEntityColumns("id");
        strategyConfig.setControllerMappingHyphenStyle(true);
        strategyConfig.setTablePrefix(packageConfig.getModuleName() + "_");
//        strategyConfig.setInclude(new String[]{"users"});
        generator.setStrategy(strategyConfig);


        generator.execute();
    }
  1. 配置yml配置文件
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    username: root
    password: 123

mybatis-plus:
  mapper-locations: classpath:/mapper/**/*Mapper.xml
  configuration:
    # 輸出sql語句
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
server:
  port: 8002
  1. mybatis-plus的分頁功能(兩種,只選擇最簡單的配置實現方式)

@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {

    /**
     * 分頁配置
     * @return
     */
    @Bean
    public PaginationInterceptor paginationInterceptor(){
        
        return new PaginationInterceptor();
    }

調用

@RestController
@RequestMapping("/users")
public class UsersController {

    @Autowired
    IUsersService usersService;

    @GetMapping("list")
    public Object  getUsers( ){

        IPage<Users> page = new Page<>(1, 2);
        QueryWrapper<Users> wrapper = new QueryWrapper<>();
        Users user = new Users();
        user.setName("虎");
        wrapper.setEntity(user);
        return usersService.page(page,wrapper);
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM