mybatis 增删改查

本文介绍了一个使用MyBatis实现用户增删改查功能的Java示例。包括定义UserMapper接口及其XML配置文件,通过MyTest类进行单元测试验证功能正确性。

MyBatis 是一个持久层框架,其作用是把 Java 对象和数据库表记录相互转换。当你使用 insert 语句插入数据时,通常会传入一个 Java 实体类对象,MyBatis 会把实体类对象里的字段值和 SQL 语句里的占位符 #{} 进行匹配,MyBatis 会自动把 User 对象的这些字段值填充到 SQL 语句里。

接口 UserMapper.java:

package com.edward.dao;

import com.edward.pojo.User;

import java.util.List;

public interface UserMapper {

    // 查询全部用户
    List<User> getUserList();
    // 查询具体用户(根据ID)
    User getUserById(@Param("userId") int id);

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

    // 修改用户
    int updateUser(User user);

    // 删除用户
    int deleteUser(@Param("userId") int id);
}

接口实现文件 UserMapper.xml:

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--namespace 绑定一个对应的Mapper接口-->
<mapper namespace="com.edward.dao.UserMapper">
    <select id="getUserList" resultType="com.edward.pojo.User">
        select * from first_sql.user
    </select>

    <select id="getUserById" parameterType="int" resultType="com.edward.pojo.User">
        select * from first_sql.user where id = #{userId}
    </select>

    <insert id="addUser" parameterType="com.edward.pojo.User">
        insert into first_sql.user (id, name, age, salary) values (#{userId}, #{name}, #{age}, #{salary})
    </insert>

    <update id="updateUser" parameterType="com.edward.pojo.User">
        update first_sql.user set name=#{name}, age=#{age} where id=#{userId}
    </update>

    <delete id="deleteUser" parameterType="int">
        delete from first_sql.user where id= #{userId}
    </delete>
</mapper>

MyTest 测试类:

import com.edward.dao.UserMapper;
import com.edward.pojo.User;
import com.edward.utils.MybatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class MyTest {

    @Test
    public void getUser() {
        SqlSession sqlSession = MybatisUtil.getSqlSession();

        try {
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            List<User> userList = userMapper.getUserList();

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

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 关闭 SqlSession
            sqlSession.close();
        }
    }

    @Test
    public void getUserByid() {
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User user = userMapper.getUserById(1);
        System.out.println(user);
        sqlSession.close();
    }


    @Test
    public void addUser() {
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        int res = userMapper.addUser(new User(5, "小李子", 28, 10000));
        if (res > 0) {
            System.out.println("插入成功");
        }
        // 提交事务
        sqlSession.commit();
        sqlSession.close();
    }

    @Test
    public void updateUser() {
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        int res = userMapper.updateUser(new User(3, "赵四", 37, 1000));
        if (res > 0) {
            System.out.println("修改成功");
        }
        // 提交事务
        sqlSession.commit();
        sqlSession.close();
    }

    @Test
    public void deleteUser() {
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        int res = userMapper.deleteUser(3);
        if (res > 0) {
            System.out.println("删除成功");
        }
        // 提交事务
        sqlSession.commit();
        sqlSession.close();
    }



}

如果实体类或数据库中的参数过多,应当使用 Map:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值