MyBatis 专题
您的位置:java > MyBatis专题 > Mybatis接口注解
Mybatis接口注解
作者:--    发布时间:2019-11-20

在上一章中,我们已经搭建了 myeclipse,mybatis,mysql 的开发环境,并且实现了 mybatis 的一个简单的查询。要注意的是,这种方式是用 sqlsession 实例来直接执行在user.xml文件中映射的 sql 语句:
session.selectone("com.h3.mybatis.models.usermapper.getuserbyid", 1),但是还有比这更简单的方法,使用合理描述参数和sql语句返回值的接口(比如:iuser.class),这样现在就可以不使用类似user.xml配置文件,至此更简单,代码更安全,不容易发生的字符串文字和转换的错误,下面是项目创建的详细过程:

1、创建一个接口:iuser,并在其中声明对应的操作方法

src 源码目录下创建一个包:com.h3.mybatis.dao,并建立接口类 iuser 及一个方法, 在方法上面,我们使用了一个sql注释,内容如下:

package com.h3.mybatis.dao;

import org.apache.ibatis.annotations.select;

import com.h3.mybatis.models.user;
/**
 * @author h3.com
 */
public interface iuser {
     @select("select * from user where id= #{id}")
     public user getuserbyid(int id);
}

请注意,这里面代码有一个方法名 getuserbyid 必须与 user.xml 里面配置的 selectid 对应(<select id="getuserbyid">)同名,虽使用注解映射不需要user.xml

2、创建对应映射接口 sql 语句

首先配置 mybatis 所需的数据连接文件,这里创建一个文件: src/config/configure.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>
    <typealiases>
        <typealias alias="user" type="com.h3.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.h3.com 注释掉咯...
        <mapper resource="com/h3/mybatis/models/user.xml" />-->
    </mappers>
</configuration>

在包:com.h3.mybatis.models 下创建一个user.java 类文件,与上一节中 user 类代码相同,这里只是拷贝过来,user.java具体的代码内容如下:

package com.h3.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 对应的 xml 配置文件:user.xml 可以少省略,不用创建,本节讲解的就是如何消灭类似于user.xml的配置文件。

3、测试接口映射

我们在 src 这个目录下创建一个类:main.java,用来测试整个配置和程序运行结果,有关 main.java 的代码详细内容如下:

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.h3.mybatis.dao.iuser;
import com.h3.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();
        }
    }
}

运行上面示例代码,得到以下结果 -

名字:new name, 所属部门:tech, 主页:http://www.h3.com

最后补充,整个项目 mybatis-interface-02 的结构如下图所示:


网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册