mybatis执行完一条sql再去执行另外一条
时间: 2023-08-13 18:05:59 浏览: 108
mybatis直接执行sql语句后续之一
在 MyBatis 中执行多条 SQL 语句通常有两种方式:
1. 使用多个 `select`、`insert`、`update`、`delete` 标签分别定义每个 SQL 语句,然后在 Java 代码中分别调用它们。
2. 使用 MyBatis 提供的 `selectKey`、`insert`、`update`、`delete` 标签来定义多个 SQL 语句,然后在 Java 代码中执行它们。
对于第一种方式,你可以在 MyBatis 的 Mapper XML 文件中定义多个 `select`、`insert`、`update`、`delete` 标签,然后在 Java 代码中分别调用这些标签对应的 SQL 语句。例如:
```xml
<!-- 定义第一个 SQL 语句 -->
<select id="selectUserById" parameterType="int" resultType="User">
SELECT * FROM user WHERE id = #{id}
</select>
<!-- 定义第二个 SQL 语句 -->
<update id="updateUser" parameterType="User">
UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
</update>
```
然后在 Java 代码中分别调用这两个 SQL 语句:
```java
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
// 调用第一个 SQL 语句
User user = sqlSession.selectOne("selectUserById", 1);
// 调用第二个 SQL 语句
user.setName("John");
user.setAge(30);
sqlSession.update("updateUser", user);
sqlSession.commit();
} finally {
sqlSession.close();
}
```
对于第二种方式,你可以在 MyBatis 的 Mapper XML 文件中使用多个 `selectKey`、`insert`、`update`、`delete` 标签定义多个 SQL 语句,然后在 Java 代码中使用 `SqlSession` 的 `selectOne`、`insert`、`update`、`delete` 方法执行这些 SQL 语句。例如:
```xml
<!-- 定义第一个 SQL 语句 -->
<insert id="insertUser" parameterType="User">
<selectKey resultType="int" keyProperty="id" order="BEFORE">
SELECT IFNULL(MAX(id), 0) + 1 FROM user
</selectKey>
INSERT INTO user (id, name, age) VALUES (#{id}, #{name}, #{age})
</insert>
<!-- 定义第二个 SQL 语句 -->
<update id="updateUser" parameterType="User">
UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
</update>
```
然后在 Java 代码中分别调用这两个 SQL 语句:
```java
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
// 调用第一个 SQL 语句
User user = new User();
user.setName("John");
user.setAge(30);
sqlSession.insert("insertUser", user);
// 调用第二个 SQL 语句
user.setName("John Doe");
user.setAge(31);
sqlSession.update("updateUser", user);
sqlSession.commit();
} finally {
sqlSession.close();
}
```
无论哪种方式,你都可以在 Java 代码中执行多个 SQL 语句,只需要在 `SqlSession` 中依次调用对应的方法即可。
阅读全文