【Mybatis学习笔记】05. 注解&&基于注解实现CRUD

关于注解

1.如何实现注解

在类的接口函数上方添加sql语句直接实现

 public interface UserMapper {
    @Select("select * from user")
    List<User> getUsers();

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

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

    @Update("update mybatis.user set name=#{name}, pwd=#{pwd} where id=#{id}")
    int updateUser(User user);


    @Delete("delete from mybatis.user where id=#{uid}")
    int deleteUser(@Param("uid") int id);
}

mybatis-config.xml核心配置文件中绑定接口

    <mappers>
        <mapper class="com.haining820.dao.UserMapper"/>
    </mappers>

MyBatisUtils.class中设置自动提交为true

    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession(true);
    }//这样在进行增删改查时就不用额外提交事务了

2.基于注解实现CRUD

 @Test
    public void test(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//==================================================================
//        List<User> users = mapper.getUsers();
//        for (User user : users) {
//            System.out.println(user);
//        }  //查询所有用户
//==================================================================
//        mapper.addUser(new User(8, "古力娜扎", "123456"));    //增
//==================================================================
        mapper.deleteUser(5);                                   //删
//==================================================================
//        mapper.updateUser(new User(4, "王二麻子", "123456"));//改
//==================================================================
//        mapper.getUserById(7);                               //查
//==================================================================
//        sqlSession.commit();  //设置自动提交事务后就不用再commit了
        sqlSession.close();
    }

注意

  • 关于@Param() 注解

    • 基本类型的参数或者String类型,需要加上
    • 引用类型不需要加
    • 如果只有一个基本类型的话,可以忽略,建议加上!
    • 在SQL中引用的就是这里的 @Param()中设定的属性名!
  • #{} ${} 的区别

    • #{}用来传入参数,sql在解析的时候会加上" ",当成字符串来解析
    • #{}能够很大程度上防止sql注入;
    • 扩展
上一篇:sql crud


下一篇:什么是CRUD?