问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用sql语句可以直接导入excel到MySQL,那这个sql语句能不能由Java传给数据库,就像普通的增删改查一样

发布网友 发布时间:2022-04-08 00:05

我来回答

7个回答

懂视网 时间:2022-04-08 04:26

前言
话说企业应用,一般离不开数据库。要做数据库,可以有N种方案,比如:直接采用JDBC层自己封装下使用的,采用一些框架的,如:iBatis,Hiberate,Spring JDBC Template等等(这个太多了,因此不一一列举)的,这些方案也都在各自的领域展示了自己的特点,解决了相当部分的技术问题,并取得了相当好的应用效果。 
但是不管是哪种方案,其优点和缺点往往也是连在一起的,究其原因是因为SQL和Java编程之间是割裂的,如果封装得不到位,做Java的人太难使用;如果封装得太多,在做一些用复杂SQL的时候又非常麻烦。比如:Hibernate就采用了封装HQL的方式来解决这方面的问题。iBatis对于SQL支持比较好,但是又会有一些割裂感,同时在解决时还要引入动态SQL来解决需要根据一些运行时条件来处理的问题,一定程度上又增加了使用的复杂度。 
那么问题就来了,有没有更好的方式来解决数据库应用开发过程中的问题呢?究其根本原因是要如何解决数据库开发中的SQL与Java代码之间的割裂问题,如果能把这个问题解决掉,理论上会有一个不错的解。 
我们知道SQL实际是是一种数据为领域的DSL语言,如果我们能直接在Java中编写SQL,然后执行结果就可以直接返回Java对象,这个问题不就有了良好的解决方案么? 
TinySqlDsl解决方案
实际上这方面已经有一些现成的解决方案,但是有的不是开源的,有的支持的还不是非常到位,因此悠然就决定尝试着写一下,写了半天时间看了看效果,详见RESTful风格的支持实践一文,内部讨论了一下,感觉还不错,于是正式决定正式花时间来编写一个TinySqlDsl,当然实际编写的时候,还是有许多的问题点的,以至于最终的风格与上面的文章还有一些不一致,当然这也是正常的,容易理解的,否则那什么也太神了。 
我们常见的SQL语句有Select、Insert、Update、Delete,因此我们的方案中也实现了这几个语句的编写方式。 
首先来看看看TinySqlDsl版的Dao是怎么写的。 
第一步:定义POJO

  1. <strong>public class Custom {
  2. private String id;
  3. private String name;
  4. private int age;
  5. public String getId() {
  6. return id;
  7. }
  8. public void setId(String id) {
  9. this.id = id;
  10. }
  11. public String getName() {
  12. return name;
  13. }
  14. public void setName(String name) {
  15. this.name = name;
  16. }
  17. public int getAge() {
  18. return age;
  19. }
  20. public void setAge(int age) {
  21. this.age = age;
  22. }
  23. }
  24. </strong>
复制代码

第二步:定义表结构定义文件

  1. public class CustomTable extends Table {
  2. public static final CustomTable CUSTOM = new CustomTable();
  3. public final Column ID = new Column(this, "id");
  4. public final Column NAME = new Column(this, "name");
  5. public final Column AGE = new Column(this, "age");
  6. private CustomTable() {
  7. super("custom");
  8. }
  9. }
复制代码


第三步:编写DAO类

  1. public class CustomDao {
  2. private DslSession dslSession;
  3. public DslSession getDslSession() {
  4. return dslSession;
  5. }
  6. public void setDslSession(DslSession dslSession) {
  7. this.dslSession = dslSession;
  8. }
  9. public void insertCustom(Custom custom) {
  10. dslSession.execute(
  11. insertInto(CUSTOM).values(
  12. CUSTOM.ID.value(custom.getId()),
  13. CUSTOM.NAME.value(custom.getName()),
  14. CUSTOM.AGE.value(custom.getAge())
  15. )
  16. );
  17. }
  18. public void updateCustom(Custom custom) {
  19. dslSession.execute(
  20. update(CUSTOM).set(
  21. CUSTOM.NAME.value(custom.getName()),
  22. CUSTOM.AGE.value(custom.getAge())).where(
  23. CUSTOM.ID.eq(custom.getId())
  24. )
  25. );
  26. }
  27. public void deleteCustom(String id) {
  28. dslSession.execute(
  29. delete(CUSTOM).where(
  30. CUSTOM.ID.eq(id)
  31. )
  32. );
  33. }
  34. public Custom getCustomById(String id) {
  35. return dslSession.fetchOneResult(
  36. selectFrom(CUSTOM).where(
  37. CUSTOM.ID.eq(id)
  38. )
  39. , Custom.class);
  40. }
  41. public List<Custom> queryCustom(Custom custom) {
  42. return dslSession.fetchList(
  43. selectFrom(CUSTOM).where(
  44. and(
  45. CUSTOM.ID.eq(custom.getId()),
  46. CUSTOM.NAME.equal(custom.getName()),
  47. CUSTOM.AGE.equal(custom.getAge())
  48. )
  49. )
  50. , Custom.class);
  51. }
  52. }
