首页 > 编程语言 >学编程框架的建议

学编程框架的建议

时间:2024-07-21 18:18:21浏览次数:10  
标签:建议 框架 数据库 编程 SQL MyBatis 代码

前段时间,一位学 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.xiao.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 这种框架 “锁” 住了。

标签:建议,框架,数据库,编程,SQL,MyBatis,代码
From: https://www.cnblogs.com/qimoxuan/p/18314776

相关文章

  • C++多线程编程中的锁详解
    在现代软件开发中,多线程编程是提升应用程序性能和响应能力的重要手段。然而,多线程编程也带来了数据竞争和死锁等复杂问题。为了确保线程间的同步和共享数据的一致性,C++标准库提供了多种锁机制。1.std::mutexstd::mutex是最基础的互斥锁,用于保护共享数据,防止多个线程同时访问......
  • Java 网络编程
    文章目录一、概念二、网络编程三要素三、UDP通信3.1发送端3.2接收端3.3运行结果四、TCP通信4.1发送端4.2接收端4.3运行结果五、三次握手、四次挥手5.1三次挥手(建立连接)5.5四次挥手(数据完整)一、概念在Java中,网络编程指的是计算机之间通过网络来进行通......
  • Leetcoede编程基础0到1——459.重复的子字符串 & 283.移动零 &1822.数组元素积的符号
    459.重复的子字符串给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。示例1:输入:s="abab"输出:true解释:可由子串"ab"重复两次构成。示例2:输入:s="aba"输出:false示例3:输入:s="abcabcabcabc"输出:true解释:可由子......
  • Linux下编程常用基本命令
    Linux常用命令文件操作命令ls命令列出文件和目录命令ls-l//列出文件和目录的详细信息ls-R//列出所有文件ls-a//列出隐藏文件mv命令移动和重命名命令mvexample.txt/lem///移动目录下mvoldnamenewname//重命名rm命令移除命令rmexample.txt/......
  • 模块1 课程准备 --- 第三章:建立面向对象的编程思想
    第三章建立面向对象的编程思想主要知识点:1、理解面向对象编程的基本思想。2、掌握面向对象编程的一般方法。3、能够运用Java语言编写简单的应用程序。学习目标:掌握面向对象编程的基本思想解释:面向过程编程从解决每一个步骤入手,适合于解决比较小的简......
  • Java基础编程500题
    前言✌大家好,我是安晴晚风。本专栏整理了《Java基础编程题500题》,涵盖的知识点包括顺序结构、分支结构、循环结构、数组、方法、字符串、面向对象、集合、正则表达式、StreamAPI、反射、多线程等知识点。题目✨题目正在持续更新中,敬请期待吧~✨欢迎点赞、评论、收......
  • 实验8.混合编程实现打印字符函数
    简介实验:混合编程实现打印字符函数仓库地址:https://gitee.com/caicunjun/tityos代码引导省略内核main.c//文件:main.c//时间:2024-07-19//来自:ccj//描述:内核从此处开始#include"print.h"intmain(void){uint8_ti='A';while(i<......
  • 基于 Mockito 框架的 Mock 测试
    1.什么是Mock测试Mock通常是指,在测试一个对象A时,我们构造一些假的对象(一般是不容易构造或者不容易获取的对象,比如测试类所依赖的实现类、第三方接口、数据库操作对象)来模拟与A之间的交互,这些对象被称为Mock对象,而Mock对象的行为是我们事先设定且符合预期。通过......
  • 第七章 元类编程
    目录8.1元类的基本概念什么是元类?8.2自定义元类自定义元类的创建8.3元类的应用场景自动注册单例模式8.4使用元类实现接口检查8.5动态修改类8.6元类的嵌套使用8.7元类与装饰器的结合示例代码:8.8元类的实际应用案例案例1:实现ORM框架中的模型类自动注册案......
  • C++面向对象编程的一个核心概念--RAII
    RAII是"ResourceAcquisitionIsInitialization"(资源获取即初始化)的缩写,它是C++编程中的一种编程技术,用于管理资源的生命周期。RAII是C++面向对象编程的一个核心概念,它利用对象的构造函数和析构函数来自动管理资源,如内存、文件句柄、线程、互斥锁等。RAII的主要原则包括:1.*......