qwer666df
V2EX  ›  问与答

请教一个 Java 面试题

  •  
  •   qwer666df · Apr 1, 2021 · 3401 views
    This topic created in 2045 days ago, the information mentioned may be changed or developed.

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

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

    然后前端有一个 <列表>

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

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

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

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

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

    不知道是否符合题主所说的问题。
    arthas2234
    arthas2234
    Apr 1, 2021
    9
    暴露表结构给前端,并不是一个好的设计
    zm8m93Q1e5otOC69
    zm8m93Q1e5otOC69
    Apr 1, 2021
    10
    $ 就可以了吧,有啥不能动态的
    xiaoxinshiwo
    xiaoxinshiwo
    Apr 1, 2021
    11
    json 格式存储也可
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1356 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 17:11 · PVG 01:11 · LAX 09:11 · JFK 12:11
    ♥ Do have faith in what you're doing.