ssm学习笔记23001-spring+mybatis修改删除和查询

spring+mybatis 修改删除和查询

1、在UserMapper接口类中,创建接口

在UserMapper接口类中,创建接口

package com.wjw.mybatis.mapper;

import com.wjw.mybatis.pojo.User;

import java.util.List;

/**
 * @Author wjwdive
 * @Date 2023/2/19 22:54
 * @Description:
 */
public interface UserMapper {
    /**
     * 添加用户信息
     * @return
     */
    int insertUser();

    /**
     * 修改用户系信息
     */
    void updateUser();

    /**
     * 删除用户
     */
    void deleteUser();

    /**
     * 根据id查询用户信息
     * @return
     */
    User getUserById();

    /**
     * 获取所欲用户信息
     * @return
     */
    List<User> getAllUsers();
}

2、对应的要在mybatis-config.xml配置文件 中配置接口对应的SQL查询语句

<?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="com.wjw.mybatis.mapper.UserMapper">
<!--
    mypper接口和映射文件要保持两个一致:
    1、mapper接口的全类名和映射文件的namespace一致
    2、mapper接口中的方法名要和映射文件中的sql的id一致
-->
<!--    int insertUser(); -->
    <insert id="insertUser">
        insert into t_user values(null,'admin','123456',23,'男','12345@qq.com')
    </insert>

<!--    void updateUser();-->
    <update id="updateUser">
        update  t_user set username = 'Karvis', password = "0000" where  id="0000000001"
    </update>

<!--    void deleteUser();-->
    <delete id="deleteUser">
        delete from t_user where id = 0000000002
    </delete>

<!--    User getUserById();
    resultType:设置结果类型,即查询的数据要转换为的java类型 字段名和属性名一致就用这个 不是User,而是唯一标识
    resultMap:自定义映射,处理多对一或一对多的映射关系  字段名和属性名需要映射,就用这个
-->
    <select id="getUserById" resultType="com.wjw.mybatis.pojo.User">
        select * from t_user where id = 0000000003
    </select>

    <!--    List<User> getAllUsers();
        resultType 还是pojo类的唯一标识

    -->
    <select id="getAllUsers" resultType="com.wjw.mybatis.pojo.User">
        select * from t_user
    </select>
</mapper>

3、在测试类中写对应的测试方法

package com.wjw.mybatis.test;

import com.wjw.mybatis.mapper.UserMapper;
import com.wjw.mybatis.pojo.User;
import com.wjw.mybatis.utils.SqlSessionUtil;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

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

/**
 * @Author wjwdive
 * @Date 2023/2/19 23:32
 * @Description:
 */
public class MyBatisTest {
    @Test
    public void testInsert() throws IOException {
        //获取核心配置文件的输入流
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        //获取SqlSessionFactoryBuilder对象
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        //获取sqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
        //获取sql的会话对象SqlSession,是mybatis提供的操作数据库对象的方法
        SqlSession sqlSession = sqlSessionFactory.openSession(true);//自动提交事务,需设置参数 为true
        //获取UserMapper的代理实现类对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        //调用 mapper接口中的方法,实现添加用户信息的功能
        int result = mapper.insertUser();
        //提交事务【不提交事务,会自动回滚执行的脚本】
        sqlSession.commit();
        System.out.println("结果:"+result);

        //关闭连接
        sqlSession.close();
    }

    @Test
    public void update() {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.updateUser();
        sqlSession.close();
    }


    @Test
    public void testDelete() {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.deleteUser();
        sqlSession.close();
    }

    @Test
    public void testGetUserById() {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.getUserById();
        System.out.println("user: "+user);
        sqlSession.close();
    }

    @Test
    public void testGetAllUsers() {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> list = mapper.getAllUsers();
        list.forEach(System.out::println);
        sqlSession.close();
    }
}

其中,SqlSessionUtil 是抽取的一个获取sqlSession对象的一个工具类方法
放在了 com.wjw.mybatis.utils包下,

package com.wjw.mybatis.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

/**
 * @Author wjwdive
 * @Date 2023/2/22 20:01
 * @Description:
 */
public class SqlSessionUtil {
    public static SqlSession getSqlSession() {
        SqlSession sqlSession = null;
        try {
            //获取核心配置文件的输入流
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            //获取SqlSessionFactoryBuilder
            SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
            //获取SqlSessionFactory
            SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
            //获取SqlSession对象
            sqlSession =  sqlSessionFactory.openSession(true);

        } catch (IOException e) {
            e.printStackTrace();
        }
        return sqlSession;
    }
}
posted @ 2023-02-22 21:49  wjwdive  阅读(27)  评论(0编辑  收藏  举报