Ibatis3中基于接口,class对象调用的例子

[文章出处]文章出处

IbatisConfiguration.xml 

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-config.dtd"> 
<configuration> 
<environments default="development"> 
<environment id="development"> 
<transactionManager type="JDBC" /> 
<dataSource type="POOLED"> 
<property name="driver" value="com.mysql.jdbc.Driver" /> 
<property name="url" value="jdbc:mysql://localhost:3306/ibatis" /> 
<property name="username" value="root" /> 
<property name="password" value="" /> 
</dataSource> 
</environment> 
</environments> 
<mappers> 
<mapper resource="pojo/Account.xml" /> 
</mappers> 
</configuration> 

Account.java 

package pojo; 

public class Account { 
private int id; 
private String username; 

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; 




Account.xml 
<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
<mapper namespace="liyixing"> 
<select id="getAccount" parameterType="string" resultType="pojo.Account"> 
select * from Account where username = #{username} 
</select> 
</mapper> 

test.java 

package test; 

import java.io.IOException; 
import java.io.Reader; 

import org.apache.ibatis.io.Resources; 
import org.apache.ibatis.session.SqlSessionFactory; 
import org.apache.ibatis.session.SqlSessionFactoryBuilder; 

import pojo.Account; 

public class Test { 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
try { 
Reader reader = Resources 
.getResourceAsReader("test/IbatisConfiguration.xml"); 
SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder() 
.build(reader); 

Account account = (Account) sqlMapper.openSession().selectOne( 
"liyixing.getAccount", "liyixing"); 

System.out.println("id: " + account.getId()); 
System.out.println("name: " + account.getUsername()); 
} catch (IOException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 





基于接口,class调用 
上面例子中进行修改,首先添加dao类 

package dao; 

import pojo.Account; 

public interface AccountDao { 
public Account getAccount(String name); 


修改映射文件 
<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
<mapper namespace="dao.AccountDao"> 
<select id="getAccount" parameterType="string" resultType="pojo.Account"> 
select * from Account where username = #{username} 
</select> 
</mapper> 
可以看到,首先要改mapper的namespace值,该值和dao接口的包名完全相同。其次是看接口中的方法名,方法名必须在map文件中,存在相同的id才行,否则会报错。这种方式可以将dao接口的实现转移到配置文件中。 

修改test类 
package test; 

import java.io.IOException; 
import java.io.Reader; 

import org.apache.ibatis.io.Resources; 
import org.apache.ibatis.session.SqlSession; 
import org.apache.ibatis.session.SqlSessionFactory; 
import org.apache.ibatis.session.SqlSessionFactoryBuilder; 

import dao.AccountDao; 

import pojo.Account; 

public class Test { 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
try { 
Reader reader = Resources 
.getResourceAsReader("test/IbatisConfiguration.xml"); 
SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder() 
.build(reader); 
SqlSession session = sqlMapper.openSession(); 
AccountDao accountDao = session.getMapper(AccountDao.class); 
Account account = accountDao.getAccount("liyixing"); 

System.out.println("id: " + account.getId()); 
System.out.println("name: " + account.getUsername()); 
} catch (IOException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 



这里通过AccountDao accountDao = session.getMapper(AccountDao.class);方式获取dao接口的实现。这个实现是ibatis帮助创建的。我们只需要生成对应的配置文件即可。 

Account account = accountDao.getAccount("liyixing"); 
通过调用dao接口的方法,进行数据操作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值