Spring Boot MyBatis-Plus 连接 Oracle 数据库 自动生成代码

news2025/7/19 11:16:35

IDEA 创建SpringBoot项目

项目创建移步 IDEA创建SpringBoot项目

添加依赖

 <!--MyBatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>

        <!-- oracle驱动 -->
        <dependency>
            <groupId>com.oracle.database.jdbc</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0.4</version>
        </dependency>

		<!--连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>

        <!--自动生成代码需要-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.1</version>
        </dependency>

        <!-- mybatis-plus-generator -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.4.1</version>
        </dependency>

        <!-- velocity -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
        </dependency>

        <!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!-- swagger -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>

编写配置文件及代码生成文件

我这里是放在test文件夹中,位置随意。记得修改其中项目文件生成地址和数据库配置信息。
在这里插入图片描述


import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
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.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class CodeGenerator {

   public static void main(String[] args) {
       //1. 全局配置
       GlobalConfig config = new GlobalConfig();
//        String projectPath = System.getProperty("user.dir");
       // 是否支持AR模式
       config.setActiveRecord(true)
               // 设置作者
               .setAuthor("LZW")
               // 生成路径,最好使用绝对路径,window路径是不一样的 记得修改为自己的项目地址
               .setOutputDir("G:/myRepositories/oracledemo/oracledemo/src/main/java")
               /**
                *      // 项目路径
                *     .setOutputDir(projectPath + "/src/main/java");
                */

               // 生成后是否打开资源管理器
               .setOpen(false)
               // 重新生成文件后是否覆盖文件
               .setFileOverride(true)
               // 主键策略
               .setIdType(IdType.AUTO)
               //定义生成的实体类中日期类型
               .setDateType(DateType.ONLY_DATE)
               // 设置生成的service接口的名字的首字母是否为I,默认Service是以I开头的
               .setServiceName("%sService")
               //实体类结尾名称 如 UserVO
//                .setEntityName("VO")
               //生成基本的resultMap
               .setBaseResultMap(true)
               //不使用AR模式
               .setActiveRecord(false)
               // Swagger 2注解
               .setSwagger2(true)
               // 生成基本的SQL片段
               .setBaseColumnList(true);
       //2. 数据源配置
       DataSourceConfig dsConfig = new DataSourceConfig();
       // 设置数据库类型
       dsConfig.setDbType(DbType.ORACLE)
               // JDBC 驱动
               .setDriverName("oracle.jdbc.OracleDriver")
               // jdbc:oracle:thin:@ip地址(localhost):端口:数据库名
               .setUrl("jdbc:oracle:thin:@localhost:11521:RPTDB")
               // mysql 账号
               .setUsername("rpt")
               // mysql 密码
               .setPassword("rpt");
       //3. 策略配置globalConfiguration中
       StrategyConfig stConfig = new StrategyConfig();
       //全局大写命名
       stConfig.setCapitalMode(true)
               // 数据库表映射到实体的命名策略
               .setNaming(NamingStrategy.underline_to_camel)   // 下划线转驼峰命名  如 created_time  ---> createdTime
               // 【推荐】  命名方式不变化,与数据库名称保持一致,这样在Mapper.xml文件不需要单独修改字段名和实体属性名称之间的对应关系
//                .setNaming(NamingStrategy.no_change)
               //使用lombok
               .setEntityLombokModel(true)
               //使用 restcontroller 注解
               .setRestControllerStyle(true)
               // 生成的表, 支持多表一起生成,以数组形式填写
//                .setInclude("zqgk_study_admin", "zqgk_study_agents")
               .setInclude(new String[]{"APP_BD_STAFF"})
               // 去除表前缀
               .setTablePrefix("APP_BD_");

       //4. 包名策略配置
       PackageConfig pkConfig = new PackageConfig();
       pkConfig.setParent("com.lzw.oracledemo")
               // mapper层
               .setMapper("mapper")
               // service 层
               .setService("service")
               // controller 控制层
               .setController("controller")
               // 实体类包名  domain VO BO POJO...
               .setEntity("entity")
               // 生成 mapper.xml 模板文件
               .setXml("mapper.xml");
       //5. 整合配置
       AutoGenerator ag = new AutoGenerator();
       ag.setGlobalConfig(config)
               .setDataSource(dsConfig)
               .setStrategy(stConfig)
               .setPackageInfo(pkConfig);
       //6. 执行操作
       ag.execute();
       System.out.println("======= Done 相关代码生成完毕  ========");
   }

}

生成代码

执行完成后,会生成controller、service 等层的基础代码,将mapper文件移到resources目录下(位置可以通过配置文件自己指定)。如图。
在这里插入图片描述

