ibatis mysql 函数_iBatis 入门笔记

iBatis简介

iBatis是一个"半自动"的轻量级O/R Mapping框架。

O/R Mapping是指对象与数据库之间的映射,而iBatis就是这样一个映射器,映射器的主要作用是在对象和数据库之间搬运数据,同时保证对象、数据库和映射器之间相互独立。

通过O/R Mapping你将不用再面对那一堆令人厌恶的JDBC代码,为一堆打开连接、关闭连接的代码而眼花头昏。

何为"半自动"?    这里的半自动是与Hibernate这样的O/R Mapping方案对比得出的,在Hibernate中只要建立起完全的O/R关系,甚至在对数据库进行CRUD(create read update delete)操作时都不用写SQL语句,Hibernate会自动帮你生成sql语句,然后使用JDBC来操纵数据库。在iBatis中可不行,你需要自己定义要使用的sql语句。

相比于Hibernate这样的重量级O/R Mapping框架,iBatis入门简单,延续了很好用的sql使用经验,在某些对性能要求较高的场合下,使用iBatis可以量身定制你的sql语句,优化操作效率。而对于Hibernate,设计一个好的O/R映射则显得比较困难,你需要在对象模型和性能之间权衡取舍。而在O/R映射设计完成之后,如果使用的是iBatis,数据库查询的sql语句仍然需要自己编写,工作量很大,而若是Hibernate,则你的整个持久层代码将显得非常简洁,开发效率高。

iBatis映射 - 对象操作

iBatis映射将对象操作映射成SQL语句,可以使用statement、select、insert、update、delete、procedure等元素来配置。

其中statement元素可以配置成任意的sql语句,procedure用于配置储存过程,其他元素则各有侧重点。

Statement  Element

Attribute

id

parameterClass

resultClass

parameterMap

resultMap

cacheModel

resultSetType

fetchSize

xmlResultName

reMapResults

timeout

与上同

id

parameterClass

parameterMap

id

parameterClass

parameterMap

id

parameterClass

parameterMap

与statement相比,

无resultSetType

一个简单的iBatis使用例子

1. 搭建环境: 下载iBatis的jar包,并导入到你的project中,我目前使用的是 ibatis-2.3.3.720.jar\ibatis-2.3.3.720.jar。

2.定义你的model:User类

public class User {

private int id;

private String username;

private String password;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

}

3. 配置文件:

1) JDBC的连接属性文件 SqlMap.properties

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/ibatis_test

username=root

password=root2)   总配置文件SqlMapConfig.xml<?xml version="1.0" encoding="UTF-8"?>

/p>

"http://www.ibatis.com/dtd/sql-map-config-2.dtd">

//引入实体的映射文件

3)实体的映射文件 User.xml

/p>

"http://www.ibatis.com/dtd/sql-map-2.dtd">

insert into USER (USERNAME,PASSWORD)

values (

#username#,

#password#

)

SELECT LAST_INSERT_ID() AS ID

delete from USER

where USERNAME = #username#

]]>

update USER

USERNAME = #username#

PASSWORD = #password#

where ID = #id#

select ID,USERNAME,PASSWORD

from USER

where USERNAME = #username#

说明:

等,这时就可以使用

例:

select * from user where age ]]>18

Insert时使用的selectKey: iBatis支持数据库主键自动生成,这包括支持预生成主键和后生成主键。所谓预生成是在插入记录前就生成主键,主键与其它字段一同插入数据库,如Oracle。所谓后生成则是在插入记录后才知道主键,不插入记录主键便是未知的,如MySQL。生成的主键会设置到同名属性中,也可通过keyProperty属性指定主键属性,在iBatis中使用mysql进行插入时,必须要在insert语句之后才能使用selectKey,通过selectKey进行返回。

4. 编写主函数进行测试public static void main(String[] args) {

SqlMapClient sqlMapclient = null;

try {

Reader reader = com.ibatis.common.resources.Resources

.getResourceAsReader("SqlMapConfig.xml");

sqlMapclient = com.ibatis.sqlmap.client.SqlMapClientBuilder

.buildSqlMapClient(reader);

User user = new User();

user.setPassword("12345");

user.setUsername("troy");

sqlMapclient.insert("insert", user);

user.setPassword("123");

sqlMapclient.update("updateUser", user);

User user1 = new User();

user1.setUsername("Troy");

@SuppressWarnings("unchecked")

List users = (List) sqlMapclient.queryForList("selectUser", "troy");

for(User temp : users) {

System.out.println(temp.getId() + "-" + temp.getUsername() + "-" + temp.getPassword());

}

//sqlMapclient.delete("deleteUserByName", "troy");

reader.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}可以在mysql中和Eclipse中观察到程序的运行结果。

例子代码下载

原文:http://blog.csdn.net/troy__/article/details/27957405

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值