Mybatis增删改查&CURD

CURD

namespace

namespace 中的包名要和 Dao/Mapper 接口的包名一致!

编程思路

编写接口

UserMapper.java

java 复制代码
import java.util.List;

public interface UserMapper {
    // 查询全部用户
    List<user> getUserList();

    // 根据ID查询用户
    user getUserById(int id);

    // 插入用户
    int addUser(user user);

    // 更新用户
    int updateUser(user user);

    // 删除用户
    int deleteUser(int id);

}

编写Mapper.xml中的sql语句

xml 复制代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--namespcae=绑定一个对应的Dao/Mapper接口-->
<mapper namespace="com.cike.dao.UserMapper">

    <!--<select id="对应UserMapper的方法" resultType="实体类">-->
    <select id="getUserList" resultType="com.cike.pojo.user">
        <!--执行SQL-->
        select * from mybatis.user
    </select>

    <select id="getUserById" parameterType="int" resultType="com.cike.pojo.user">
        select * from mybatis.user where id = #{id}
    </select>

    <insert id="addUser" parameterType="com.cike.pojo.user">
            insert into mybatis.user(id, name, pwd) values (#{id}, #{name}, #{pwd})
    </insert>

    <update id="updateUser" parameterType="com.cike.pojo.user">
    update mybatis.user set name=#{name},pwd=#{pwd} where id =#{id};
    </update>

    <delete id="deleteUser" parameterType="com.cike.pojo.user">
        delete from mybatis.user where id =#{id};
    </delete>
</mapper>

测试

java 复制代码
public class UserMapperTest {
    @Test
    public void  test(){
        //第一步:获得SqlSession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //执行SQL
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);// 获得对象
        List<user> userList = userMapper.getUserList();

        for (user user : userList){
            System.out.println(user);
        }

        // 关闭SqlSession
        sqlSession.close();
    }

    @Test
    public void getUserById(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        user userById = mapper.getUserById(1);
        System.out.println(userById);
        sqlSession.close();
    }

    /*增删改查需要提交事务*/
    @Test
    public void addUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        int res = mapper.addUser(new user(3, "cike_y", "123456"));
        if (res > 0){
            System.out.println("成功插入"+res+"条数据");
        }
        sqlSession.commit();
        sqlSession.close();

    }

    @Test
    public void updateUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int i = mapper.updateUser(new user(1, "admin", "123456"));
        System.out.println(i);
        if (i > 0){
            System.out.println("成功更新"+i+"条数据");
        }
        sqlSession.commit();
        sqlSession.close();
    }

    @Test
    public void deleteUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        int i = mapper.deleteUser(3);
        if (i>0){
            System.out.println("成功删除"+i+"条数据");
        }
        sqlSession.commit();
        sqlSession.close();
    }

}

SELECT

Mapper.xml 中的代码

xml 复制代码
    <select id="getUserById" parameterType="int" resultType="com.cike.pojo.user">
        select * from mybatis.user where id = #{id}
    </select>

接口中的代码

java 复制代码
user getUserById(int id);

测试方法

java 复制代码
    @Test
    public void getUserById(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        user userById = mapper.getUserById(1);
        System.out.println(userById);
        sqlSession.close();
    }

INSERT

Mapper.xml 中的代码

xml 复制代码
    <insert id="addUser" parameterType="com.cike.pojo.user">
            insert into mybatis.user(id, name, pwd) values (#{id}, #{name}, #{pwd})
    </insert>

接口中的代码

java 复制代码
    <insert id="addUser" parameterType="com.cike.pojo.user">
            insert into mybatis.user(id, name, pwd) values (#{id}, #{name}, #{pwd})
    </insert>

测试方法

java 复制代码
    @Test
    public void addUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        int res = mapper.addUser(new user(3, "cike_y", "123456"));
        if (res > 0){
            System.out.println("成功插入"+res+"条数据");
        }
        sqlSession.commit();
        sqlSession.close();

    }

UPDATE

Mapper.xml 中的代码

xml 复制代码
    <update id="updateUser" parameterType="com.cike.pojo.user">
    update mybatis.user set name=#{name},pwd=#{pwd} where id =#{id};
    </update>

接口中的代码

java 复制代码
int updateUser(user user);

测试方法

java 复制代码
    @Test
    public void updateUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int i = mapper.updateUser(new user(1, "admin", "1234567"));
        System.out.println(i);
        if (i > 0){
            System.out.println("成功更新"+i+"条数据");
        }
        sqlSession.commit();
        sqlSession.close();
    }

DELETE

Mapper.xml 中的代码

xml 复制代码
    <delete id="deleteUser" parameterType="com.cike.pojo.user">
        delete from mybatis.user where id =#{id};
    </delete>

接口中的代码

java 复制代码
int deleteUser(int id);

测试方法

java 复制代码
    @Test
    public void deleteUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        int i = mapper.deleteUser(3);
        if (i>0){
            System.out.println("成功删除"+i+"条数据");
        }
        sqlSession.commit();
        sqlSession.close();
    }

注意点

  • 增删改(没有查)需要提交事务
  • sqlSession.close();释放资源
相关推荐
蜗牛互联网6 分钟前
从GitHub动态工作流理解确定性编排与Agent判断边界
java·人工智能·后端·github
菜鸟~noob23310 分钟前
【太空电子战】午夜锤行动中的电磁静默区:可逆干扰的实战验证【含matlab代码】
linux·开发语言·matlab·电子战
开开心心就好23 分钟前
办公软件卸载不干净?专用工具一键清残留
java·前端·人工智能·智能手机·kafka·excel·memcache
大侠归来25 分钟前
C 与 Go 语言对比:从设计哲学到工程实践
java·c语言·golang
坤坤子吖34 分钟前
Python基础语法学习:条件、循环与程序控制
开发语言·笔记·python·学习
吠品40 分钟前
volatile到底在拦什么:SysTick->VAL读的哪格
java·服务器·开发语言
狼与自由1 小时前
python打包
开发语言·python
进击的雷神1 小时前
OpenClaw 太重、启动太慢?我试了试这个 Rust 重写的轻量版 AI 助手网关
开发语言·人工智能·rust·zeroclaw
辛苦才能1 小时前
C++ 红黑树(上):五条规则背后的近似平衡与插入的三类情况
开发语言·c++
新鲜势力呀1 小时前
PHP 定时任务系统实战:从 Cron 混乱执行到任务调度中心 + Redis队列 + 失败重试
android·java·redis