【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注入


浙公网安备 33010602011771号