Springboot + Oracle 集成 MyBatisPlus 、自动代码生成 及 简单查询的实现

  1. 建springboot模块;

  2. 添加maven依赖如下:

    1.         <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>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-thymeleaf</artifactId>
              </dependency>
              <dependency>
                  <groupId>org.projectlombok</groupId>
                  <artifactId>lombok</artifactId>
                  <optional>true</optional>
              </dependency>
              <!--MyBatisPlus启动依赖-->
              <dependency>
                  <groupId>com.baomidou</groupId>
                  <artifactId>mybatis-plus-boot-starter</artifactId>
                  <version>3.2.0</version>
              </dependency>
              <dependency>
                  <groupId>org.freemarker</groupId>
                  <artifactId>freemarker</artifactId>
                  <version>2.3.28</version>
              </dependency>
              <dependency>
                  <groupId>com.alibaba</groupId>
                  <artifactId>fastjson</artifactId>
                  <version>1.2.47</version>
              </dependency>
              <!--Oracle数据库JDBC链接依赖-->
              <dependency>
                  <groupId>com.oracle.database.jdbc</groupId>
                  <artifactId>ojdbc8</artifactId>
                  <version>19.8.0.0</version>
                  <scope>runtime</scope>
              </dependency>
              <!--MyBatisPlus自动生成代码依赖-->
              <dependency>
                  <groupId>com.baomidou</groupId>
                  <artifactId>mybatis-plus-generator</artifactId>
                  <version>3.2.0</version>
              </dependency>
              <!--JUNIT测试相关-->
              <dependency>
                  <groupId>junit</groupId>
                  <artifactId>junit</artifactId>
                  <scope>test</scope>
              </dependency>
              <dependency>
                  <groupId>com.h2database</groupId>
                  <artifactId>h2</artifactId>
                  <scope>runtime</scope>
              </dependency>
              <!--字符集支持-->
              <dependency>
                  <groupId>cn.easyproject</groupId>
                  <artifactId>orai18n</artifactId>
                  <version>12.1.0.2.0</version>
              </dependency>

       

3.使用代码自动生成工具生成结构代码:

使用MyBatisPlus ,生成必要的Controller、Service、ServiceImplement、Mapper、Model

首先new 一个class,填充代码如下:

package com.cic.partner.facadeapi.conf;

import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;


import java.util.Scanner;

/*
* 自动生成代码实现
* */
public class GeneratorCodeConfig {

    /*输入控制方法*/
    public static String scanner(String tips){
        Scanner sc = new Scanner(System.in);
        StringBuilder sb = new StringBuilder();
        sb.append("请输入:"+tips + ":");
        System.out.println(sb.toString());
        if(sc.hasNext()){
            String rs = sc.next();
            if(rs != null && !"".equals(rs)){
                return rs ;
            }
        }
        throw new MybatisPlusException("请输入正确的" + tips);
    }

    public static void main(String args[]){
        //初始化代码生成器
        AutoGenerator mpg = new AutoGenerator();
        //获取全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        //设置输出目录
        gc.setOutputDir(projectPath + "/facade-api/src/main/java");
        gc.setAuthor("MybatisPlusAutoBuilder");
        gc.setOpen(false);
        mpg.setGlobalConfig(gc);

        //配置数据源
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:oracle:thin:@10.196.13.9:1521/uatora");
        dsc.setDriverName("oracle.jdbc.driver.OracleDriver");
        dsc.setPassword("oracle");
        dsc.setUsername("uat_user");
        mpg.setDataSource(dsc);

        //包配置,指定输出文件的目录
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.cic.partner.facadeapi");
        pc.setEntity("model.auto");
        pc.setMapper("mapper.auto");
        pc.setService("service");
        pc.setServiceImpl("service.impl");
        mpg.setPackageInfo(pc);

        //模板配置
        TemplateConfig tc = new TemplateConfig();
        tc.setXml(null);
        mpg.setTemplate(tc);

        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        strategy.setSuperEntityClass("com.baomidou.mybatisplus.extension.activerecord.Model");
        strategy.setEntityLombokModel(true);
        strategy.setRestControllerStyle(true);
        strategy.setEntityLombokModel(true);
        strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
        strategy.setControllerMappingHyphenStyle(true);
        strategy.setTablePrefix(pc.getModuleName() + "_");
        mpg.setStrategy(strategy);
        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
        mpg.execute();

    }
}

右键Run 执行主函数:

 

 

输入欲生成相关结构代码的表名,回车执行:

 

生成效果(红框内为此次生成代码):

其中Model中使用了lombok中的@Data注解,可以省略getter和setter的书写,直接调用

 

4.基础CRUD:

MyBatisPlus的Mapper基类实现了最基本的增删改查功能,使用时只需要对Mapper对象进行注入,根据实际情况限制条件,就可以直接调用,示例如下:

package ;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cic.partner.facadeapi.mapper.auto.TGatewayPolicyMapper;
import com.cic.partner.facadeapi.model.auto.TGatewayPolicy;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/*MybaitisPlus 简单测试*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class MyBatisPlusSimpleTest {
    //对Mapper进行注入
    @Resource
    private TGatewayPolicyMapper gatewayPolicyMapper;
    //使用JUnit单元测试
    @Test
    public void selectAllTest(){
        System.out.println("查询全表开始:");
        Date date1 = new Date();
        //构建查询条件
        QueryWrapper qw = new QueryWrapper();
        //相当于 where POLNO = '01202111012500207500000056'
        qw.eq("POLNO","01202111012500207500000056");
        //执行查询
        List<TGatewayPolicy> policyList = gatewayPolicyMapper.selectList(qw);
        Date date2 = new Date();
        System.out.println("查询完成,用时:" + (date2.getTime()-date1.getTime()) + "毫秒");
        policyList.forEach(System.out::println);

    }
}

 

注意:需要在Springboot启动方法中增加Mapper扫描,如下:


@SpringBootApplication
@MapperScan("com.cic.partner.facadeapi.mapper.auto")
public class FacadeApiApplication {

    public static void main(String[] args) {
        SpringApplication.run(FacadeApiApplication.class, args);
    }

}

 

5.自定义sql:

新建Dao并填充代码:

import com.cic.partner.facadeapi.model.auto.TGatewayPolicy;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
public interface TGatewayPolicyDao {
    //自定义查询
    @Select("select * from t_gateway_policy where policy_id = #{policyId}")
    TGatewayPolicy queryPolicyByPolicyId(@Param("policyId") String policyId);
}

其中,@Select注解后是sql语句,使用#号作为占位符,方法参数中的Param的value与占位符内的变量对应。

 

在测试类中增加如下测试代码:

    //对Dao进行注入
    @Autowired
    private TGatewayPolicyDao gatewayPolicyDao;

    @Test
    public void selectByIdTest(){
        TGatewayPolicy policy =gatewayPolicyDao.queryPolicyByPolicyId("2021282750");
        System.out.println(policy.toString());
    }

 

注意:在springboot的启动类中增加对dao的扫描,与之前的合并:

@MapperScan({"com.cic.partner.facadeapi.mapper.auto","com.cic.partner.facadeapi.dao"})

 

使用JUnit测试结果如下:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值