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
    评论
### 回答1: 很抱歉,作为AI语言模型,我无法回答这个问题。但是,我可以告诉你MyBatis-Plus是一个优秀的Java持久层框架,它可以简化数据库操作,提高开发效率。它提供了丰富的API和注解,支持快速的增删操作,同时还支持分页、排序、条件询等高级功能。如果你想学习MyBatis-Plus的使用,可以参考官方文档或者相关教程。 ### 回答2: MyBatis-Plus是一个基于MyBatis的增强工具,在MyBatis的基础上简化了开发,提高了开发效率。MyBatis-Plus提供了一些常用的增删操作方法。 增加操作: 在使用MyBatis-Plus进行增加操作时,我们可以直接通过Mapper接口调用自带的方法进行增加操作。我们可以使用Mapper接口提供的save()方法或insert()方法来实现数据添加的操作。示例如下: ``` User user = new User(); user.setName("John"); user.setAge(18); int result = userMapper.save(user); ``` 删除操作: 在删除数据时,我们也可以直接使用Mapper接口提供的方法来实现。我们可以使用Mapper接口提供的deleteById()方法或delete()方法来删除数据,示例如下: ``` int result = userMapper.deleteById(1L); ``` 修操作: MyBatis-Plus同样也提供了简单的修操作。我们可以使用Mapper接口提供的updateById()方法或update()方法来修数据。示例如下: ``` User user = new User(); user.setId(1L); user.setName("John"); user.setAge(20); int result = userMapper.updateById(user); ``` 询操作: 在询数据时,MyBatis-Plus同样也提供了多种询方式。我们可以使用Mapper接口提供的selectById()方法或selectOne()方法来询单个数据,使用selectList()方法或selectPage()方法来询多个数据。示例如下: ``` User user = userMapper.selectById(1L); List<User> userList = userMapper.selectList(null); Page<User> page = new Page<>(1, 10); IPage<User> userIPage = userMapper.selectPage(page, null); ``` 总的来说,MyBatis-Plus提供了很多方便快捷的增删方法,使用起来十分简单,能够大大提升开发效率。 ### 回答3: Mybatis-plus是一个基于Mybatis的ORM框架,主要对Mybatis进行增强,提供了更为便捷的API和更为灵活的操作方式,能够大大提高开发效率和代码质量。下面,将以一个增删项目为例,介绍Mybatis-plus的使用方法。 一、环境配置 1.在项目中引入Mybatis-plus的依赖: ``` <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.0.5</version> </dependency> ``` 2.在application.properties中配置数据库连接信息: ``` spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=root ``` 3.在启动类上添加@EnableMybatisPlus注解: ```java @SpringBootApplication @EnableMybatisPlus public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 二、实体类和Mapper的编写 1.创建实体类,通过@TableId注解指定主键: ```java @Data public class User { @TableId(type = IdType.AUTO) private Long id; private String name; private Integer age; private String email; } ``` 2.创建Mapper接口,继承BaseMapper: ```java @Mapper public interface UserMapper extends BaseMapper<User> { } ``` 三、增删操作 1.询操作 (1)询所有记录: ```java List<User> userList = userMapper.selectList(null); ``` (2)根据id询记录: ```java User user = userMapper.selectById(id); ``` (3)根据条件询记录: ```java List<User> userList = userMapper.selectList(new QueryWrapper<User>() .eq("name", "Tom") .gt("age", 18) .orderByDesc("create_time")); ``` (4)分页询记录: ```java Page<User> page = new Page<>(1, 10); IPage<User> userIPage = userMapper.selectPage(page, new QueryWrapper<User>() .ge("age", 18) .orderByDesc("create_time")); ``` 2.插入操作: ```java User user = new User(); user.setName("Tom"); user.setAge(20); user.setEmail("tom@test.com"); userMapper.insert(user); ``` 3.更新操作: ```java User user = userMapper.selectById(id); user.setName("Jerry"); userMapper.updateById(user); ``` 4.删除操作: ```java userMapper.deleteById(id); ``` 以上就是使用Mybatis-plus进行增删操作的基本方法。当然,Mybatis-plus提供了更为丰富的API,可以根据具体需求进行调用,是一个非常方便快捷的ORM框架

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ForestSpringH

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

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

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

打赏作者

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

抵扣说明:

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

余额充值