MyBatis(三) 简单的 CRUD

本文通过实例演示了如何使用 MyBatis 框架实现基本的增删改查(CRUD)操作,包括插入记录并返回 ID、模糊查询、更新记录及删除记录。

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

写好了前面的入门程序,现在我们来开始写简单的 增删改查:
添加用户前面已经写了,下面为了测试我们就多插入几条数据。
这里写图片描述

进入正题
1、’删’ ‘改’ ‘查’ 用户,首先在原来的 User.xml 表中添加下面的 代码:
注意事项:
- 这里需要说明的是:parameterType 代表传入参数类型,:resultType代表返回数据类型
- 如果修改需要传入多个参数时,可以传入一个对象作为参数。

<?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="user">
    <!-- 增加 #{}表示 占位符, 等价于原始写法的 ?-->
    <insert id="insert" parameterType="com.zll.TestMyBatis.bean.User">
        insert into user(parentId,sonId,name,birthday) value(#{parentId},#{sonId},#{name},#{birthday})
    </insert>
        <!-- 增加用户并返回 id -->
    <insert id="insertReteunId" parameterType="com.zll.TestMyBatis.bean.User">
        <selectKey keyProperty="id" order="AFTER" resultType="int">
            <!-- sql语句,获取最近插入数据的id -->
            select last_insert_id();
        </selectKey>
        insert into user(parentId,sonId,name,birthday) value(#{parentId},#{sonId},#{name},#{birthday})
    </insert>

    <!-- 增加  如果返回的是 uuid  (这里没有测试,下路可以自己测试)-->
    <insert id="insertReteunUId" parameterType="com.zll.TestMyBatis.bean.User">
        <selectKey keyProperty="id" order="BEFORE" resultType="string">
            select uuid;
        </selectKey>
        insert into user(parentId,sonId,name,birthday) value(#{parentId},#{sonId},#{name},#{birthday})
    </insert>
    <!-- 删除 -->
    <delete id="deleteById" parameterType="int">
        delete from user where id=#{id}
    </delete>
    <!-- 更新 -->
    <update id="updateById" parameterType="com.zll.TestMyBatis.bean.User">
        update user set parentId=#{parentId},sonId=#{sonId},name=#{name},birthday=#{birthday} where id=#{id}
    </update> 
    <!-- 模糊查询     ${}符号表示sql使用拼接方式,这样会参数sql注入露点,所以大家要注意 -->
    <!-- 模糊查询     ${}符号表示sql使用拼接方式,这样会参数sql注入露点,所以建议大家使用 #{value} 需要模糊查询是可以使用 %xxx% -->
    <select id="findByName" parameterType="string" resultType="com.zll.TestMyBatis.bean.User">
        <!-- select * from user where name like "%${value}%" -->
        select * from user where name like #{value}
    </select>
</mapper>

进入测试代码:
插入用户并返回id:

    public void insertUserRetrunId() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session = sqlSessionFactory.openSession();

        User user = new User();
        user.setName("小红");
        user.setBirthday(new Date());

        session.insert("user.insertReteunId", user);
        session.commit();
        //注意前面没有设置id,这里返回的是我们刚插入数据的id
        System.out.println("这是刚插入的数据id = "+user.getId());
        session.close();
    }

测试结果查看控制台

模糊查询:

    public void findUser() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session = sqlSessionFactory.openSession();
        //模糊查询 "%#{}%"
        //List<User> list = session.selectList("user.findByName", "小");
        //模糊查询 推荐方式
        List<User> list = session.selectList("user.findByName", "%小%");
        for(int i=0; i<list.size(); i++){
            System.out.println(list.get(i));
        }
        session.close();
    }

执行结果
这里写图片描述

修改操作

    //修改了小明为 小明明 并设置parentid为3
    public void updateUser() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session = sqlSessionFactory.openSession();

        User user = new User();
        user.setId(4);
        user.setParentId(3);
        user.setName("小明明");
        user.setBirthday(new Date());

        session.update("user.updateById", user);
        session.commit();
        session.close();
    }

执行结果:

删除操作

    //删除了小红
    public void deleteUser() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session = sqlSessionFactory.openSession();

        session.delete("user.deleteById", 7);
        session.commit();
        session.close();
    }

执行结果:
这里写图片描述

这里我们都使用junit 测试,下一章我们会进入实际开发中,看看实际开发中是如何使用 MyBatis的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值