Ibatis学习实践

Ibatis是个O/R的数据持久化的框架,特点就是简单、灵活,上手快。
今天,本人也在实际学习了下这个框架。

首先,下载ibatis框架,将相关的jar加入到project的BuildPath.
其次,就是设置sqlmapclient.xml
特别要注意的是:配置数据库信息。路径不对的话,会抛出异常java.sql.SQLException: No suitable driver, 其实是路径不对。本人就是不小心,将路径写成:
jdbc:mysql:localhost:3306/ibatisdemo,
花费了一个小时才debug.
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>
<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/ibatisdemo"/>
<property name="JDBC.Username" value="root"/>
<property name="JDBC.Password" value="root"/>

另外,配置文件中的路径,用斜杠分隔,不使用"."
<sqlMap resource="net/tuolian/firstibatis/Account.xml" />

第三点, 就是实体类的配置文件
<select id="getAccount" parameterClass="java.lang.String" resultClass="net.tuolian.firstibatis.Account">
select * from Account where username = #value#
</select>
注意:select id和parameterClass, resultClass,都是详细路径的类

第四、实体类就是简单的类,加上类的属性的get,set方法

第五点、具体的业务逻辑的实现
读取sqlmapconfig.xml配置文件
创建sqlmapclient对象
依据不同的逻辑,调用sqlmapclient对象的数据操作方法,实现增删改查方法。

具体的请参看代码。


package net.tuolian.firstibatis;

import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

/**
*
* @author sean
* 1. 读取sqlmapConfig配置文件
* 2. 利用builder方法,创建sqlmapClient对象
* 3. 根据需求,调用sqlMapClient方法,比如queryForList()
注意:
*
*/
public class AccountDAOImpl implements IAccountDAO {

private static SqlMapClient sqlMapClient;

static{
try {
Reader reader = Resources.getResourceAsReader("net/tuolian/firstibatis/SqlMapConfig.xml");
sqlMapClient= SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

/**
* 添加帐号
*/
public void addAccount() {
// TODO Auto-generated method stub
Account account = new Account();
account.setUsername("sean");
account.setPassword("sean");
try {
//"createAccount"是配置文件中设定
sqlMapClient.insert("createAccount", account);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

/**
* 返回一个
*/
public List queryAccountById(int id) {
// TODO Auto-generated method stub
List list = null;
try {
list = sqlMapClient.queryForList("getAccount", "sean");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}

/**
* 入口方法
* @param args
*/
public static void main(String[] args){

new AccountDAOImpl();
}

/**
* 调用addAccount, queryAll方法
*/
public AccountDAOImpl(){
this.addAccount();
this.queryAccountById(1);
}

}




package net.tuolian.firstibatis;

import java.util.List;

/**
* 业务处理接口
* @author sean
*
*/
public interface IAccountDAO {
public void addAccount();
public List queryAccountById(int id);
}




[code]

package net.tuolian.firstibatis;

/**
*
* @author sean
* 帐号类
* 属性及get,set方法
*/
public class Account {
private String username;
private String password;
private int id;

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;
}
}

[/code]

SqlMapConfig.xml, 建议重点学习,特别是数据库的配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="false"
/>
<transactionManager type="JDBC" >
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>
<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/ibatisdemo"/>
<property name="JDBC.Username" value="root"/>
<property name="JDBC.Password" value="root"/>
</dataSource>
</transactionManager>

<sqlMap resource="net/tuolian/firstibatis/Account.xml" />
</sqlMapConfig>



Account.xml
注意其中的select等sql语句的写法,还有#的使用,类似jdbc中的"?"
insert select 等id, 就是在具体查询中的参数,比如sqlmapclient.queryForList(selectid)
这里的selectid和配置文件中的selectId对应,同时parameterClass, ResultClass,也是参数,注意和配置文件中的保持一致。


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap
PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="Account">

<select id="getAccount" parameterClass="java.lang.String" resultClass="net.tuolian.firstibatis.Account">
select * from Account where username = #value#
</select>

<insert id="createAccount" parameterClass="net.tuolian.firstibatis.Account">
insert into Account (username, password)
values ( #username#, #password# )
</insert>
</sqlMap>


[code="java"][/code]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值