• Mybatis接口注解


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

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

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

    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);
    }
    
    Java

    请注意,这里面代码有一个方法名 getUserByID 必须与 User.xml 里面配置的 select 的 id 对应(<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.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>
    
    XML

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

    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;
        }
    
    }
    
    Java

    与 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.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();
            }
        }
    }
    
    Java

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

    名字:New name, 所属部门:Tech, 主页:http://www.yiibai.com
    
    Shell

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

  • 相关阅读:
    Linux下C程序内存泄露检测
    C++的XML编程经验――LIBXML2库使用指南
    C的xml编程-libxml2
    15 手写数字识别-小数据集
    14 深度学习-卷积
    13-垃圾邮件分类2
    12.朴素贝叶斯-垃圾邮件分类
    11.分类与监督学习,朴素贝叶斯分类算法
    9、主成分分析
    7.逻辑回归实践
  • 原文地址:https://www.cnblogs.com/borter/p/9608543.html
Copyright © 2020-2023  润新知