在上一章中,我們已經(jīng)搭建了 myeclipse,mybatis,mysql 的開發(fā)環(huán)境,并且實現(xiàn)了 mybatis 的一個簡單的查詢。要注意的是,這種方式是用 SqlSession
實例來直接執(zhí)行在User.xml
文件中映射的 SQL 語句:session.selectOne("com.yiibai.mybatis.models.UserMapper.getUserByID", 1)
,但是還有比這更簡單的方法,使用合理描述參數(shù)和SQL語句返回值的接口(比如:IUser.class
),這樣現(xiàn)在就可以不使用類似User.xml
配置文件,至此更簡單,代碼更安全,不容易發(fā)生的字符串文字和轉(zhuǎn)換的錯誤,下面是項目創(chuàng)建的詳細(xì)過程:
在 src
源碼目錄下創(chuàng)建一個包:com.yiibai.mybatis.dao
,并建立接口類 IUser
及一個方法, 在方法上面,我們使用了一個SQL注釋,內(nèi)容如下:
package com.yiibai.mybatis.dao;
import org.apache.ibatis.annotations.Select;
import com.yiibai.mybatis.models.User;
/**
* @author yiibai.com
*/
public interface IUser {
@Select("select * from user where id= #{id}")
public User getUserByID(int id);
}
請注意,這里面代碼有一個方法名 getUserByID
必須與 User.xml
里面配置的 select
的 id
對應(yīng)(<select id="getUserByID">
)同名,雖使用注解映射不需要User.xml
。
首先配置 MyBatis 所需的數(shù)據(jù)連接文件,這里創(chuàng)建一個文件: src/config/Configure.xml
,其內(nèi)容如下:
<?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>
<typeAliases>
<typeAlias alias="User" type="com.yiibai.mybatis.models.User" />
</typeAliases>
<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://127.0.0.1:3306/testdb" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- // power by http://www.yiibai.com 注釋掉咯...
<mapper resource="com/yiibai/mybatis/models/User.xml" />-->
</mappers>
</configuration>
在包:com.yiibai.mybatis.models
下創(chuàng)建一個User.java
類文件,與上一節(jié)中 User
類代碼相同,這里只是拷貝過來,User.java
具體的代碼內(nèi)容如下:
package com.yiibai.mybatis.models;
public class User {
private int id;
private String name;
private String dept;
private String phone;
private String website;
public String getWebsite() {
return website;
}
public void setWebsite(String website) {
this.website = website;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
與 User.java
對應(yīng)的 XML 配置文件:User.xml
可以少省略,不用創(chuàng)建,本節(jié)講解的就是如何消滅類似于User.xml
的配置文件。
我們在 src
這個目錄下創(chuàng)建一個類:Main.java
,用來測試整個配置和程序運行結(jié)果,有關(guān) Main.java
的代碼詳細(xì)內(nèi)容如下:
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 com.yiibai.mybatis.dao.IUser;
import com.yiibai.mybatis.models.User;
public class Main {
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader;
static {
try {
reader = Resources.getResourceAsReader("config/Configure.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
sqlSessionFactory.getConfiguration().addMapper(IUser.class);
} catch (Exception e) {
e.printStackTrace();
}
}
public static SqlSessionFactory getSession() {
return sqlSessionFactory;
}
public static void main(String[] args) {
SqlSession session = sqlSessionFactory.openSession();
try {
IUser iuser = session.getMapper(IUser.class);
User user = iuser.getUserByID(1);
System.out.println("名字:"+user.getName());
System.out.println("所屬部門:"+user.getDept());
System.out.println("主頁:"+user.getWebsite());
} finally {
session.close();
}
}
}
運行上面示例代碼,得到以下結(jié)果 -
名字:New name, 所屬部門:Tech, 主頁:http://www.yiibai.com
最后補(bǔ)充,整個項目 mybatis-interface-02 的結(jié)構(gòu)如下圖所示: