SSM框架学习之MyBatis(二)

上章回顾

我们在MyBatis(一)中介绍了有关MyBatis的几点内容:

  • 持久层框架
  • 几乎避免了所以JDBC代码和手动设置参数以及获取结果集
  • 使用了ORM思想,实现了结果集的封装
    ORM:object Relational Mapping 对象关系映射
  • 把数据库表和实体类以及实体类的属性对应起来,让我们可以操作实体类就实现操作数据库表

接下来我们来了解一下,关于MyBatis中的增删改查操作是如何实现的:

上一章中,我们介绍了根据指定字段查询、查询全部数据、插入一条数据,大家还有印象吗?让我们一起来回顾一下吧!

先看看目录结构:
在这里插入图片描述
dao层放的是接口,对数据的操作方法的声明
pojo层放的是实体类以及实体对应的get和set方法
utils包中存放了MyBatis的配置文件读取以及获取SqlSessionFactory对象等操作
【具体代码见MyBatis(一)】

dao层中UserMapper的声明:

1.根据指定字段查询

//    创建一个查询方法
    @Select("select * from user where id = #{id}")
    List<User> queryUserById(@Param("id") int id);

2.查询全部数据

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

3.插入一条数据

    //创建一个插入的方法
    @Insert("insert into user(id,username,password) values(#{id},#{username},#{password})")
    int insertUser(Map map);

测试功能的实现:

1.根据指定字段查询

 @Test
    public void TestQuery(){
    
    
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> userList = mapper.queryUserById(1);
        for (User user : userList) {
    
    
            System.out.println(user);
        }
        sqlSession.close();
    }

2.查询全部数据

    @Test
    public void findAll(){
    
    
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> list = mapper.findAll();
        for (User user : list) {
    
    
            System.out.println(user);
        }
        sqlSession.close();
    }

3.插入一条数据

@Test
    public void insertUser(){
    
    
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        HashMap map = new HashMap();
        map.put("id",3);
        map.put("username","user2");
        map.put("password","1234");
        mapper.insertUser(map);
        sqlSession.close();
    }

以上是MyBatis(一)中的部分内容,接下来让我们来学习一下,如何删除和修改数据

1.删除指定条件的数据

1.首先是在UserMapper.java中添加一个删除方法的声明

//    这是一个删除的方法
    @Delete("delete from user where id = #{id}")
    int deleteUser(@Param("id") int id);

2.然后在测试类中实现这个方法

 @Test
    public void DeleteUser(){
    
    
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int count = mapper.deleteUser(1);
        if (count>0){
    
    
            System.out.println("User already be deleted!");
        }else{
    
    
            System.out.println("Delete failure!");
        }
        sqlSession.close();
    }

让我们来看看日志中打印了哪些内容
在这里插入图片描述
我们可以从打印的日志中看出,已经执行了删除的SQL语句。

为了验证是否删除,我们查看一下数据库:
在这里插入图片描述
id为1的用户信息已经被删除了!

2.修改一条指定的用户信息

1.首先是在UserMapper.java中添加一个修改方法的声明

//    这是一个修改方法
  @Update("update user set password = #{password} where id = #{id}")
  int updateUser(Map map);

2.然后在测试类中实现这个方法

@Test
    public void UpdateUserInfo(){
    
    
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        HashMap map = new HashMap();
        map.put("password","test123");
        map.put("id",2);
        int count = mapper.updateUser(map);
        if (count>0){
    
    
            System.out.println("User already be updated!");
        }else{
    
    
            System.out.println("Update failure!");
        }
        sqlSession.close();
    }

让我们来看看日志中打印了哪些内容
在这里插入图片描述
参数(Parameters)有两个,分别是密码和id。
其中我们要将密码修改为test123

日志中,我们可以看到执行了一条update语句

我们再来看看数据库中id为2的用户密码是否被更改。
在这里插入图片描述
由此可以看出,我们的修改操作执行成功了!

总结:

1.在dao层的Mapper接口中申明要执行的操作和方法
2.在测试中实现对应的方法

增删改查在后期的SSM框架整合的web项目中会经常用到,比较重要,所以希望大家反复练习!!!

以上就是我们用MyBatis实现增删改查的全部内容啦!在后续的文章中,我将继续介绍一些常用的插件、如何在Mapper.xml中实现增删改查以及如何实现分页和模糊查询等内容,希望大家持续关注!

【求关注!求点赞!求三连!!!】

【具体代码我会上传至gitee和github中,等后期内容结束我会上传至网盘,链接我会放在评论区】

更多内容请关注:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45088667/article/details/109440192
今日推荐