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();释放资源
相关推荐
Freak嵌入式4 分钟前
MicroPython LVGL基础知识和概念:时序与动态效果
开发语言·python·github·php·gui·lvgl·micropython
戮戮33 分钟前
Spring Cloud Gateway 零拷贝参数校验:一种高性能网关架构实践
java·网络·架构·gateway
2501_9333295533 分钟前
企业媒体发布与舆情管理实战:Infoseek舆情系统技术架构与落地解析
大数据·开发语言·人工智能·数据库开发
"菠萝"36 分钟前
C#知识学习-021(文字关键字)
开发语言·学习·c#
minji...36 分钟前
Linux 线程同步与互斥(二) 线程同步,条件变量,pthread_cond_init/wait/signal/broadcast
linux·运维·开发语言·jvm·数据结构·c++
zhangzeyuaaa38 分钟前
Python 中的 Map 和 Reduce 详解
开发语言·python
游乐码1 小时前
c#HashTable
开发语言·c#
alengan1 小时前
cocos自动编译-Android自动出apk包
java·eclipse
漫霂1 小时前
二叉树的统一迭代遍历
java·算法