Ibatis3中基於介面,class對象調用的例子

來源:互聯網
上載者:User

[文章出處]文章出處

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介面的方法,進行資料操作。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.