复制代码


看了上面的示例,会不会感觉有点奇怪,怎么可以这么写?呵呵,先别着急了解实际的实现机理,我们先品味一下这种DSL风格的数据库编写方式,嗯嗯,具体的来说就是像写SQL一样的方式来写SQL。

像写SQL一样编写Java数据应用-TinySqlDsl

标签:

热心网友 时间:2022-04-08 01:34

当然可以,最基础的是用jdbc,实际你还可以用很多框架去做。甚至连sql都不用写的。

热心网友 时间:2022-04-08 02:52

可以把excel中的state那一列隐藏掉,那样再用sql语句导入MySql时就不会出现state的字段了。

热心网友 时间:2022-04-08 04:27

直接按路径读取excel文件,导入mysql数据库的代码百度是可搜到哒~

热心网友 时间:2022-04-08 06:18

哪个语句可以直接将EXCEL文件导入到Mysql数据库呢?搜了很久都没搜到,麻烦您有空讲一下。

热心网友 时间:2022-04-08 08:26

数据库是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。在信息化社会,充分有效地管理和利用各类信息资源,是进行科学研究和决策管理的前提条件。数据库技术是管理信息系统、办公自动化系统、决策支持系统等各类信息系统的核心部分,是进行科学研究和决策管理的重要技术手段。数据库是一个单位或是一个应用领域的通用数据处理系统,它存储的是属于企业和事业部门、团体和个人的有关数据的集合。数据库中的数据是从全局观点出发建立的,按一定的数据模型进行组织、描述和存储。其结构基于数据间的自然联系,从而可提供一切必要的存取路径,且数据不再针对某一应用,而是面向全组织,具有整体的结构化特征。数据库中的数据是为众多用户所共享其信息而建立的,已经摆脱了具体程序的*和制约。不同的用户可以按各自的用法使用数据库中的数据;多个用户可以同时共享数据库中的数据资源,即不同的用户可以同时存取数据库中的同一个数据。数据共享性不仅满足了各用户对信息内容的要求,同时也满足了各用户之间信息通信的要求。

热心网友 时间:2022-04-08 10:51

当然可以直接使用java导入了,JDBC + excel的驱动(可以是ODBC)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
正确的调搓丝板方法 正确的调搓丝板方法介绍 搓丝板失效的多种原因及如何预防? 副职领导签批公文技巧 上级审批意见怎么写 怎么卸摘网吧电脑上的“世界之窗”浏览器 怎么才能卸载世界之窗浏览器? 麻烦帮我翻译两个句子,谢谢,谢谢。 ...结构层次和结构关系 原理讲下 谢谢谢谢 老师讲过了我么听懂啊_百度... 这两个句子的主干是什么,谢谢谢谢 为什么会有人选择一辈子不结婚呢? 说话早的孩子聪明吗 仙剑三中的隐藏宝物在哪里,有哪些东西 prey游戏里pc操控怎么丢弃物品栏里的物品 西游记一至七回写什么100字概括全部,急需!! 西游记1到7回中孙悟空的名号先后依次为什么? 请你概括西游记第一到七回的主要内容。 下一代的网络是神经计算机网络吗? 西游记第一回到第七回概括? 下一代网络的基本介绍 什么是下一代互联网? 西游记1~7回概括 什么是”下一代互联网” IMS与下一代网络的简介 什么是下一代网络 下一代互联网是什么 什么叫U时代? 为什么电脑开机后cpu风扇不会转? ngn是什么? 厦门最美校服女生郑凌莉照片个人资料 下一代互联网的主要特征是什么? 孩子说话早晚决定智商 到底是开口早的孩子聪明,还是说话迟的更聪明呢? 孩子说话早一定聪明吗 小孩子说话早属于聪明吗 究竟是早开口说话的宝宝聪明,还是晚开口说话的宝宝智商更高呢? 说话晚的孩子聪明还是说话早的孩子聪明? 宝宝说话早就一定聪明吗 说话早的孩子智商高么? 四五前后有好码中特,会不会是猪肖 说话早的孩子聪明吗? 今晚34期开什么码? 安装了可以强制的 在用户不知情的情况下打开摄像头的软件 在电脑未关机但屏幕是黑着的情况下? 为什么我手提电脑按键按出来不是对应的字母或数字 无限宝上课屏幕能横过来吗? 阳泉市中特阀门有限公司怎么样? 无限宝在电视中可投屏嘛? 赌侠9999kk精选12码 怎样减少衣服静电? 华为手机电筒在哪里? 手机已登了码,要怎样返回到登录页?