Mybatis中注解的使用

2022-10-23 11:55:16

Mybatis中注解的使用

声明:本文章属于学习笔记,根据狂神说的Mybatis编写

Mybatis在线文档:https://mybatis.org/mybatis-3/zh/index.html

一丶理解面向接口编程;

首先我们应该清楚地一点,什么面向接口编程?
我们看看秦疆老师怎么说:
在这里插入图片描述
在这里插入图片描述

在这里老师举个很简单的例子:就是一个构架师,假如让不同的人实现不同的功能,那么他其实就会定义一些接口,我们只需要将这些功能按着接口的功能实现,这也就是接口的一些好处。

二丶使用注解开发

因为我们用注解来进行数据库的操作,所以我们可以省去UserMapper.xml文件,我们只需在接口上面表明注解即可:
在这里插入图片描述

mybatis-config.xml文件的增加配置:绑定接口
在这里插入图片描述

测试类测试:

publicclassUserDaoTest{static  Logger logger= Logger.getLogger(UserDaoTest.class);@Testpublicvoidtset1(){
        SqlSession sqlSession= MybatisUtils.getSqlSession();
        logger.info("打入地方内部");
        UserMapper mapper= sqlSession.getMapper(UserMapper.class);
        List<User> use= mapper.getUse();for(User user: use){
            System.out.println(user);}
        sqlSession.close();}}

运行结果:
在这里插入图片描述我们可以看到我们的查询确实查询到了,但是pwd却为null,这是因为数据库的字段名和实体类的字段名不一致导致的,但是我们有删除的UserMapper.xml文件,不能配置resultmap映射。所以我们是改变不了的,那么也就是说,当我们在处理简单的sql的语句时我们可以使用注解开发,但是当我们处理一些复杂的sql的时候,我们还是要用mapper文件。

三丶使用注解进行curd:

1丶根据id查询


接口创建:

@Select("select * from user where id=#{id}")
    UsergetUserByid(@Param("id")int id);

测试类测试:

@Testpublicvoidtest2(){
        SqlSession sqlSession= MybatisUtils.getSqlSession();
        UserMapper mapper= sqlSession.getMapper(UserMapper.class);
        User userByid= mapper.getUserByid(1);
        System.out.println(userByid);
        sqlSession.close();}

运行结果:
在这里插入图片描述

在这里我想说的是,虽然我们查询成功但是我们还是有一个问题,就是根据id查询是注解中的id ,还是接口中的参数的id。

修改后的接口抽象方法:

@Select("select * from user where id=#{id}")
    UsergetUserByid(@Param("kdyid")int id);

运行结果:
在这里插入图片描述

我们可以看到其实就是这个id是根据注解中的id去查询:
@Select(“select * from user where id=#{id}”)
中的#{id}是和@Param(“id”) 中的id对应的。

所以反过来看我们以前配置的UserMapper.xml文件,当我们注解中的为kdyid那么我们的UserMapper.xml文件中的sql语句在where后面的的查询就一定是#{kdyid}。否则就会报错。

UsergetUserById(@Param("kdyid")int id);

在这里插入图片描述

运行结果:

在这里插入图片描述
我们如果都将其改回为id:
在这里插入图片描述
这样才可以查询的到。

2丶添加数据:

接口的创建:

@Insert("insert into user(id,name,password)values(#{id},#{name},#{pwd})")intadduser(User user);

测试类测试:

publicvoidtest2(){
        SqlSession sqlSession= MybatisUtils.getSqlSession();
        UserMapper mapper= sqlSession.getMapper(UserMapper.class);
         mapper.adduser(newUser(6,"kdy66","159814"));
        sqlSession.close();}

运行结果:
在这里插入图片描述

3丶更新数据:

接口:

@Update("update user set name=#{name},password=#{password} where id=#{id}")intupdateuser(User user);

测试类测试:

@Testpublicvoidtest2(){
    SqlSession sqlSession= MybatisUtils.getSqlSession();
    UserMapper mapper= sqlSession.getMapper(UserMapper.class);
    mapper.updateuser(newUser(5,"kdy55","159814"));
    sqlSession.close();}

运行结果:
在这里插入图片描述

4丶删除数据

接口:

@Delete("delete from user where id=#{id}")intdeleteuser(User user);

测试类测试:

@Testpublicvoidtest2(){
        SqlSession sqlSession= MybatisUtils.getSqlSession();
        UserMapper mapper= sqlSession.getMapper(UserMapper.class);
        mapper.deleteuser(newUser(5,"kdy55","159814"));
        sqlSession.close();}

运行结果:
在这里插入图片描述

另外:
在这里插入图片描述

  • 作者:Varmilo丶
  • 原文链接:https://blog.csdn.net/qq_55983276/article/details/116978669
    更新时间:2022-10-23 11:55:16