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 运行测试
热门文章
优秀文章