投稿用户
更新时间:2025-11-10
335
大家好,我是鱼皮。
前段时间,星球里一位学 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 中,比如下面这样:
相关阅读
相关产品