鍍金池/ 教程/ Java/ Mybatis接口注解
Mybatis表關(guān)聯(lián)多對一
MyBatis打印輸出SQL語句
Mybatis表關(guān)聯(lián)一對多
mybaits if標(biāo)簽語句
MyBatis整合Spring MVC
MyBatis動態(tài)SQL語句
MyBatis教程
MyBatis choose(when, otherwise)標(biāo)簽
Mybatis與Spring集成
MyBatis分頁
MyBatis SqlSessionDaoSupport實例
MyBatis where標(biāo)簽語句
Mybatis增刪改查(CURD)
Mybatis接口注解
Mybatis trim標(biāo)簽
Mybatis set標(biāo)簽
Mybatis 多對多
MyBatis環(huán)境配置及入門

Mybatis接口注解

在上一章中,我們已經(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ì)過程:

1、創(chuàng)建一個接口:IUser,并在其中聲明對應(yīng)的操作方法

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 里面配置的 selectid 對應(yīng)(<select id="getUserByID">)同名,雖使用注解映射不需要User.xml。

2、創(chuàng)建對應(yīng)映射接口 SQL 語句

首先配置 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的配置文件。

3、測試接口映射

我們在 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)如下圖所示: