一、什么是使用注解开发

使用注解开发就是无需再配置Mapper.xml文件,直接在接口中利用注解实现SQL语句。

二、为什么要使用注解开发

正如官方文档所说:

使用注解来映射简单语句会使代码显得更加简洁。

但对于稍微复杂一点的语句,Java 注解不仅力不从心,还会让你本就复杂的 SQL 语句更加混乱不堪。 因此,如果你需要做一些很复杂的操作,最好用 XML 来映射语句。

三、如何使用注解进行开发

1、 删掉原来的UserMapper.xml;

2、 修改UserMapper接口;

package com.jms.dao;

import com.jms.pojo.User;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface UserMapper {

    @Select("select * from user")
    List<User> getUserList();

}

在方法上面的那就是注解。

3、 修改核心配置文件mybatis-config.xml中的mapper映射;

<mappers>
    <mapper class="com.jms.dao.UserMapper"/>
 </mappers>

原来是映射xml文件,现在我们修改为映射接口。

4、 junit测试;

package com.jms.dao;

import com.jms.pojo.User;
import com.jms.utils.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class UserMapperTest {

    @Test
    public void test() {
        SqlSession sqlSession = MyBatisUtil.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List<User> userList = userMapper.getUserList();
        for (User user : userList) {
            System.out.println(user);
        }
     sqlSession.close();
    }

}

测试结果如下:

 

测试结果没有问题。

那么问题就来了,我们究竟应该在xml文件中去映射呢还是用注解进行映射呢。上面其实已经说得很明白了,简单的语句用注解映射更加简洁,而复杂的语句则应该用xml文件进行映射。正如官方文档的一句话:选择何种方式来配置映射,以及认为是否应该要统一映射语句定义的形式,完全取决于你和你的团队。 换句话说,永远不要拘泥于一种方式,你可以很轻松的在基于注解和 XML 的语句映射方式间自由移植和切换。

技术没有高低好坏之分,有区别的是使用技术的人。