http://www.javashuo.com/article/p-ypwenrvo-dk.htmljava
從mybatis3.4.0開始加入了@Mapper註解,目的就是爲了避免再寫mapper映射文件(那個xml寫的是真的蛋疼。。。)。很噁心的一個事實是源碼中並無對於這個註解的詳細解釋
如今咱們經過一個簡易的maven項目去了解@Mapper註解的使用方式
完整項目請訪問個人github項目地址下載
一、構建一個maven的web項目,目錄結構以下: mysql
二、導入相應的依賴git
<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>
三、代碼github
//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); }
測試類代碼:web
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())); } }
測試結果:spring