首页 > 技术文章 > Mybatis学习二 (接口注解)

HuiShouGuoQu 2020-09-11 13:32 原文

1.概述

   执行SQL的方式:

       第一种:

              用 SqlSession 实例来直接执行在User.xml文件中映射的 SQL 语句

              session.selectOne("com.yiibai.mybatis.models.UserMapper.getUserByID", 1)

       第二种:

                使用合理描述参数和SQL语句返回值的接口(比如:IUser.class),

                这样现在就可以不使用类似User.xml配置文件,至此更简单,代码更安全,

                不容易发生的字符串文字和转换的错误

 

2.使用接口

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

             import org.apache.ibatis.annotations.Select;
             import com.yiibai.mybatis.models.User;
 
             public interface IUser {
                  @Select("select * from user where id= #{id}")
                  public User getUserByID(int id);
             }

         注:代码有一个方法名 getUserByID 必须与 User.xml 里面配置的

                selectid 对应(<select id="getUserByID">)同名,虽使用注解映射不需要User.xml

 

   第二步:创建对应映射接口 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>

        创建一个User.java 类文件

          public class User {

                   private int id;
                  private String name;
                  private String dept;
                 private String phone;
                 private String website;
           }
         测试接口映射
          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 {
                         //读取xml文件
                        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 {
                              //将SQL查询添加进去
                              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();
                       }
            }
      }
 
 
学习来源:https://www.yiibai.com/mybatis/interface_comment.html#article-start      

推荐阅读