mybatis框架学习 测试数据库的增删改查

这次的测试基于之前的查询操作搭建的环境,我们注意到与数据库有关的操作一般都会有事务的提交或者回滚,昨天测试的额查询操作在数据库数据的层面上并没有变动,也就不能称之为事务,今天的测试以及涉及到事务的概念了,三板斧:加载mybatis核心配置文件 —> 利用加载文件获得的资源创建会话工厂SqlSessionFactory —> 利用会话工厂创建会话对象 SqlSession 。

 InputStream resourceAsStream = Resources.getResourceAsStream("config.xml");
 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
 SqlSession session = sqlSessionFactory.openSession();

会话对象session:我在源代码里找到了一些目前能用到的常见api(注意方法参数的类型以及常见的一些数据库操作方法)

    void select(String var1, Object var2, ResultHandler var3);
    void select(String var1, ResultHandler var2);
    void select(String var1, Object var2, RowBounds var3, ResultHandler var4);
    int insert(String var1);
    int insert(String var1, Object var2);
    int update(String var1);
    int update(String var1, Object var2);
    int delete(String var1);
    int delete(String var1, Object var2);
    void commit();
    void commit(boolean var1);
    void rollback();
    void rollback(boolean var1);
    void close();
    void clearCache();
    Configuration getConfiguration();
    Connection getConnection();

那么今天的测试增删改能用到的api就有

 插入: int insert(String var1(这个对应的是mapper文件对应的插入方法), Object var2(一般是new出来用于传递参数的与数据库表对应的实体对象));

 删除:int delete(String var1, Object var2);

 修改:int update(String var1, Object var2);

事务的提交:void commit();

会话资源的关闭:void close();

测试代码:

//  插入操作
    @Test
    public void test2() throws IOException {
//        模拟User对象
        User user = new User();
        user.setAge(20);
        user.setName("筒影月子");

        InputStream resourceAsStream = Resources.getResourceAsStream("config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession session = sqlSessionFactory.openSession();

        session.insert("userMapper.save",user);
//        框架的默认事务是不提交的,所以我们需要将事务提交
        session.commit();

        session.close();
    }

//    修改操作
    @Test
    public void test3() throws IOException {
        User user = new User();
        user.setName("筒影月子");
//        改年纪为19岁,本来是20
        user.setAge(19);
//        标准三板斧:
//        通过加载总配置文件获取资源然后创建会话工厂,通过工厂生产会话对象,再利用会话对象操作数据库
        InputStream resourceAsStream = Resources.getResourceAsStream("config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession session = sqlSessionFactory.openSession();

        session.update("userMapper.update",user);
//        框架的默认事务是不提交的,所以我们需要将事务提交
        session.commit();

        session.close();
    }

//    删除操作
@Test
public void test4() throws IOException {
//    User user = new User();
//    user.setName("筒影月子");
//    user.setAge(19);
//        标准三板斧:
//        通过加载总配置文件获取资源然后创建会话工厂,通过工厂生产会话对象,再利用会话对象操作数据库
    InputStream resourceAsStream = Resources.getResourceAsStream("config.xml");
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
    SqlSession session = sqlSessionFactory.openSession();
//    session.delete("userMapper.delete",user);
    session.delete("userMapper.delete1","御坂美琴");
//        框架的默认事务是不提交的,所以我们需要将事务提交
    session.commit();

    session.close();

对应的配置文件中的配置(参考我上面给出的api进行对比增加理解)

<!--    插入操作,参数是实体的属性-->
    <insert id="save" parameterType="com.hlc.pojo.User">
        insert into test.user values (#{name},#{age})
    </insert>
<!--   修改操作 -->
    <update id="update" parameterType="com.hlc.pojo.User">
        update test.user set name=#{name},age=#{age} where name=#{name}
    </update>
<!--    删除的两种操作,带实体对象属性的删除与对应数据库表数据的删除-->
    <delete id="delete" parameterType="com.hlc.pojo.User">
        delete from test.user where name=#{name}
    </delete>
    <delete id="delete1" parameterType="java.lang.String">
        delete from test.user where name=#{name}
    </delete>

这里的测试每一次都要new或者实例化工厂的方法太过于重复,这个代码的重复度太高了,采取spring容器果然是必要的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ForestSpringH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值