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();释放资源
相关推荐
坚持就完事了7 分钟前
数据结构之树(Java实现)
java·算法
Monly2110 分钟前
Java:修改打包配置文件
java·开发语言
roman_日积跬步-终至千里11 分钟前
【架构设计与实现】动态数据源切换:核心代码实现手册
java
XiaoFan01219 分钟前
免密批量抓取日志并集中输出
java·linux·服务器
顾北1226 分钟前
MCP服务端开发:图片搜索助力旅游计划
java·spring boot·dubbo
我命由我1234532 分钟前
Android 广播 - 静态注册与动态注册对广播接收器实例创建的影响
android·java·开发语言·java-ee·android studio·android-studio·android runtime
赛姐在努力.34 分钟前
【拓扑排序】-- 算法原理讲解,及实现拓扑排序,附赠热门例题
java·算法·图论
yxc_inspire37 分钟前
Java学习第二天
java·面向对象
毕设源码-赖学姐39 分钟前
【开题答辩全过程】以 基于net超市销售管理系统为例,包含答辩的问题和答案
java
island131440 分钟前
CANN ops-nn 算子库深度解析:核心算子(如激活函数、归一化)的数值精度控制与内存高效实现
开发语言·人工智能·神经网络