框架学习之Mybatis学习(二)

Mybatis学习(二)

第二章 Mybatis原始方式的增删改查



前言

Mybatis的删除操作在第一章的时候已经介绍过了,本文重点介绍Mybatis原始方式的添加,修改和查询。


一、Mybatis增加

我们想要在数据库中插入用户user的姓名name和密码password,可以分别插入或者以键值对的形式插入。

配置文件如下:

<insert id="insertUser">
        insert into user values(null , #{name} , #{password})
</insert>
  • 第一种方法:

代码如下:

 /**
     * 添加用户
     * */
    public void insertUser(String name,String password) throws IOException {
        SqlSession sqlSession = null;
        try {
            //获取sqlSession实例
            sqlSession = new DBUtil().getSqlSession();
            //调用sqlSession的方法
            User user = new User(name,password);
            int affectRows = sqlSession.insert("insertUser", user);
            System.out.println("affectRows"+ affectRows);
            //手动提交
            sqlSession.commit();
        } finally {
            //关闭资源
            assert sqlSession != null;
            sqlSession.close();
        }
    }

添加成功:

在这里插入图片描述
值得注意的是,当SQL语句中需要传入两个参数时,#{ }内的值应该和对应类中的get/set方法名一致。如图,把#{name}修改:

在这里插入图片描述
这里再次执行主函数,会报出如下错误:

在这里插入图片描述
可以看到,报错信息显示:无法找到name111的get方法。我们可以理解为,程序在执行的过程中,会自动寻找#{ }内,值的get方法(#{name}找的是getName( )方法),并获取get方法的返回值。出现上述错误的主要原因就是,User类中没有getName111( )方法,产生异常,所以这里的参数,应该和get方法对应。同时mybatis3.5.6版本,如果#{ }中的内容和属性名对应,也能找到参数,实现插入。

  • 第二种方法:

代码如下:

/**
     * map添加用户
     * */
    public void insertUserMap(String name,String password) throws IOException {
        SqlSession sqlSession = null;
        try {
            //获取sqlSession实例
            sqlSession = new DBUtil().getSqlSession();
            //调用sqlSession的方法
            Map<String,Object> map = new HashMap<>();
            map.put("name",name);
            map.put("password",password);
            int affectRows = sqlSession.insert("insertUser", map);
            System.out.println("affectRows"+ affectRows);
            //手动提交
            sqlSession.commit();
        } finally {
            //关闭资源
            assert sqlSession != null;
            sqlSession.close();
        }
    }

添加成功:

在这里插入图片描述


二、Mybatis修改

我们想要在数据库中根据用户的id修改用户姓名name和密码password,也可以分别修改或者以键值对的形式修改。

配置文件如下:

<update id="updateUser">
    update user set name = #{name}, password = #{password} where id = #{id}
</update>
  • 第一种方法:

代码如下:

public void updateUser(int id, String name, String password) throws IOException {
        SqlSession sqlSession = null;
        try {
            sqlSession = new DBUtil().getSqlSession();
            sqlSession.update("updateUser", new User(id, name, password));
            sqlSession.commit();
        } finally {
            if (sqlSession != null) {
                sqlSession.close();
            }
        }
    }
  • 第二种方法:

代码如下:

 public void updateUserMap(int id, String name, String password) throws IOException {
        SqlSession sqlSession = null;
        try {
            sqlSession = new DBUtil().getSqlSession();
            Map<String, Object> map = new HashMap<>();
            map.put("id", id);
            map.put("name", name);
            map.put("password", password);
            sqlSession.update("updateUser", map);
            sqlSession.commit();
        } finally {
            if (sqlSession != null) {
                sqlSession.close();
            }
        }
    }

三、Mybatis查询

查询方法可以实现的功能有很多,这里以单条查询和全部查询为例。

  • 单条查询方法:

单条查询配置文件如下:

<select id="selectUserById" resultType="com.colin.bean.User">
    select id, name, password from user where id = #{fangshadouxing}
</select>

代码如下:

public void selectUserById(int id) throws IOException {
        SqlSession sqlSession = null;
        try {
            // 1、获取sqlSession
            sqlSession = new DBUtil().getSqlSession();
            // 2、执行sqlSession
            User user = sqlSession.selectOne("selectUserById", id);
            System.out.println(user);
        } finally {
            if (sqlSession != null) {
                // 3、关闭
                sqlSession.close();
            }
        }
    }

值得注意是的,如果是查询单条,那么resultType中的类型就是结果类型,如果查询到的是多条,那么resultType中的类型是集合中泛型的类型。

  • 全部查询方法:

全部查询配置文件如下:

<select id="selectUserList" resultType="com.colin.bean.User">
    select id, name, password from user
</select>

代码如下:

 public void selectUserList() throws IOException {
        SqlSession sqlSession = null;
        try {
            // 1、获取sqlSession
            sqlSession = new DBUtil().getSqlSession();
            // 2、执行sqlSession
            List<User> list = sqlSession.selectList("selectUserList");
            System.out.println(list);
        } finally {
            if (sqlSession != null) {
                // 3、关闭
                sqlSession.close();
            }
        }
    }

总结

以上就是今天要讲的内容,Mybatis原始方式的增删改查在以后的学习中应用较少,但学习它能帮助我们完成从JDBC到后续映射接口的过渡,还是很有用的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值