Mybatis CRUD 操作(XML实现)

本文介绍如何在 MyBatis 中实现基本的增删改查(CRUD)操作,包括配置 SQL 映射文件、编写 Java 测试类并使用 JUnit 进行单元测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于快速入门时所建工程和数据库开始做增删改查操作。

1.在src下新建一个package,命名为com.atguigu.mybatis.test2.

2.将上次用到的userMapper复制到新的package目录下,并修改namespace.

3.在conf.xml中注册新的userMapper.xml

<mapper resource="com/atguigu/mybatis/test2/userMapper.xml"/>

4.在userMapper中编辑具体的sql操作。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.mybatis.test2.userMapper">
    <!-- 
        CRUD operator
     -->
      <insert id="addUser" parameterType="com.atguigu.mybatis.test1.User" >
        insert into users(name,age) values(#{name},#{age})
     </insert>   

      <delete id="deleteUser" parameterType="int" >
        delete from users where id=#{id}
     </delete>  

      <update id="updateUser" parameterType="com.atguigu.mybatis.test1.User">
        update users set name=#{name},age=#{age} where id=#{id}
     </update>  

     <select id="getUser" parameterType="int" resultType="com.atguigu.mybatis.test1.User">
        select * from users where id=#{id}
     </select>   

      <select id="getAllUser" resultType="com.atguigu.mybatis.test1.User">
        select * from users 
     </select>
//此操作返回类型List<user>,在java文件中定义   

</mapper>

5.在com.atguigu.mybatis.test2包下新建一个测试类,不带main()以免引起冲突,采用Junit方法进行单元测试(选中方法 按下F11即可)

public class Test2 {

    @Test//注解名和类名不能冲突
    public void testAdd()
    {
        SqlSessionFactory factory=MybatisUtil.getFactory();
        SqlSession session=factory.openSession();

        String statement="com.atguigu.mybatis.test2.userMapper.addUser";
        int insert=session.insert(statement, new User(-1,"liuqiao",21));
        session.commit();//如果没有提交则数据库中没有值
        //也可以这样:factory.openSession(true);设置为自动提交
        System.out.println(insert);
    }

    @Test
    public void testUpdate()
    {
        SqlSessionFactory factory=MybatisUtil.getFactory();
        SqlSession session=factory.openSession();

        String statement="com.atguigu.mybatis.test2.userMapper.updateUser";
        int update=session.update(statement, new User(4,"liuqiao6",21));
        session.commit();
        System.out.println(update);
    }

    @Test
    public void testDelete()
    {
        SqlSessionFactory factory=MybatisUtil.getFactory();
        SqlSession session=factory.openSession(true);

        String statement="com.atguigu.mybatis.test2.userMapper.deleteUser";
        int delete=session.delete(statement, 4);
        //session.commit();
        System.out.println(delete);
    }

    @Test
    public void testGetAllUser()
    {
        SqlSessionFactory factory=MybatisUtil.getFactory();
        SqlSession session=factory.openSession(true);

        String statement="com.atguigu.mybatis.test2.userMapper.getAllUser";
        List<User> users=session.selectList(statement);
        System.out.println(users);
    }

}

其中MybatisUtil为自己定义的工具类,里面有一个产生sqlFactory的方法

public class MybatisUtil {

    public static SqlSessionFactory getFactory() {
        String resource="conf.xml";

        InputStream is=Test.class.getClassLoader().getResourceAsStream(resource);
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);

        return factory;
    }

6.最好每编写一个方法就测试好一个方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值