springboot如何初始化执行sql语句


Posted in Java/Android onJune 22, 2021

springboot初始化执行sql语句

开发的时候需要增加一些函数和表,同时因为一些基础数据例如字典表也需要插入一些数据,当然我可以跟组员说一声然后把sql语句给他们在本地执行,但是这样太low,不够自动化。

于是就开始研究如何在springboot启动时执行sql语句

最后查到资料

spring.datasource.schema=classpath:schema.sql

这个配置项决定建库文件的位置,注意classpath,之前我在网上查找资料都没有这个classpath,结果我的schema.sql文件放在哪都不好使,后来加上classpath才好用,文件放在resource下面就行了

我发现后面才是坑的地方,建立方法。

新建方法,首先要先删掉它,不然会报错,当然,方法里没有数据,自然想删就删,但是除此之外还有很多坑

drop function if exists `getChildrenProductName`;|
create function `getChildrenProductName`(orgid varchar(50))
returns varchar(4000)
BEGIN
DECLARE `oTemp` VARCHAR(4000);
DECLARE `oTempChild` VARCHAR(4000);
DECLARE `oTempName` VARCHAR(4000);
DECLARE `oTempChildName` VARCHAR(4000);
DECLARE i int;
SET oTemp = CAST(orgid AS CHAR);
SET oTempChild = CAST(orgid AS CHAR);
set oTempName = '$';
set oTempChildName = '';
set i = 0;
WHILE oTempChild IS NOT NULL
DO
if i>0 then
set oTempName = concat(oTempName,",",oTempChildName);
end if;
SET oTemp = CONCAT(oTemp,',',oTempChild);
set i = i +1;
SELECT GROUP_CONCAT(p.product_name,p.partnum) into oTempChildName FROM product p
left join bom b on b.PartID = p.PartID
 WHERE FIND_IN_SET(b.ParentPartID,oTempChild) > 0;
SELECT GROUP_CONCAT(p.PartID) INTO oTempChild FROM product p
left join bom b on b.PartID = p.PartID
 WHERE FIND_IN_SET(b.ParentPartID,oTempChild) > 0;
END WHILE;
RETURN oTempName;
END;|

我这个人做事是步步为营的,都是先在数据库里执行了sql语句能用才会写上去的,但是我发现在mysql中能使用,放到schema.sql语句中就不好使了。在网上找了半天资料,发现没有提到这个问题的

过程就不说了,折腾了半天,我debug才发现,springboot框架把默认是按;号来分割语句的,所以创建函数时,他就把整个创建的语句按;号分割了,自然就报错了,这就是我在上面使用 | 的原因

当然,这也要配置

spring.datasource.separator=|

这样就可以了

对了,还有插入数据的需要,因为我是后添加的数据,所以不能重复添加,只有不存在数据才能添加,这个方法是我网上找的,可以用

INSERT INTO table(field1, field2, fieldn) SELECT 'field1', 'field2', 'fieldn' FROM DUAL WHERE NOT EXISTS(SELECT field FROM table WHERE field = ?)

springboot项目中自己编写sql语句并调用

第一步:在 mapper 的接口中定义方法(使用到的PublishVo对象需要自己定义):

springboot如何初始化执行sql语句

第二步:在 mapper 对应的 xml 文件中写 SQL 语句:

springboot如何初始化执行sql语句

注意:xml 文件中 select 标签的 id 属性就是上一步在 mapper 接口中定义的那个方法名,resultType 就是返回的类型,在上一步的 mapper 接口中的返回类型是自定义的实体类型 PublishVo,因此就写上实体类 PublishVo 的全路径。

SQL语句的条件值要使用#,不能使用$,因为$会产生SQL注入问题。

第三步: 在 Controller 中编写 mapper 的调用

springboot如何初始化执行sql语句

第四步:编写 service:

springboot如何初始化执行sql语句

第五步:编写 service 的实现类:

springboot如何初始化执行sql语句

然后再前端写方法调用后端的接口即可

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Java/Android 相关文章推荐
解析Java异步之call future
Jun 14 Java/Android
详解Java实践之抽象工厂模式
Jun 18 Java/Android
gateway与spring-boot-starter-web冲突问题的解决
Jul 16 Java/Android
java设计模式--七大原则详解
Jul 21 Java/Android
在Spring-Boot中如何使用@Value注解注入集合类
Aug 02 Java/Android
Java spring单点登录系统
Sep 04 Java/Android
Java8中接口的新特性使用指南
Nov 01 Java/Android
springboot如何接收application/x-www-form-urlencoded类型的请求
Nov 02 Java/Android
Android自定义ScrollView实现阻尼回弹
Apr 01 Java/Android
Spring Cloud OpenFeign模版化客户端
Jun 25 Java/Android
向Spring IOC 容器动态注册bean实现方式
Jul 15 Java/Android
Java使用HttpClient实现文件下载
Aug 14 Java/Android
Java循环队列与非循环队列的区别总结
Jun 22 #Java/Android
springBoot基于webSocket实现扫码登录
Jun 22 #Java/Android
SpringBoot集成Redis,并自定义对象序列化操作
Java如何实现树的同构?
启动Tomcat时出现大量乱码的解决方法
详解java如何集成swagger组件
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
You might like
PHP+MYSQL的文章管理系统(一)
2006/10/09 PHP
PHP+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
php chr() ord()中文截取乱码问题解决方法
2008/09/08 PHP
解析百度搜索结果link?url=参数分析 (全)
2012/10/09 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
javascript五图轮播切换实用版
2012/08/17 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
2014/10/16 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
2015/09/16 Javascript
JS实现保留n位小数的四舍五入问题示例
2016/08/03 Javascript
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
微信小程序 循环及嵌套循环的使用总结
2017/09/26 Javascript
详解element-ui中el-select的默认选择项问题
2019/08/02 Javascript
原生JS实现贪吃蛇小游戏
2020/03/09 Javascript
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
利用Python和OpenCV库将URL转换为OpenCV格式的方法
2015/03/27 Python
5种Python单例模式的实现方式
2016/01/14 Python
python高阶爬虫实战分析
2018/07/29 Python
python实现kmp算法的实例代码
2019/04/03 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
2020/02/20 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
html5-canvas中使用clip抠出一个区域的示例代码
2018/05/25 HTML / CSS
伦敦高达60%折扣的钻石珠宝商:Purely Diamonds
2018/06/24 全球购物
Groupon比利时官方网站:特卖和网上购物高达-70%
2019/08/09 全球购物
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
巴西网上药店:Drogaria Araujo
2021/01/06 全球购物
简单而又朴实的个人求职信分享
2013/12/12 职场文书
金融行业职业生涯规划范文
2014/01/17 职场文书
满月酒主持词
2014/03/27 职场文书
2014中考励志标语
2014/06/05 职场文书
学校与家长安全责任书
2014/07/23 职场文书
励志演讲稿300字
2014/08/21 职场文书
群众路线教育实践活动对照检查材料思想汇报(副处级领导)
2014/10/04 职场文书
班主任工作实习计划
2015/01/16 职场文书
win10搭建配置ftp服务器的方法
2022/08/05 Servers