当前位置:首页 > 公众号精选 > 程序员鱼皮
[导读]前端传递:表名 user,字段 username 字符串、age 数字、is_ikun 布尔,并且把这些值封装为了一个对象

大家好,我是鱼皮。

前段时间,星球里一位学 Java 的朋友问我:

鱼皮你好,请问怎么能够根据前台用户的输入,自动创建和修改数据库的表呢?

在我看的视频教程中,都是先根据需求设计并且手动创建好库表,再去做增删改查。现在数据库表的字段是不固定的,就不知道怎么能动态地操作库表了。

这个问题并不难,所有的创建库表操作都是要通过 SQL 来执行的,所以我们只需要根据前端传来的字段来生成一句建表 SQL 就可以了。

举个例子:

前端传递:表名 user,字段 username 字符串、age 数字、is_ikun 布尔,并且把这些值封装为了一个对象

后端得到对象并进行遍历,生成下面的 SQL:

create table user {
 username varchar,
 age int,
 is_ikun boolean }

得到 SQL 后,让程序来自动执行即可。

本来以为这个问题已经解决了,但这位小伙伴又找到我说:

鱼皮,拼接 SQL 我可以写出来。但我用的是 MyBatis Plus,代码里也没有对应的 Mapper、IService 之类的,甚至连访问接口都没有。。。我该怎么控制程序读取这个代码创建的数据库呢?

看到这里,我明白了,又是一位被框架 “害了” 的朋友。

记得学 Java 基础时,我们就接触过 JDBC(Java 数据库连接 API),可以通过它来连接数据库并执行 任意 SQL 语句,就像下面这样:

// 连接数据库 Connection conn = DriverManager.getConnection(url,username,password); // 输入任意 SQL String sql = "insert into table values('鱼皮');";
PreparedStatement stat = conn.prepareStatement(sql); // 执行 SQL int update = stat.executeUpdate();

而 MyBatis 数据访问框架的底层正是 JDBC!无论是 MyBatis 还是 MyBatis Plus 框架,它们都是对 JDBC 进行了抽象封装(比如上面说的 Mapper),让我们少写或不写 SQL 完成开发。

也就是说,使用 MyBatis 框架,一样可以执行任意 SQL 语句!

你可以随便定义一个 Mapper,直接将任意完整的 SQL 作为 value 传递到 mapper.xml 中,比如下面这样:

<mapper namespace="com.yupi.MyMapper"> <insert id="insert" parameterType="java.lang.String"> ${value} insert> mapper> 

这样一来,我们就可以在业务逻辑层用 Java 代码来编写逻辑灵活生成 SQL,而不是把 SQL 写死到 mapper 里了。你甚至可以直接用最原始的 JDBC 来达成同样的效果!

但是要注意防止 SQL 注入问题

讲到这里,那位同学恍然大悟:what's up!怎么套了层框架之后,反而忘记了最原始的实现方式。真的是被框架束缚住了!

如他所说,的确很多初学编程的朋友都有这种情况:离了框架不会写代码、框架没有的功能就不会做。

或者换句话说?离了视频教程就不会写代码,老师不讲的功能就不会做。

虽然扎心,但是现实。

今年我也看了不少网上的视频教程,不得不说现在培训机构讲的很多课真的挺到位的,比起我大学那会(几年前)的课程好太多了,用最短的时间就能带你学会框架、开发完整项目。

但是,只跟着看视频是远远不够的!

  • 因为课程追求快速入门,所以给你思考的时间有限。
  • 因为课程追求快速入门,所以很多代码中的坑不会带你去踩。
  • 因为课程追求快速入门,所以很多扩展知识不会带你发现。

因此,如果你在学编程的过程中不主动思考、不多写代码、不多自己探索知识,你的思考能力、编程能力和知识积累就很有限。也就更容易被框架所束缚。

