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();释放资源
相关推荐
前端老石人2 分钟前
HTML 字符引用完全指南
开发语言·前端·html
matlab_xiaowang18 分钟前
Redux 入门:JavaScript 可预测状态管理库
开发语言·javascript·其他·ecmascript
虹科网络安全30 分钟前
艾体宝干货|数据复制详解:类型、原理与适用场景
java·开发语言·数据库
axng pmje1 小时前
Java语法进阶
java·开发语言·jvm
rKWP8gKv71 小时前
Java微服务性能监控:Prometheus与Grafana集成方案
java·微服务·prometheus
老前端的功夫1 小时前
【Java从入门到入土】28:Stream API:告别for循环的新时代
java·开发语言·python
qq_435287921 小时前
第9章 夸父逐日与后羿射日:死循环与进程终止?十个太阳同时值班的并行冲突
java·开发语言·git·死循环·进程终止·并行冲突·夸父逐日
小江的记录本1 小时前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
止语Lab1 小时前
从手动到框架:Go DI 演进的三个拐点
开发语言·后端·golang
运维全栈笔记1 小时前
Linux安装配置Tomcat保姆级教程:从部署到性能调优
linux·服务器·中间件·tomcat·apache·web