3、mybatis 实现增删改查CRUD--入门级

在上一篇:maven项目----mybatis连接数据库--入门级完整代码https://blog.csdn.net/LOVEYSUXIN/article/details/103461531基础上,进一步学习通过mybatis实现对数据库表的增删改查功能。部分代码同上一篇的就不在重复记录。

1、创建UserDao接口


package com.xl.dao;

import com.xl.mybatis.User;

import java.util.List;

public interface UserDao {

    /**根据uid 查询用户信息*/
    public User queryUserById(Integer uid);

    /** 查询所有用户信息*/
    public List<User> queryUserAll();

    /**新增用户*/
    public void insertUser(User user);

    /**更新用户信息*/
    public void updateUser(User user);

    /**根据uid删除用户信息*/
    public void deleteUser(Integer uid);
}

2、创建UserDaoImpl

package com.xl;

import com.xl.dao.UserDao;
import com.xl.mybatis.User;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

public class UserDaoImpl implements UserDao {
    public SqlSession sqlSession;

    public UserDaoImpl(SqlSession sqlSession){
        this.sqlSession = sqlSession;
    }

    public User queryUserById(Integer uid) {
        return this.sqlSession.selectOne("UserDao.queryUserById",uid);
    }

    public List<User> queryUserAll() {
        return this.sqlSession.selectList("UserDao.queryUserAll");
    }

    public void insertUser(User user) {
        this.sqlSession.insert("UserDao.insertUser", user);
    }

    public void updateUser(User user) {
        this.sqlSession.update("UserDao.updateUser", user);
    }

    public void deleteUser(Integer uid) {
        this.sqlSession.delete("UserDao.deleteUser", uid);
    }
}

3、 编写UserDao对应的UserDaoMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- mapper:根标签,namespace:命名空间,随便写,一般保证命名空间唯一 -->
<mapper namespace="UserDao">

    <select id="queryUserById" resultType="com.xl.mybatis.User">
      select * from user where uid = #{uid};
   </select>

    <select id="queryUserAll" resultType="com.xl.mybatis.User">
      select * from user;
   </select>

    <insert id="insertUser" parameterType="com.xl.mybatis.User">
        INSERT INTO user(
        uid,
        uname,
        usex
        )
        values
        (
        #{uid},
        #{uname},
        #{usex}
        );
    </insert>

    <update id="updateUser" parameterType="com.xl.mybatis.User">
        update user
        <trim prefix="set" suffixOverrides=",">
            <if test="uname!=null">uname = #{uname},</if>
            <if test="usex!=null">usex = #{usex},</if>
        </trim>
        where (uid = #{uid})
    </update>

    <delete id="deleteUser">
        delete from user where uid=#{uid}
    </delete>
</mapper>

4、在mybatis-config.xml中添加配置:

5、 添加UserDao的测试用例

Pom文件中添加junit依赖

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>

按住Alt+Enter,选择create test

6、编写UserDao的测试用例

package com.xl.mybatis.test;

import com.xl.UserDaoImpl;
import com.xl.dao.UserDao;
import com.xl.mybatis.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Before;
import org.junit.Test;

import java.io.InputStream;
import java.util.List;


public class UserDaoTest {
    public UserDao userDao;
    public SqlSession sqlSession;

    @Before
    public void setUp() throws Exception{

        String resource = "mybatis-config.xml";
        // 读取配置文件
        InputStream is = Resources.getResourceAsStream(resource);
        // 构建SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
        // 获取sqlSession
        sqlSession = sqlSessionFactory.openSession();
        this.userDao = new UserDaoImpl(sqlSession);
    }

    @Test
    public void queryUserById() {
        System.out.println(this.userDao.queryUserById(1));
    }

    @Test
    public void queryUserAll() {
        List<User> userList = this.userDao.queryUserAll();
        for(User user:userList){
            System.out.println(user);
        }
    }

    @Test
    public void insertUser() {
        User user = new User();
        user.setUid(4);
        user.setUname("Lan");
        user.setUsex("女");

        this.userDao.insertUser(user);
        this.sqlSession.commit();
    }

    @Test
    public void updateUser() {
        User user = new User();
        user.setUname("Fei");
        user.setUsex("男");
        user.setUid(1);
        this.userDao.updateUser(user);
        this.sqlSession.commit();
    }

    @Test
    public void deleteUser() {
        this.userDao.deleteUser(4);
        this.sqlSession.commit();
    }
}

 可鼠标点选某一个方法单独测试该方法,也可直接运行UserDaoTest类,测试所有方法。

下一篇学习 将通过动态代理的方式使得mybatis实现CRUDhttps://blog.csdn.net/LOVEYSUXIN/article/details/103474247 

发布了70 篇原创文章 · 获赞 29 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/LOVEYSUXIN/article/details/103464456
今日推荐