Java导入SQL文件导入并执行,结合Mybatis使用
2021/6/29 19:23:47
本文主要是介绍Java导入SQL文件导入并执行,结合Mybatis使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
SQL文件导入并执行
- 前端代码
- Java代码
- RunSqlMapper.java
- RunSqlMapper.xml
- Controller文件
- ServiceImpl文件
前端代码
略,比较简单的文件上传,这里就不写了
Java代码
由于要结合Mybatis使用所以就需要创建Mapper文件了
RunSqlMapper.java
和你的其他Mapper文件放一起就行了,要被扫描到
public interface RunSqlMapper extends BaseMapper<T> { //执行sql语句 public void runSqlBySqlStr(String sqlStr); }
RunSqlMapper.xml
我这里执行的sql语句是新增语句,如果是查询语句的话情况略微不同,需要加上resultMap返回查询的格式
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="RunSqlMapper的位置"> //执行sql语句 <select id="runSqlBySqlStr" parameterType="java.lang.String"> <![CDATA[${sqlStr}]]> </select> </mapper>
Controller文件
/** * 导入sql数据 * * @param request * @param response * @return */ @RequestMapping(value = "/importSql", method = RequestMethod.POST) public Result<?> importSql(HttpServletRequest request, HttpServletResponse response) { return 调用service的方法(request, response); }
ServiceImpl文件
@Resource private RunSqlMapper runSqlMapper; /** * 导入sql文件 * * @param request * @param response * @return */ protected Result<?> importSql(HttpServletRequest request, HttpServletResponse response) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { MultipartFile file = entity.getValue();// 获取上传文件对象 List<String> sqlList = new ArrayList<String>(); InputStream sqlFileIn = null; try { sqlFileIn = file.getInputStream(); int available = sqlFileIn.available(); if (available == 0){ throw new RuntimeException("文件内容为空,请检查后再进行导入"); } StringBuffer sqlSb = new StringBuffer(); byte[] buff = new byte[1024]; int byteRead = 0; while ((byteRead = sqlFileIn.read(buff)) != -1) { sqlSb.append(new String(buff, 0, byteRead)); } // Windows 下换行是 \r\n, Linux 下是 \n String[] sqlArr = sqlSb.toString() .split("(;\\s*\\r\\n)|(;\\s*\\n)"); for (int i = 0; i < sqlArr.length; i++) { String sql = sqlArr[i].replaceAll("--.*", "").trim(); if (!sql.equals("")) { sqlList.add(sql); } } for (String sql:sqlList){ Boolean b = sql != null && (sql.contains("insert") || sql.contains("INSERT")); if (b){ runSqlMapper.runSqlBySqlStr(sql); }else { throw new JeecgBootException(sql + " sql语句错误"); } } return Result.ok("文件导入成功!数据行数:" + sqlList.size()); } catch (Exception e) { log.error(e.getMessage(), e); return Result.error("文件导入失败:" + e.getMessage()); } finally { try { sqlFileIn.close(); } catch (IOException e) { e.printStackTrace(); } } } return Result.error("文件导入失败!"); }
这篇关于Java导入SQL文件导入并执行,结合Mybatis使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器