mybatis的使用(基础增删查改)

1.mapper接口(配置如下):

mapper接口中写抽象方法:

package com.atguigu.mybatis.mapper;

import com.atguigu.mybatis.pojo.User;

import java.util.List;

public interface UserMapper {
     int insertUser();
     int updateUser();
     int deleteUser();
     User getUserById();
     List<User> getAllUsers();

}

2.映射文件(配置如下):

映射文件主要用来配置进行操作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.atguigu.mybatis.mapper.UserMapper">
    <!--
    1.mapper接口的全类名要和映射文件的namespace保持一致
    2.mapper接口中的方法名要和映射文件的sql的id保持一致
    -->

    <!--int insertUser()
    id:与mapper中的方法同名
    -->
    <insert id="insertUser">
        insert into t_user values(null,'admin','123456',23,'男','12345@qq.com')
    </insert>
    <!--
    id:与mapper中的方法同名
        resultType:设置结果类型,即查询的数据要转换为的类型
        resultMap:自定义映射,处理一对一或一对多的映射关系-->
    <select id="getUserById" resultType="com.atguigu.mybatis.pojo.User">
        select * from t_user where id = 2
    </select>

    <update id="updateUser">
        update t_user set username='ybc',password='123' where id = 2
    </update>
    <delete id="deleteUser">
        delete from t_user where id = 3
    </delete>

    <select id="getAllUsers" resultType="user">
        select * from t_user
    </select>
</mapper>

特别注意: 1.映射文件的全类名和mapper接口的全类名保持一致 2.mapper接口中的方法名要和映射文件的sql的id保持一致 3.查询的标签select必须设置属性resultType或resultMap,用于设置实体类和数据库表的映射关系 resultType:自动映射,用于属性名和表中字段名一致的情况 resultMap:自定义映射,用于一对多或多对一或字段名和属性名不一致的情况

3.测试insert功能:

 @Test//insert
    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();
        //获取sql的会话对象SqlSession(会自动提交事务),是mybatis提供的操作数据库的对象
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        //获取UserMapper的代理实现对象(代理模式)
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        //调用mapper接口中的个方法,实现添加用户信息的功能
        int result = mapper.insertUser();
        System.out.println("结果"+result);
        //提交事务
        //sqlSession.commit();
        //关闭会话
        sqlSession.close();
    }

为了简化步骤,将sqlsessionz封装为sqlsessionUtils

public class SqlSessionUtils {
    public static SqlSession getSqlSession() throws IOException {
        //获取核心配置文件的输入流
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        //获取SqlSessionFactoryBulider
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        //获取SqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
        //获取SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        return sqlSession;
    }
}

4.封装后进行功能测试:

update:

 @Test//Update
    public void testUpdate() throws IOException {
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.updateUser();
        sqlSession.close();
    }

delete:

@Test//Delete
    public void testDelete() throws IOException {
            SqlSession sqlSession = SqlSessionUtils.getSqlSession();
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            mapper.deleteUser();
            sqlSession.close();
    }

select by id:

@Test//select
    public void testSelect() throws IOException {
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.getUserById();
        System.out.println(user);
        sqlSession.close();
    }

select allUser(list集合):

@Test//select allUser
    public void getAllUser() throws IOException {
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> users = mapper.getAllUsers();
        users.forEach(System.out::println);
        sqlSession.close();
    }

总结:

使用mybatis进行简单的数据库操作:首先需要通过核心配置文件(mybatis-config进行数据库的连接),然后编写一个实体类对应数据库中的属性,接着配置mapper接口和其对应的映射文件(mapper接口中设置需要进行的操作抽象方法,映射文件中编写不同方法对应的sql语句),最后在测试类中通过SqlSession会话进行基础操作


本文章使用limfx的vscode插件快速发布