【Mybatis】使用注解实现增、删、改、查(CRUD)

补充

1.设置自动提交

我们在前面说到过,在进行增"、“删”、"改"的时候,我们需要进行手动的提交当时是通过commit()方法实现的。

其实我们在获取sqlSession对象的时候,就可以设置自动提交,因为openSession()有一个重载的方法 openSession(boolean autoCommit),如下图:
在这里插入图片描述
经过上述的操作后,我们就不需要进行手动提交commit()了,但是最好还是手动提交,在下面的例子中,我也是使用的手动提交。

2.介绍一个新的注解@Param

@Param我们还是很有必要比较了解使用的,因为我们在使用注解开发的时候,其起到一个很方便的作用

我们在接口中的抽象方法的每一个基本数据类型和String参数前面加上@Param.。
我们其实就相当于给这个参数进行了重命名,被重命名的参数可以在注解中哦xxxMapper.xml中通过#{}进行获取。
使用如下:
在这里插入图片描述

3.关于#{}和${}的区别

我们在开发中一般是只使用#{}进行获取参数的,因为’’#{}’'是可以防止SQL注入的,相当于JDBC中的prepareStatement

一、使用注解前的说明

1.我们如果使用注解实现一些简单的sql操作,那么可以完全不使用xxxMapper.xml文件

2.使用注解前,我们需要到核心配置文件中去使用class去注册mapper,如下:
在这里插入图片描述

二、使用注解实现"增"、“删”、“改”、“查”

sql注解是和接口的抽象类在一起的

下面的代码是写在UserMapper中的

1.实现"增"

    @Insert("insert into `user`(`id`,`name`,`passwd`) values(#{id},#{name},#{passwd})")
    int addUser(User user);

2.实现"删"

    @Delete("delete from `user` where `id`=#{uid}")
    int delUser(@Param("uid") int id);

3.实现"改"

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

4.实现"查"

    @Select("select * from `user`")
    List<User> selUsers();

    @Select("select * from `user` where `id`=#{id}")
    User getUserById(Map<String, Integer> map);

三、测试

1.测试"增"

    @Test
    public void addUser(User user){
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        mapper.addUser(new User(7,"第七","123456"));

        sqlSession.commit();
        sqlSession.close();
    }

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

2.测试"删"

    @Test
    public void delUser(int id){
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        mapper.delUser(1);


        sqlSession.commit();
        sqlSession.close();

    }

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

3.测试"改"

    @Test
    public void updateUser(User user){
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        mapper.updateUser(new User(7,"老七","777777"));

        sqlSession.commit();
        sqlSession.close();
    }

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

4.测试"查"

    @Test
    public void selUsers() {
        //获取sqlSession
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        //获取mapper
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        //调用方法
        List<User> userList = mapper.selUsers();
        //打印结果
        for (User user : userList) {
            System.out.print(user.getId() + "\t");
            System.out.print(user.getName() + "\t");
            System.out.println(user.getPasswd());
        }
        //关闭资源
        sqlSession.close();
    }

    @Test
    public void getUserById(){
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        Map<String, Integer> map = new HashMap<String, Integer>();
        map.put("id",3);
        User user = mapper.getUserById(map);
        System.out.println(user);

        sqlSession.close();
    }

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

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值