【Mybatis】(七)使用注解开发&SqlSession源码分析

1.使用注解开发

  • 简单语句可以用注解,稍微复杂的还是用映射文件设置

  • 注解在接口上实现

    @Select("select * from user")
    List<User> getUsers();
    
  • 本质:反射机制实现

  • 底层:动态代理


2.得到SqlSession过程的源码分析


3.基本CRUD

  • 方法存在多个参数时,所有的参数前面必须加@Param("id”)注解
  • 注解方式和映射文件方式是冲突的

  • 可以在MybatisUtils.java中,开启自动提交事务openSession(true)

    public static SqlSession getSqlSession() {
            return sqlSessionFactory.openSession(true);
        }
    

    若不开启事务,在测试方法中涉及修改的操作还是要添加提交事务语句。

    sqlSession.commit();
    
  • UserMapper.java方法上,添加注解

     @Select("select * from user")
        List<User> getUsers();
    
        @Select("select * from user where id = #{id}")
        User getUserById(int id);
    
        @Insert("insert into user(id,name,pwd) values (#{id},#{name},#{password})")
        int addUser(User user);
    
        @Update("update user set name=#{name},pwd=#{password} where id=#{id}")
        int updateUser(User user);
    
        @Delete("delete from user where id=#{uId}")
        int deleteUser(@Param("uId") int id);
    

4.关于@Param()注解

  • 基本类型的参数或者String类型,需要加上
  • 引用类型不需要加
  • 如果只有一个基本类型的话,可以忽略,但是建议都加上
  • 在SQL中引用的就是@Param()中设定的属性名。

5. #{ }和${ }的区别

  • { }能防止sql注入,更安全

  • ${ }直接进行sql语句的拼接,不能防止sql注入
posted @ 2021-01-20 21:10  musecho  阅读(284)  评论(0)    收藏  举报