Mybatis中注解的使用

Mybatis中注解的使用

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

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

一丶理解面向接口编程;

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

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

二丶使用注解开发

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

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

测试类测试:

public class UserDaoTest {
    static  Logger logger = Logger.getLogger(UserDaoTest.class);
    @Test
    public void tset1(){
        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}")
    User getUserByid(@Param("id") int id);

测试类测试:

    @Test
    public void test2(){
        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}")
    User getUserByid(@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}。否则就会报错。

User getUserById(@Param("kdyid") int id);

在这里插入图片描述

运行结果:

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

2丶添加数据:

接口的创建:

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

测试类测试:

public void test2(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
         mapper.adduser(new User(6, "kdy66", "159814"));
        sqlSession.close();

    }

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

3丶更新数据:

接口:

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

测试类测试:

@Test
public void test2(){
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    mapper.updateuser(new User(5,"kdy55","159814"));
    sqlSession.close();

}

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

4丶删除数据

接口:

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

测试类测试:

   @Test
    public void test2(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.deleteuser(new User(5,"kdy55","159814"));
        sqlSession.close();

    }

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值