编写代码,连接数据库,实现简单的业务接口

Mapper.xml文件

    <select id="getAllDatas" resultType="com.lzw.oracledemo.entity.Staff">
        select <include refid="Base_Column_List"/>
        from APP_BD_STAFF
    </select>

StaffMapper.interface

List<Staff> getAllDatas();

StaffService.interface

 List<Staff> getAllDatas();

StaffServiceImpl.java

    @Resource
    private StaffMapper staffMapper;

    @Override
    public List<Staff> getAllDatas() {
        return staffMapper.getAllDatas();
    }

StaffController.java

    @Resource
    private StaffService staffService;

    @GetMapping("getAllDatas")
    public List<Staff> getAllDatas() {
        List<Staff> staffList = staffService.getAllDatas();
        if (null == staffList || staffList.size() <= 0) {
            return null;
        }
        return staffList;
    }

请问接口

http://localhost:8089/staff/getAllDatas

在这里插入图片描述

至此,一个简单的Oracle项目完成。
完整项目地址:OracleDemo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/362594.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

归因分析笔记21 可解释的机器学习-李宏毅讲座

视频链接: https://www.bilibili.com/video/BV1Wv411h7kN/?p96&vd_source7259e29498a413d91ab48c04f9329855 课件链接: https://view.officeapps.live.com/op/view.aspx?srchttps%3A%2F%2Fspeech.ee.ntu.edu.tw%2F~hylee%2Fml%2Fml2021-course-data%2Fxai_v4.pptx&…

【数据结构与算法】数据结构的基本概念,时间复杂度

&#x1f349;内容专栏&#xff1a;【数据结构与算法】 &#x1f349;本文脉络&#xff1a;数据结构和算法的基本概念&#xff0c;时间复杂度 &#x1f349;本文作者&#xff1a;Melon西西 &#x1f349;发布时间 &#xff1a;2023.2.21 目录 一、引入&#xff1a; 二、数据结…

一键恢复和重装系统的区别是什么

如果电脑出现系统故障问题的时候&#xff0c;我们的电脑系统还原和系统重装都是很好的解决方法之一&#xff0c;不过是二者之间是有区别的。那么我们的电脑系统还原和系统重装有什么区别呢?现在就跟大家聊聊电脑一键恢复和重装系统的区别有哪些。 工具/原料&#xff1a; 系统…

P6软件应用的核心收益

卷首语 提供了多用户、多项目的功能模块&#xff0c;支持多层次项目等级划分&#xff0c;资源分配计划&#xff0c;记录实际数据&#xff0c;自定义视图&#xff0c;并具有用户定义字段的扩展功能。 利用最佳实践&#xff0c;建立企业模板库 P6软件支持用户使用模板编制项目…

Arduino-交通灯

LED交通灯实验实验器件&#xff1a;■ 红色LED灯&#xff1a;1 个■ 黄色LED灯&#xff1a;1 个■ 绿色LED灯&#xff1a;1 个■ 220欧电阻&#xff1a;3 个■ 面包板&#xff1a;1 个■ 多彩杜邦线&#xff1a;若干实验连线1.将3个发光二极管插入面包板&#xff0c;2.用杜邦线…

Sqoop介绍_以及安装_测试---大数据之Apache Sqoop工作笔记001

这个sqoop主要是用来,把数据从mysql中导入到hdoop中,去看看介绍吧. sql to hadoop 然后我们来看看sqoop,可以看到这里稳定版本是1.4.7 然后1.4.7 跟centos6.8 不是太好配置 这里用了1.4.6 但是如果用1.4.7 和centos7 还行 可以看看官网,这里sqoop1 跟sqoop2 这里标注了s…

【论文笔记】Manhattan-SDF == ZJU == CVPR‘2022 Oral

Neural 3D Scene Reconstruction with the Manhattan-world Assumption 本文工作&#xff1a;基于曼哈顿世界假设&#xff0c;重建室内场景三维模型。 1.1 曼哈顿世界假设 参考阅读文献&#xff1a;Structure-SLAM: Low-Drift Monocular SLAM in Indoor EnvironmentsIEEE IR…

【原创】java+swing+mysql宿舍管理系统设计与实现

今天我们主要来介绍如何使用swing图形化gui工具和mysql数据库去开发一个学生宿舍管理系统&#xff0c;这样一个比较经典的项目&#xff0c;学生宿舍管理系统&#xff0c;相信都很多人都不同程度的写过&#xff0c;从实现上来说不难。 功能分析&#xff1a; 学生宿舍管理系统&…

