Ibatis--SqlMapClient对象使用及事务(一)
来源:互联网 发布:制图软件orange 编辑:程序博客网 时间:2024/06/02 03:32
SqlMapClient对象
这个对象是iBatis操作数据库的接口(执行CRUD等操作),它也可以执行事务管理等操作。这个类是我们使用iBATIS的最主要的类。它是线程安全的。通常,将它定义为单例。(与hibernate中sessionFactory的定义类似)。如:
import java.io.Reader;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class IbatisSQLMapConfig {
private static final SqlMapClient sqlMap;
//在静态区块中初试化返回
static {
try {
//声明配置文件的名称(映射文件被定义在其中)
String resource = "sql_map_config.xml";
//利用工具类Resources来读取到配置文件
Reader reader = Resources.getResourceAsReader(resource);
//创建SqlMapClient接口的变量实例
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(
"Error initializing MyAppSqlConfig class. Cause: " + e);
}
}
public static SqlMapClient getSqlMapInstance() {
//提供静态方法返回静态区块中得到的SqlMapClient
return sqlMap;
}
}
主要用法:
如何获得刚插入记录的自增长ID值?
以下所有虚线上面代表User.xml中的内容,虚线下方是测试类中的内容:User类沿用上一篇中的User类
<insert id="insertUser" parameterClass="User">
insert into t_user values (
null,#username#,#password#
)
<selectKey resultClass="int" keyProperty="id">
SELECT @@IDENTITY AS ID
</selectKey>
</insert>
User user = new User();
user.setUsername("张三");
user.setPassword("张三密码");
//如果主键是自动生成的,则其返回值可以通过<selectKey>标签来设置
//如果不通过<selectKey>标签来设置,则返回值为空!
//<selectKey >中的keyProperty,是指定User中的id属性,当调用结束之后,
//user对象的id值和insert方法的返回值都是这条记录的ID值!
Object obj = sqlMapper.insert("insertUser", user);
parameterClass的使用
<insert id="insertUser" parameterClass="User">
insert into t_user values (
null,#username#,#password#
)
<selectKey resultClass="int" keyProperty="id">
SELECT @@IDENTITY AS ID
</selectKey>
</insert>
<insert id="insertUser2">
insert into t_user values (
null,#username#,#password#
)
<selectKey resultClass="int" keyProperty="id">
SELECT @@IDENTITY AS ID
</selectKey>
</insert>
insertUser使用了parameterClass,所以必需传入User类型的对象
User user = new User();
user.setUsername("张三");
user.setPassword("张三密码");
//传递进去的对象,必须是User类型
Object obj = sqlMapper.insert("insertUser", user);
insertUser2没有使用parameterClass,所以可以传入任意具有相应属性值的对象
JustAnObject anobj = new JustAnObject();
anobj.setUsername("用户名");
anobj.setPassword("用户密码");
//如果没有指定parameterClass属性,则任何一个具有相应属性值
//的对象都可以被传递进去
Object obj = sqlMapper.insert("insertUser2", anobj);
parameterMap的使用
<parameterMap class="User" id="insertUser-param">
<parameter property="username"/>
<parameter property="password"/>
</parameterMap>
<insert id="insertUser" parameterMap="insertUser-param">
insert into t_user values (
null,?,?
)
<selectKey resultClass="int" keyProperty="id">
SELECT @@IDENTITY AS ID
</selectKey>
</insert>
parameterMap用于传入参数,以便匹配SQL语句中的?号
User user = new User();
user.setUsername("张三dd");
user.setPassword("张三密码dd");
Object obj = sqlMapper.insert("insertUser", user);
利用parameterMap,可以定义参数对象的属性如何映射到SQL查询语句的动态参数上,注意parameterMap中<parameter/>标签的先后顺序不能颠倒!
- Ibatis--SqlMapClient对象使用及事务(一)
- Ibatis--SqlMapClient对象使用及事务(二)
- Ibatis--SqlMapClient对象使用及事务(三)
- Ibatis--SqlMapClient对象使用及事务(四)
- iBatis SqlMapClient对象
- iBatis中的重要接口SqlMapClient (一)
- ibatis中SqlMapClient对象详解
- SqlMapClient对象-iBatis操作数据库的接口
- 初始化iBatis获得一个SqlMapClient对象
- SqlMapClient对象
- SqlMapClient对象
- SqlMapClient对象
- SqlMapClient对象
- SqlMapClient对象
- IBatis--- 创建SqlMapClient
- ibatis中SqlMapClient事务处理
- Ibatis批处理SqlMapClient使用不关闭,资源耗尽,死锁错误!
- Spring数据库及事务配置(ibatis)
- 元宵节
- windows mobile 的启动流程3
- 有空 要研究GWT
- An SKD Target must be specified
- jQuery源代码研究(ready函数)
- Ibatis--SqlMapClient对象使用及事务(一)
- 浏览器加载、渲染和解析过程的黑箱分析[ZT]
- Ibatis--SqlMapClient对象使用及事务(二)
- 转://嵌入式Linux内核移植相关代码分析(zz)(
- ACDSee
- 2010年IT人士要去的10个网站
- Even Faster Web Sites: 读书笔记(一)[ZT]
- console tty pts 等问题
- Ibatis--SqlMapClient对象使用及事务(三)