Mybatis注解开发

注解开发

在 Spring 章节的学习中我们见识到了注解开发的便利性,Mybatis最初配置信息是基于 XML ,映射语句(SQL)也是定义在 XML 中的。而到 MyBatis 3 提供了新的基于注解的配置。不过由于 Java 注解的局限性,某些 SQL 语句并不能通过注解来实现。

SQL 注解分类:

  • @select ()
  • @update ()
  • @Insert ()
  • @delete ()

利用注解开发就不需要配置 Mapper.xml 文件了。

1、UserMapper.java

public interface UserMapper {

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

    @Select("select * from user where id=#{uid}")
    User getUserById(@Param("uid") int id);

    @Insert("insert into user(name,pwd) values(#{name},#{password})")
    int addUser(User user);

    @Update("update user set name = #{name} where id = #{id}")
    int updateUser(User user);
}
复制代码

2、 在 Mybatis 的核心配置文件中注入

<mappers>
    <mapper class="com.msdn.mapper.UserMapper" />
</mappers>
复制代码

3、测试

    @Test
    public void getUsers(){
        SqlSession sqlSession = MybatisUtil.getSqlSession();

        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        userMapper.updateUser(new User(6,"clearLove","12345"));
        sqlSession.close();
    }
复制代码

关于@Param

@Param注解用于给方法参数起一个名字。以下是总结的使用原则:

  • 在方法只接受一个参数的情况下,可以不使用@Param。
  • 在方法接受多个参数的情况下,建议一定要使用@Param注解给参数命名。
  • 如果参数是 JavaBean , 则不能使用@Param。
  • 不使用@Param注解时,参数只能有一个,并且是Javabean

`#`与`$`的区别

  • #{}
    的作用主要是替换预编译语句(PrepareStatement)中的占位符? 【推荐使用】

    INSERT INTO user (name) VALUES (#{name});
    INSERT INTO user (name) VALUES (?);
    复制代码
  • ${}
    的作用是直接进行字符串替换

    INSERT INTO user (name) VALUES ('${name}');
    INSERT INTO user (name) VALUES ('kuangshen');
    复制代码

原文 

https://juejin.im/post/5e81f8af51882573a855a51c

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Mybatis注解开发

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址