V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
qwer666df
V2EX  ›  问与答

请教一个 Java 面试题

  •  
  •   qwer666df · 2021-04-01 10:00:18 +08:00 · 1344 次点击
    这是一个创建于 412 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Java 使用 mybatis 能否完成自定义的 insert 查询

    A 表是配置表 里面存的是数据库字段名

    然后前端有一个 <列表>

    里面字段名是从 A 表动态读的, 这里有啥前端就显示啥

    然后问 数据表数据库应该怎么设计 或者 有什么其他思路

    这个,在 php,go 里面很好实现, 凭借好语句直接发送给 db query 就好了.

    但是, Java 里面好像是要 xml 映射吧? 没法做到动态

    11 条回复    2021-04-01 16:51:19 +08:00
    huyujievip
        1
    huyujievip  
       2021-04-01 10:05:59 +08:00 via iPhone
    MyBatis Plus 可以实现简单的查询
    huyujievip
        2
    huyujievip  
       2021-04-01 10:08:20 +08:00 via iPhone
    也需要创建 xml,但是不需要编写查询语句,使用 MyBatis Plus 的 queryMappr 对象可以组织查询或者插入条件
    assiadamo
        3
    assiadamo  
       2021-04-01 10:10:20 +08:00
    没必要特别设计吧,表需要存什么数据就是什么数据,然后 jdbc 有接口可以获取表和库的元数据,列名和类型全都能获取出来,既然 jdbc 能,在 jdbc 上的 mybatis 肯定也能
    之后就可以组装数据,一套前端模板就可以显示 N 个表了
    Dimomo
        4
    Dimomo  
       2021-04-01 10:10:27 +08:00
    mybatis annotation
    RuzZ
        5
    RuzZ  
       2021-04-01 11:28:57 +08:00
    如果是要简单的拼接 sql,直接用 jdbcTemplate 就可以了;如果是想动态映射 bean 到数据库,不写 xml 映射这种的,jooq 、mybatis dynamic sql 、甚至 mybatis-plus 都可以。
    RuzZ
        6
    RuzZ  
       2021-04-01 11:34:59 +08:00
    @RuzZ 看你的描述,应该是 bean 到数据库的映射是确定的,但是 select 的字段和 where 条件是动态变化的,这种 mybatis dynamic sql 和 jooq 应该可以满足你的要求,不过这个 mybatis dynamic sql 社区资料不是很丰富,jooq 相对丰富一些,你可以自己调研看看
    rancc
        7
    rancc  
       2021-04-01 11:37:05 +08:00
    实现 mybatis-plugin,根据配置内容在 Interceptor 里拼接要执行的 sql
    whitelee8080
        8
    whitelee8080  
       2021-04-01 11:41:34 +08:00
    mybatis 可以动态查询
    ```xml
    <select id="dyQuery" resultType="java.util.Map" parameterType="java.lang.String" statementType="STATEMENT">
    select
    ${field}
    from
    ${tableName}
    </select>
    ```
    将 A 表保存的字段名(拼接好的),数据库名传如就行,但是有 sql 注入风险。

    不知道是否符合题主所说的问题。
    arthas2234
        9
    arthas2234  
       2021-04-01 11:44:36 +08:00
    暴露表结构给前端,并不是一个好的设计
    beichenhpy
        10
    beichenhpy  
       2021-04-01 12:41:35 +08:00
    $ 就可以了吧,有啥不能动态的
    xiaoxinshiwo
        11
    xiaoxinshiwo  
       2021-04-01 16:51:19 +08:00
    json 格式存储也可
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2944 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 14:07 · PVG 22:07 · LAX 07:07 · JFK 10:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.