MyBatis中的@Mapper注解及配套注解使用詳解(上)


前言:

從mybatis3.4.0開始加入了@Mapper注解,目的就是為了不再寫mapper映射文件(那個xml寫的是真的蛋疼。。。)。很惡心的一個事實是源碼中並沒有對於這個注解的詳細解釋
現在我們通過一個簡易的maven項目去了解@Mapper注解的使用方式
完整項目請訪問我的github項目地址下載
  1. 構建一個maven的web項目,目錄結構如下: 
    這里寫圖片描述
  2. 導入相應的依賴
  3.     <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.0.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.0.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.7</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.0.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>6.0.6</version>
        </dependency>
  4. 這里寫圖片描述 

3. 上代碼

//UserDAO
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
 
import entity.User;
 
/**
 * 添加了@Mapper注解之后這個接口在編譯時會生成相應的實現類
 * 
 * 需要注意的是:這個接口中不可以定義同名的方法,因為會生成相同的id
 * 也就是說這個接口是不支持重載的
 */
@Mapper
public interface UserDAO {
 
    @Select("select * from user where name = #{name}")
    public User find(String name);
 
    @Select("select * from user where name = #{name} and pwd = #{pwd}")
    /**
      * 對於多個參數來說,每個參數之前都要加上@Param注解,
      * 要不然會找不到對應的參數進而報錯
      */
    public User login(@Param("name")String name, @Param("pwd")String pwd);
}

 

測試類代碼

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
import dao.UserDAO;
import entity.User;
 
public class TestCase {
 
    @Test
    public void testMapper() {
        ApplicationContext ac = new ClassPathXmlApplicationContext("spring-mybatis.xml");
        UserDAO dao = ac.getBean(UserDAO.class);
        User u1 = dao.find("hehe");
        User u2 = dao.login("hehe", "123");
        System.out.println(u1.getName().equals(u2.getName()));
    }
}

 

測試結果:

這里寫圖片描述

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM