欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MyBatis之使用注解开发(五)

程序员文章站 2022-05-24 20:15:04
...

MyBatis之使用注解开发(五)

本文示例部分代码用Mybatis入门(一).

参考资料:Mybatis 3官方文档.

​ 微信公众号:狂神说

一、mybatis执行流程

MyBatis之使用注解开发(五)

二、基于注解(CRUD)

2.1 工具类(MybatisUtils)优化

重载实现

  //获取SqlSession连接
  public static SqlSession getSession(){
      return getSession(true); //事务自动提交
  }
 
  public static SqlSession getSession(boolean flag){
      return sqlSessionFactory.openSession(flag);
  }

2.2 UserMapper

【注意】:1. 确保和数据库字段对应

2. 增删改一定记得事务处理

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

    @Select("select * from user where id=#{id}")
    User getUserById(@Param("id") 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);

三、注意事项

关于@Param

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

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

#与$的区别

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

    INSERT INTO user (name) VALUES (#{name});INSERT INTO user (name) VALUES (?);
    
  • ${} 的作用是直接进行字符串替换【不能防止sql注入问题】

    INSERT INTO user (name) VALUES ('${name}');INSERT INTO user (name) VALUES ('kuangshen');
    

使用注解和配置文件协同开发,才是MyBatis的最佳实践!

相关标签: MyBatis mybatis