SQL标签-sql:transaction

<sql:transaction>标签用于事务管理。它用于将多个<sql:update>放在一个事务中。如果在一个事务中将执行多个SQL查询,则只会查询1次数据库。

<sql:transaction>标签用于确保可以在执行数据库修改过程中添加commit()或rollback()操作。

<sql:transaction>标签的语法:

<sql:transaction dataSource="${db}">
    <sql:update var="count">
        UPDATE user SET username = 'lucy' WHERE id = 1
    </sql:update>
    <sql:update var="count">
        UPDATE user SET username= 'rose' WHERE id = 2
    </sql:update>
    <sql:update var="count">
        INSERT INTO user(username,password,birth) VALUES ('yiidian', '123456', '1990/10/06');
    </sql:update>
</sql:transaction>

1 sql:transaction的示例

1.1 创建表和插入数据集

在MySQL的test数据库中创建t_user表:

CREATE TABLE `user` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `username` varchar(50) DEFAULT NULL,
   `password` varchar(50) DEFAULT NULL,
   `birth` date DEFAULT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8

插入一些测试数据:

1.2 编写index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%@ page import="java.util.Date" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<html>
<head>
    <title>一点教程网-标签示例</title>
</head>
<body>

<sql:setDataSource var="db" driver="com.mysql.jdbc.Driver"
                   url="jdbc:mysql://localhost:3306/test"
                   user="root"  password="root"/>


<sql:transaction dataSource="${db}">
    <sql:update var="count">
        UPDATE user SET username = 'lucy' WHERE id = 1
    </sql:update>
    <sql:update var="count">
        UPDATE user SET username= 'rose' WHERE id = 2
    </sql:update>
    <sql:update var="count">
        INSERT INTO user(username,password,birth) VALUES ('yiidian', '123456', '1990/10/06');
    </sql:update>
</sql:transaction>

<sql:query dataSource="${db}" var="rs">
    SELECT * from user;
</sql:query>

<table border="1" width="100%">
    <tr>
        <th>编号</th>
        <th>用户名</th>
        <th>密码</th>
        <th>生日</th>
    </tr>
    <c:forEach var="user" items="${rs.rows}">
        <tr>
            <td><c:out value="${user.id}"/></td>
            <td><c:out value="${user.username}"/></td>
            <td><c:out value="${user.username}"/></td>
            <td><c:out value="${user.birth}"/></td>
        </tr>
    </c:forEach>
</table>

</body>
</html>

1.3 运行测试

热门文章

优秀文章