【问题标题】:Insert value into table from another table mybatis xml从另一个表mybatis xml将值插入表中
【发布时间】:2020-07-22 17:28:15
【问题描述】:

我想知道我是否需要在第一次 INSERT 后返回值,然后将其传递给下一个 INSERT,或者我可以使用这种代码

<insert id="CreateUser" parameterType="com.portale.model.UserObject">
        INSERT INTO users(user_org, user_login, user_pass, locked)
        VALUES (#{organization},#{username},#{password},#{locked})
        INSERT INTO users_details(details_id, nome, cognome)
        VALUES ((SELECT users.user_id FROM users WHERE user_login = #{username}),#{nome},#{cognome})
</insert>

这段代码给我一个错误

### Error updating database.  Cause: org.postgresql.util.PSQLException: ОШИБКА: ошибка синтаксиса (примерное положение: "INSERT") Позиция: 87
### The error may exist in file [D:\Users\Eclipse and VM\Tomcat\apache-tomcat- 8.5.53\wtpwebapps\com.portale\WEB-INF\classes\com\portale\mapper\UserMapper.xml]
### The error may involve com.portale.mapper.UserMapper.CreateUser-Inline
### The error occurred while setting parameters
### SQL: INSERT INTO users(user_org, user_login, user_pass, locked)    VALUES (?,?,?,?)    INSERT INTO users_details(details_id, nome, cognome)    VALUES ((SELECT users.user_id FROM users WHERE user_login = ?),?,?)
### Cause: org.postgresql.util.PSQLException: ОШИБКА: ошибка синтаксиса (примерное положение: "INSERT") Позиция: 87;
bad SQL grammar []; nested exception is org.postgresql.util.PSQLException: ОШИБКА: ошибка синтаксиса (примерное положение: "INSERT") Позиция: 87!!!! Exception cause!!!! org.postgresql.util.PSQLException: ОШИБКА: ошибка синтаксиса (примерное положение: "INSERT") Позиция: 87

但是所有参数都是在代码中传递的。

我可以在 MyBatis 中使用 (SELECT...) 和 (INSERT) 吗?这是错误的方法还是传递参数的问题?

【问题讨论】:

    标签: postgresql mybatis


    【解决方案1】:

    问题是一个简单的“;”失踪。 在第一个查询(INSERT)之后,当然 sql 需要知道下一个 INSERT 是一个新查询,所以在写完第一个查询之后你需要放一个“;”

    <insert id="CreateUser" parameterType="com.portale.model.UserObject">
        INSERT INTO users(user_org, user_login, user_pass, locked)
        VALUES (#{organization},#{username},#{password},#{locked});
        INSERT INTO users_details(details_id, nome, cognome)
        VALUES ((SELECT users.user_id FROM users WHERE user_login = #{username}),#{nome},#{cognome})
    </insert>
    

    【讨论】:

      猜你喜欢
      • 2014-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-05
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      相关资源
      最近更新 更多