blade数据库操作之事务测试

先来一个实体类

import blade.plugin.sql2o.Model;
import blade.plugin.sql2o.Table;

/**
 * 
 * CREATE TABLE `blade_demo` (
   `id` int(10) NOT NULL AUTO_INCREMENT,
   `val` varchar(10) NOT NULL,
   PRIMARY KEY (`id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf-8
 */

@Table("blade_demo")
public class BladeDemo extends Model {

	private static final long serialVersionUID = -9181747713955766758L;
	private Integer id;
	private String val;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getVal() {
		return val;
	}

	public void setVal(String val) {
		this.val = val;
	}

}

测试类

import org.junit.Before;
import org.junit.Test;
import org.sql2o.Connection;
import org.sql2o.Sql2o;

import blade.exception.BladeException;
import blade.plugin.sql2o.Model;
import blade.plugin.sql2o.Sql2oPlugin;

public class TestBladeSql2o {

	private Model model = null;

	@Before
    public void before() {
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}

		// 配置数据库插件
		Sql2oPlugin sql2oPlugin = Sql2oPlugin.INSTANCE;
		sql2oPlugin.config("jdbc:mysql://127.0.0.1:3306/test", "com.mysql.jdbc.Driver", "root", "root");
		sql2oPlugin.openCache();
		sql2oPlugin.run();

		model = Model.getModel(BladeDemo.class);
	}

    @Test
    public void testTransaction() {
    
        Sql2o sql2o = model.getSql2o();
        final String insertSql = "insert into blade_demo(val) values (:val)";
        final String updateSql = "update blade_demo set val = :val where id = :id";
        Connection con = sql2o.beginTransaction();
        try{
            con.createQuery(insertSql).addParameter("val", "foo").executeUpdate();
            con.createQuery(updateSql).addParameter("val2", "bar").executeUpdate();
            con.commit();
        } catch(Exception e){
        	if(null != con){
        		con.rollback();
        	}
        	e.printStackTrace();
        }
        
    }
    
    @Test
    public void testException() {
    
    	Integer count = model.insert().param("val", "asdadasdadasdsaadsadadasdadsadasdadad").executeAndCommit();
	System.out.println(count);       
        
    }
}
时间: 2025-01-02 09:52:59

blade数据库操作之事务测试的相关文章

在三个层次对Asp.Net的数据操作进行事务

asp.net|数据 很多数据库操作需要进行事务,Asp.net下面进行事务大致有3个层次:(1)存储过程层次的事务(2)Ado.Net层次的事务(3)Asp.Net页面层次的事务下面分别举例:首先建立trantest表,字段id(int),test(char)为id设置主键(利用主键是不允许重复的特性进行事务测试) (1)CREATE PROCEDURE Tran1asbegin tranInsert Into trantest (id,test)values(1,'test')Insert

一个基于PDO的数据库操作类(新) 一个PDO事务实例

复制代码 代码如下: <?php /* * 作者:胡睿 * 日期:2011/03/19 * 电邮:hooray0905@foxmail.com * * 20110319 * 常用数据库操作,如:增删改查,获取单条记录.多条记录,返回最新一条插入记录id,返回操作记录行数等 * 20110630 * 整体修改方法,合并部分参数 * 规范代码,一个方法里只有1个return语句 */ /* 参数说明 int $debug 是否开启调试,开启则输出sql语句 int $mode 0 返回数组 1 返回

一个基于PDO的数据库操作类(新) 一个PDO事务实例_php技巧

复制代码 代码如下: <?php /* * 作者:胡睿 * 日期:2011/03/19 * 电邮:hooray0905@foxmail.com * * 20110319 * 常用数据库操作,如:增删改查,获取单条记录.多条记录,返回最新一条插入记录id,返回操作记录行数等 * 20110630 * 整体修改方法,合并部分参数 * 规范代码,一个方法里只有1个return语句 */ /* 参数说明 int $debug 是否开启调试,开启则输出sql语句 int $mode 0 返回数组 1 返回

Yii2——使用数据库操作汇总(增删查改、事务)_php技巧

本文介绍了 Yii2--使用数据库操作汇总(增删查改.事务),具体如下: 对象操作 查询 //1.简单查询 $admin=Admin::model()->findAll($condition,$params); $admin=Admin::model()->findAll("username=:name",array(":name"=>$username)); $infoArr= NewsList::model()->findAll(&quo

强烈推荐:SQL Server数据库操作实用技巧锦集

server|sql|技巧|数据|数据库 本文主要概括安装时提示有挂起的操作.收缩数据库.压缩数据库.转移数据库给新用户以已存在用户权限.检查备份集.修复数据库等操作技巧. 1.挂起操作 在安装SQL或SP补丁的时候系统提示之前有挂起的安装操作,要求重启,这里往往重启无用,解决办法: 到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager删除PendingFileRenameOperations. 2.收缩数据库

[学习收藏]SQLite数据库操作学习

用Python进行SQLite数据库操作 原文参见:http://www.cnblogs.com/yuxc/archive/2011/08/18/2143606.html 简单的介绍       SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身.它是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Window

自己动手写ASP.NET ORM框架(二):AdoHelper支持多数据库操作的封装(2)

在上一篇文章中已经分析了AdoHelper的部分代码,接下来将继续分析剩余的部分代码,这里分析ExecuteNonQuery方法的实现,代码块1-1: // <summary>//通过提供的参数,执行无结果集的数据库操作命令// 并返回执行数据库操作所影响的行数.// </summary>// <param name="connectionString">数据库连接字符串</param>// <param name="co

ASP通用数据库操作类源代码

<%'=========================================================================='文件名称:clsDbCtrl.asp'功 能:数据库操作类'作 者:coldstone (coldstone[在]qq.com)'程序版本:v1.0.5'完成时间:2005.09.23'修改时间:2007.10.30'版权声明:可以在任意作品中使用本程序代码,但请保留此版权信息.'          如果你修改了程序中的代码并得到更好的应用,

CI框架连接数据库配置操作以及多数据库操作

数据库快速入门例子代码 下面的内容将简单说明怎样使用数据库.更详细的信息请阅读各个函数的单独介绍页面.   初始化数据库类 下面的代码将依据你的数据库配置载入并初始化数据库类:   $this->load->database();   一旦被载入,你可以在任何地方像这样使用它:   注意: 如果你的所有页面均要求初始化数据库类,你可以让它自动加载.详见 数据库连接.   多结果标准查询(对象形式) $query = $this->db->query('SELECT name, ti