Mybatis注解开发

Mybatis可以使用xml文件来写sql语句,也可以通过注解来编写简单的sql语句,参考官方文档

映射器注解
设计初期的 MyBatis 是一个 XML 驱动的框架。配置信息是基于 XML 的,映射语句也是定义在 XML 中的。而在 MyBatis 3 中,我们提供了其它的配置方式。MyBatis 3 构建在全面且强大的基于 Java 语言的配置 API 之上。它是 XML 和注解配置的基础。注解提供了一种简单且低成本的方式来实现简单的映射语句。
提示 不幸的是,Java 注解的表达能力和灵活性十分有限。尽管我们花了很多时间在调查、设计和试验上,但最强大的 MyBatis 映射并不能用注解来构建——我们真没开玩笑。而 C# 属性就没有这些限制,因此 MyBatis.NET 的配置会比 XML 有更大的选择余地。虽说如此,基于 Java 注解的配置还是有它的好处的。

可以理解为简单的一些语法可以使用注解来编写,比较方便,但是复杂的语句还是要使用xml文件,只有使用xml文件才能体现mybatis的强大功能。

使用注解

在之前的开发中,我们使用mybatis,需要

  1. 配置文件,
  2. 然后创建dao接口,定义方法
  3. 再然后就要创建mapper.xml文件,在mapper.xml文件中编写sql语句,
  4. 最后再把mapper文件配置在mybatis主配置文件中就可以进行测试了

使用注解的方式,我们可以在dao接口中直接在方法上写sql语句,不需要创建mapper文件了

创建一个dao接口:先写一些最简单的语句,例如这些最基本的增删改查的语句,我们可以不使用mapper文件直接使用注解来写

@Select("SELECT id,username,password,gender,regist_time FROM t_user")
List<User> queryUsers();

@Select("SELECT id,username,password,gender,regist_time\n" +
        " FROM t_user\n" +
        " WHERE id = #{id}")
User queryUserById(@Param("id") Integer id);

@Delete("delete from t_user\n" +
        "        where id=#{id}")
Integer deleteUser(@Param("id") Integer id);

@Update("update t_user\n" +
        "        set username=#{username},password=#{password},gender=#{gender},regist_time=#{registTime}\n" +
        "        where id=#{id}")
Integer updateUser(User user);

@Options(useGeneratedKeys = true, keyProperty = "id") // 自增key,主键为id
@Insert("insert into t_user values(#{id},#{username},#{password},#{gender},#{registTime})")
Integer insertUser(User user);

使用注解也需要在mybatis配置文件中配置mapper

<!-- 注册mapper文件 -->
    <mappers>
        <mapper class="com.qf.dao.UserDAO"/>
    </mappers>

测试上面的方法:

public class MyBatisTest {
    @Test
    public void test1(){
        UserDAO mapper = MyBatisUtil.getMapper(UserDAO.class);
        /*List<User> users = mapper.queryUsers();
        for (User user : users) {
            System.out.println(user);
        }
        System.out.println("============");
        User user = mapper.queryUserById(10011);
        System.out.println(user);*/
        //mapper.deleteUser(10011);
        User new_user = new User(null, "new_user", "1111", true, new Date());
        //mapper.insertUser(new_user);
        System.out.println("新用户id:"+new_user.getId());
        //mapper.updateUser(new User(10015,"张三2","11111",true,new Date()));
        MyBatisUtil.commit();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容