所以这里给大家几个学习的建议:

  1. 在刚开始学编程时,尽量老老实实按照路线去学习,像 jdbc、servlet 这种知识也要适当了解。
  2. 在学习框架时,多思考 一下它是怎么运作的,比如 Spring Boot 的注解,它做了些什么事?如果没有 Spring Boot,你又怎么达到同样的效果?虽然刚开始学框架时还是优先以会用为主,但你可以先把这些自己想到的问题记下来,之后再慢慢解决。
  3. 试着多用框架开发一些自己的类库和组件,比如开发 Spring Boot starter 或者前端的 hooks,可以帮助你更好地理解框架的原理,这些东西写在简历上可能会比 “xx 管理系统” 亮眼很多。
  4. 有空可以阅读官方文档,了解并实践框架的配置和更多特性,从而弥补一些视频中遗漏的知识点。这样一来,虽然大家用的都是同一个框架,但你能用得更好,写在简历上就会更出彩一些。

哦对了,最后再补充一点:做后端开发的同学,有机会的话还是要多写 SQL 语句!真的不要被 MyBatis Plus 这种框架 “锁” 住了。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

7月29日,Qorvo公布了截至2020年6月27日的2021财年第一财季(对应自然年为2020年2季度)业绩。财报显示,2021财年第一季度营收为7.87亿美元,同比上升1.53%,Qorvo首席财务官表示,5G的推出...

关键字: Qorvo 5G射频 前端

为了快速解决这些问题,鱼皮决定带大家一起学习和鉴定一些网络热门编程项目,希望能帮大家更快地选择适合自己的项目,少走弯路~本次是第 2 期,也是我 星球 里呼声相对比较高的项目 —— 尚医通(网上的视频教程总播放量过百万)...

关键字: 在线预约挂号项目 前端 后端

摘要:随着互联网经济的迅速普及,越来越多的消费者开始使用移动应用程序完成各种各样的电子商务活动。为了在不同的移动平台上最大限度地吸引消费者,选择一套合适的、兼容性可靠、成本较低的电子商务移动应用程序开发解决方案成为一个极...

关键字: 移动开发 web开发 前端

摘要:J2EE是目前企业开发的主流Java开发应用平台,文章主要介绍了轻量级J2EE中流行的Struts2、Spring和Hibernate三种框架。具体阐述了SSH框架的基本特征、优点以及SSH的无缝集成,并结合病房信...

关键字: 轻量级J2EE SSH 框架 无缝集成 病房信息管理系统

在软件研发这个领域,程序员的终极目标都是想成为一名合格的架构师。

关键字: 架构 框架 软件研发

在芯片性能提升有限的今天,分布式训练成为了应对超大规模数据集和模型的主要方法。本文将向你介绍流行深度学习框架 PyTorch 最新版本( v1.5)的分布式数据并行包的设计、实现和评估。 论文地

关键字: pytorch 机器学习 框架

近日,中国国防科技大学、美国加州大学洛杉矶分校和哈佛医学院的研究人员研发了一个深度强化学习框架FINDER。相比于现有的解决方案,FINDER能够更快速、更高效地找到复杂网络中一组最关键的节点,

关键字: AI 开发 框架

6月22日,国产射频芯片厂商—;—;飞骧科技宣布,经过两年的全力研发,于2020年6月正式发布一套完整的5G射频前端方案,实现了两个第一: 第一套完整支持所有5G频段的国产射频前端解决方案,第一套采用

关键字: 5G 前端 射频 飞骧科技

什么是Analog Devices ADRF5545A射频前端?它有什作用?专注于引入新品并提供海量库存的电子元器件分销商贸泽电子 (Mouser Electronics) 即日起备货Analog Devices, In...

关键字: 前端 射频 贸泽电子

众所周知,清华-伯克利深圳学院更是成立了“RISC-V 国际开源实验室”,直接将图灵奖得主、最早提出“精简指令集”(RISC)体系的大卫·帕特森(David Patterson)引入,抓住了开源和源创的源头,有可能在芯片...

关键字: 开源 框架
关闭