1. **mybatis最初配置信息是基于 XML ,映射语句(SQL)也是定义在 XML 中的。而到MyBatis 3提供了新的基于注解的配置。不幸的是,Java 注解的的表达力和灵活性十分有限。最强大的 MyBatis 映射并不能用注解来构建**

sql 类型主要分成 :

  • @select ()

  • @update ()

  • @Insert ()

  • @delete ()

注意:利用注解开发就不需要mapper.xml映射文件了 .

1.在接口中添加注解


    @Select("select * from mybatis.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 = #{id}")
    int deleteUser(@Param("id") int id);
 <!--绑定接口-->
    <mappers>
        <mapper class="com.sy.dao.UserMapper"/>
    </mappers>

2.改造MybatisUtils工具类的getSession( ) 方法,重载实现。

注意:增删改一定记得对事务的处理,查询不用

 public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession(true);//事务自动提交
    }
}

3.测试

  @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);
        }*/

        User userById = mapper.getUserById(5);
        System.out.println(userById);

        sqlSession.close();
    }

    @Test
    public  void test2(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

       mapper.addUser(new User(7,"大河","456"));

       mapper.upDateUser(new User(5,"披风","123456"));

        mapper.deleteUser(4);

        sqlSession.close();

    }

3.用debug查看原理

捕获.PNG

原理大概:
aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy91SkRBVUtyR0M3TFp3d3RjaGxlbFM4a3pBQXlWaWE1dU52aGljMjJYOGFoSnk1QmRPZmp5MUxsRFJmbzhOZjNHT0F6d0FMZ3ZyaWF1NFN6bVhaSWhVVWQyQS82NDA.png

图片处处:
————————————————
版权声明:本文为CSDN博主「狂神说」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33369905/article/details/106647290

@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 (‘xxxx’);