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();释放资源
相关推荐
方也_arkling5 小时前
【Java-Day08】static / final / 枚举
java·开发语言
橙淮5 小时前
Spring Bean作用域与生命周期全解析
java·spring
风吹夏回5 小时前
Python 全局异常处理:从“满屏 try-except”到优雅兜底
开发语言·python
Chengbei116 小时前
一站式源码安全检测工具、云安全 / APP / 小程序源码敏感信息递归多层目录扫描AK、JWT、手机号、身份证等敏感信息
java·开发语言·安全·web安全·网络安全·系统安全·安全架构
llz_1126 小时前
web-第一次课后作业
java·开发语言·idea
小熊Coding6 小时前
Python爬取当当网二手图书项目实战!
开发语言·爬虫·python·beautifulsoup·requests·二手图书
秋96 小时前
Java项目运行5天左右自动宕机:系统性定位与解决方案
java·开发语言·python
小江的记录本6 小时前
【JVM虚拟机】垃圾回收GC:垃圾收集器:CMS:核心原理、回收流程、优缺点、废弃原因(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·面试·maven
xiaoshuaishuai86 小时前
C# 内存管理与资源泄漏
开发语言·c#
DIY源码阁6 小时前
JavaSwing学生成绩管理系统 - MySQL版
java·数据库·mysql·eclipse