mysql中利用sql语句修改字段名称,字段长度等操作(亲测)

在网站重构中&#xff0c;通常会进行数据结构的修改&#xff0c;所以添加&#xff0c;删除&#xff0c;增加mysql表的字段是难免的&#xff0c;有时为了方便&#xff0c;还会增加修改表或字段的注释&#xff0c;把同字段属性调整到一块儿。这些操作可以在phpmyadmin或者别的mys…

Lazada选品推荐,这些爆品成了东南亚开年大赢家

小编今日整理了最新快消行业情报&#xff0c;带您解读东南亚市场玩具、母婴、美妆、食品、宠物类目的最新热销品类和发展方向&#xff0c;宠物。赶在大促前为商家朋友们助力一波&#xff01;STEM玩具、精细化拟人化宠物食品、便携香水……一大波商机正在赶来&#xff01;准备好…

编译链接实战(9)elf符号表

文章目录符号的概念符号表探索前面介绍了elf文件的两种视图&#xff0c;以及两种视图的各自几个组成部分&#xff1a;elf文件有两种视图&#xff0c;链接视图和执行视图。在链接视图里&#xff0c;elf文件被划分成了elf 头、节头表、若干的节&#xff08;section&#xff09;&a…

C++项目——高并发内存池(2)——thread_cache的基础功能实现

1.并发内存池concurrent memory pool 组成部分 thread cache、central cache、page cache thread cache&#xff1a;线程缓存是每个线程独有的&#xff0c;用于小于64k的内存的分配&#xff0c;线程从这里申请内存不需要加锁&#xff0c;每个线程独享一个cache&#xff0c;这…

算法学习与填充计划---2023.2.21---夏目

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石.CSDN &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​ &#x1f4e3;系列专栏&#xff1a;ACM周训练题目合集.CSDN &#x1f4ac;总结&#xff1a…

继 承

1.继承继承是面向对象三大特性之一有些类与类之间存在特殊的关系继承的好处: 减少重复代码语法: class 子类: 继承方式 父类子类也称为派生类 父类也称为基类class Python : public BasePage {public :void Content() {}};2.继承方式继承方式一共有三种:公共继承保护继承私有继…

Homekit智能家居一智能吸顶灯

买灯要看什么因素 好灯具的灯光可以说是家居的“魔术师”&#xff0c;除了实用的照明功能外&#xff0c;对细节的把控也非常到位。那么该如何选到一款各方面合适的灯呢&#xff1f; 照度 可以简单理解为清晰度&#xff0c;复杂点套公式来说照度光通量&#xff08;亮度&#x…

ChatGPT为什么不受开发者喜欢?

记得 ChatGPT 最开始上线不久的时候&#xff0c;看到的大部分尝鲜和测试结果都是开发者在做进行敲代码测试&#xff0c;可以说职业危机感非常强的一群人了。 再者&#xff0c;加上 ChatGPT 要使用起来其实是有一些技术门槛的&#xff0c;愿意折腾的人也多是程序员&#xff0c;…

操作系统和进程的资源消耗

free -h 获取操作系统当前内存Mem 行(第二行)是内存的使用情况。Swap 行(第三行)是交换空间的使用情况。total 列显示系统总的可用物理内存和交换空间大小。used 列显示已经被使用的物理内存和交换空间。free 列显示还有多少物理内存和交换空间可用使用。shared 列显示被共享使…

基于龙芯 2K1000 的嵌入式 Linux 系统移植和驱动程序设计(一)

2.1 需求分析 本课题以龙芯 2K1000 处理器为嵌入式系统的处理器&#xff0c;需要实现一个完成的嵌入式软件系统&#xff0c;系统能够正常启动并可以稳定运行嵌入式 Linux。设计网络设备驱 动&#xff0c;可以实现板卡与其他网络设备之间的网络连接和文件传输。设计 PCIE 设备驱…

自定义Ext JS组件类

在Ext JS 中如何自定义一个组件类呢? 实现方式是继承Ext.Component ,定义一个自己的组件类。 那么,这个组件类该怎样扩展自己的功能呢? 举例来说, 有这样一个需求: 扩展一个Grid的子类,通过pageType的属性值来显示不同的列。 如果是查看页面,则所有列都是不可编辑的如…

尚医通 (二十)预约挂号功能

目录一、预约挂号详情1、需求2、预约挂号详情接口3、预约挂号详情前端二、预约确认1、需求2、预约确认接口3、预约确认前端一、预约挂号详情 1、需求 接口分析 &#xff08;1&#xff09;根据预约周期&#xff0c;展示可预约日期数据&#xff0c;按分页展示 &#xff08;2&…