Java企业级开发学习笔记——Mybatis

bean

Clazz.java

package net.sherry.mybatis.bean;

import java.util.List;

/**
 * 功能:班级实体类
 * 作者:Sherry
 * 日期:2023年04月11日
 */
public class Clazz {
    
    
    private int id;
    private String name;
    private Teacher teacher;
    private List<Student> students;

    public int getId() {
    
    
        return id;
    }

    public void setId(int id) {
    
    
        this.id = id;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public Teacher getTeacher() {
    
    
        return teacher;
    }

    public void setTeacher(Teacher teacher) {
    
    
        this.teacher = teacher;
    }

    public List<Student> getStudents() {
    
    
        return students;
    }

    public void setStudents(List<Student> students) {
    
    
        this.students = students;
    }

    @Override
    public String toString() {
    
    
        return "Clazz{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", teacher=" + teacher.getName() +
                ", students=" + students +
                '}';
    }
}

Student.java

package net.sherry.mybatis.bean;

/**
 * 功能:学生实体类
 * 作者:sherry
 * 日期:2021年04月11日
 */
public class Student {
    
    
    private int id;
    private String name;
    private String gender;
    private int age;
    private Clazz clazz;

    public int getId() {
    
    
        return id;
    }

    public void setId(int id) {
    
    
        this.id = id;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public String getGender() {
    
    
        return gender;
    }

    public void setGender(String gender) {
    
    
        this.gender = gender;
    }

    public int getAge() {
    
    
        return age;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }

    public Clazz getClazz() {
    
    
        return clazz;
    }

    public void setClazz(Clazz clazz) {
    
    
        this.clazz = clazz;
    }

    @Override
    public String toString() {
    
    
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", gender='" + gender + '\'' +
                ", age=" + age +
                ", clazz=" + clazz.getName() +
                '}';
    }
}

Teacher.java

package net.sherry.mybatis.bean;

/**
 * 功能:教师实体类
 * 作者:Sherry
 * 日期:2023年04月11日
 */
public class Teacher {
    
    
    private int id;
    private String name;

    public int getId() {
    
    
        return id;
    }

    public void setId(int id) {
    
    
        this.id = id;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    @Override
    public String toString() {
    
    
        return "Teacher{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

User.java

package net.sherry.mybatis.bean;

/**
 * 功能:用户实体类
 * 作者:sherry
 * 日期:2023年04月11日
 */
public class User {
    
    
    private int id;
    private String name;
    private int age;
    private String address;

    public int getId() {
    
    
        return id;
    }

    public void setId(int id) {
    
    
        this.id = id;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public int getAge() {
    
    
        return age;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }

    public String getAddress() {
    
    
        return address;
    }

    public void setAddress(String address) {
    
    
        this.address = address;
    }

    @Override
    public String toString() {
    
    
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                '}';
    }
}

config

MyBatisConfig.java

package net.sherry.mybatis.config;

import org.apache.ibatis.datasource.pooled.PooledDataSource;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;

import javax.sql.DataSource;

/**
 * 功能:MyBatis配置类
 * 作者:sherry
 * 日期:2023年04月11日
 */
public class MyBatisConfig {
    
    
    // 获取MyBatis配置对象
    public static Configuration getConfiguration() {
    
    
        // 声明配置对象
        Configuration configuration = null;
        // 创建JDBC事务管理器
        TransactionFactory transactionFactory = new JdbcTransactionFactory();
        // 创建数据源
        DataSource dataSource = new PooledDataSource(
                "com.mysql.jdbc.Driver",
                "jdbc:mysql://localhost:3306/testdb?useSSL=false",
                "root",
                "111111"
        );
        // 创建数据库环境
        Environment environment = new Environment("development", transactionFactory, dataSource);
        // 基于数据库环境创建配置对象
        configuration = new Configuration(environment);
        // 返回配置对象
        return  configuration;
    }
}

mapper

ClazzMapper.java

package net.sherry.mybatis.mapper;

import net.sherry.mybatis.bean.Clazz;

import java.util.List;

/**
 * 功能:班级映射器接口
 * 作者:Sherry
 * 日期:2023年04月11日
 */
public interface ClazzMapper {
    
    
    Clazz findById(int id);
    List<Clazz> findAll();
}

StudentMapper.java

package net.sherry.mybatis.mapper;

import net.sherry.mybatis.bean.Student;

import java.util.List;
import java.util.Map;

/**
 * 功能:学生映射器接口
 * 作者:Sherry
 * 日期:2023年04月11日
 */
public interface StudentMapper {
    
    
    List<Student> findByCondition(Map<String, Object> condition);
}

UserMapper.java

package net.sherry.mybatis.mapper;

import net.sherry.mybatis.bean.User;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 功能:用户映射器接口
 * 作者:Sherry
 * 日期:2023年04月11日
 */
public interface UserMapper {
    
    
//    @Select("SELECT * FROM t_user WHERE id = #{id}")
    User findById(int id);  // 按编号查询用户记录
//    @Select("SELECT * FROM t_user")
    List<User> findAll();   // 查询全部用户记录
    List<User> findByName(String name); // 按姓名查询用户巨龙
    int insert(User user);
    int update(User user);
    int deleteById(int id);
}

resources

log4j.properties

log4j.rootLogger=WARN, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/mybatis.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <!--配置实体类别名-->
    <typeAliases>
        <typeAlias type="net.sherry.mybatis.bean.User" alias="User"/>
        <typeAlias type="net.sherry.mybatis.bean.Clazz" alias="Clazz"/>
        <typeAlias type="net.sherry.mybatis.bean.Teacher" alias="Teacher"/>
        <typeAlias type="net.sherry.mybatis.bean.Student" alias="Student"/>
    </typeAliases>

    <!--配置数据库环境-->
    <environments default="development">
        <environment id="development">
            <!--配置事务管理器-->
            <transactionManager type="JDBC"/>
            <!--配置数据源-->
            <dataSource type="POOLED"> <!--数据库连接池-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/testdb?useSSL=false&amp;useUnicode=true&amp;characterEncoding=utf8"/>
                <property name="username" value="root"/>
                <property name="password" value="111111"/> <!--改成自己的密码-->
            </dataSource>
        </environment>
    </environments>

    <!--配置实体关系映射器文件-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
        <mapper resource="mapper/ClazzMapper.xml"/>
        <mapper resource="mapper/StudentMapper.xml"/>
    </mappers>
</configuration>

resources.mapper

ClazzMapper.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="net.sherry.mybatis.mapper.ClazzMapper">
    <!--三表关联查询-->
    <select id="findById" parameterType="int" resultMap="clazzResultMap">
        SELECT * FROM t_teacher
            INNER JOIN t_class ON t_class.teacher_id = t_teacher.t_id
            INNER JOIN t_student ON t_class.c_id = t_student.class_id
            WHERE c_id = #{id};
    </select>

    <!--定义班级结果映射-->
    <resultMap id="clazzResultMap" type="Clazz">
        <result property="id" column="c_id"/>
        <result property="name" column="c_name"/>
        <!--一对一-->
        <association property="teacher" column="teacher_id" javaType="Teacher">
            <result property="id" column="t_id"/>
            <result property="name" column="t_name"/>
        </association>
        <!--一对多-->
        <collection property="students" ofType="Student">
            <result property="id" column="s_id"/>
            <result property="name" column="s_name"/>
            <result property="gender" column="s_gender"/>
            <result property="age" column="s_age"/>
            <association property="clazz" column="class_id" javaType="Clazz">
                <result property="name" column="c_name"/>
            </association>
        </collection>
    </resultMap>

    <!--###########################################################-->

    <!--通过嵌套查询实现一对一关联-->
    <select id="findAll" resultMap="clazzResultMap2">
        SELECT * FROM t_class;
    </select>

    <!--定义班级结果映射-->
    <resultMap id="clazzResultMap2" type="Clazz">
        <result property="id" column="c_id"/>
        <result property="name" column="c_name"/>
        <association property="teacher" column="teacher_id" javaType="Teacher" select="getTeacher"/>
    </resultMap>

    <select id="getTeacher" resultType="Teacher">
        SELECT t_id id, t_name name FROM t_teacher WHERE t_id = #{id};
    </select>
</mapper>

StudentMapper.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="net.sherry.mybatis.mapper.StudentMapper">
    <select id="findByCondition" parameterType="java.util.Map" resultMap="studentResultMap">
        SELECT * FROM t_student
        <trim prefix="WHERE" prefixOverrides="AND|OR">
            <if test="name != null">
                s_name Like CONCAT(#{name},'%')
            </if>
            <if test="gender != null">
                AND s_gender = #{gender}
            </if>
            <if test="age != null">
                AND s_age = #{age}
            </if>
        </trim>
    </select>

    <resultMap id="studentResultMap" type="Student">
        <result column="s_id" property="id"/>
        <result column="s_name" property="name"/>
        <result column="s_gender" property="gender"/>
        <result column="s_age" property="age"/>
        <association property="clazz" column="class_id" javaType="Clazz" select="getClazz"/>
    </resultMap>

    <select id="getClazz" resultType="Clazz">
        SELECT c_id id, c_name name FROM t_class WHERE c_id = #{id};
    </select>
</mapper>

UserMapper.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="net.sherry.mybatis.mapper.UserMapper">
<!--    结果映射:用户映射-->
    <resultMap id="userMap" type="User">
        <result column="id" jdbcType="INTEGER" property="id" javaType="int"/>
        <result column="name" jdbcType="VARCHAR" property="name" javaType="String"/>
        <result column="age" jdbcType="INTEGER" property="age" javaType="int"/>
        <result column="address" jdbcType="VARCHAR" property="address" javaType="String"/>
    </resultMap>
    <!--按编号查询用户记录-->
    <select id="findById" parameterType="int" resultType="User">
        SELECT * FROM t_user WHERE id = #{id};
    </select>
    
<!--    按照姓名查询-->
    <select id="findByName" resultType="User">
        select * from t_user where name like concat(#{name}, "%");
    </select>

    <!--查询全部用户记录-->
    <select id="findAll" resultMap="userMap">
        SELECT * FROM t_user;
    </select>

    <insert id="insert" parameterType="User"
            useGeneratedKeys="true" keyProperty="id">
        INSERT INTO t_user(name, age, address)
        VALUES(#{name}, #{age}, #{address})
    </insert>

    <update id="update" parameterType="User">
        UPDATE t_user SET name = #{name}, age = #{age},
                          address = #{address} WHERE id = #{id};
    </update>

    <delete id="deleteById" parameterType="int">
        DELETE FROM t_user WHERE id = #{id};
    </delete>


</mapper>

test.java.net.sherry.mybatis.bean

TestUserOperation.java

package net.sherry.mybatis.bean;

import net.sherry.mybatis.bean.User;
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.After;
import org.junit.Before;
import org.junit.Test;

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

/**
 * 功能:测试用户操作
 * 作者:sherry
 * 日期:2023年04月11日
 */
public class TestUserOperation {
    
    

    private SqlSession sqlSession; // SQL会话

    @Before
    public void init() {
    
    
        try {
    
    
            // 读取MyBatis配置文件
            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            // 基于MyBatis配置文件构建SQL会话工厂
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
            // 利用SQL会话工厂获取SQL会话
            sqlSession = factory.openSession();
            // 提示用户SQL会话创建成功
            System.out.println("SQL会话创建成功~");
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
    }

    @Test // 测试按编号查询用户记录
    public void testFindById() {
    
    
        int id = 1;
        // 利用SQL会话执行SQL语句进行查询,返回查询结果
        User user = sqlSession.selectOne("net.sherry.mybatis.mapper.UserMapper.findById", id);
        // 判断查询是否成功
        if (user != null) {
    
    
            System.out.println(user);
        } else {
    
    
            System.out.println("编号为[" + id + "]的用户未找到~");
        }
    }

    @Test // 测试查询全部用户记录
    public void testFindAll() {
    
    
        // 利用SQL会话执行SQL语句进行查询,返回查询结果
        List<User> users = sqlSession.selectList("net.sherry.mybatis.mapper.UserMapper.findAll");
        // 输出全部用户信息(采用了列表的遍历算子与Lambda表达式)
        users.forEach(user -> System.out.println(user));
    }

    @After
    public void destroy() {
    
    
        // 关闭SQL会话
        sqlSession.close();
        // 提示用户SQL会话关闭
        System.out.println("SQL会话已经关闭~");
    }
}

test.java.net.sherry.mybatis.mapper

TestClazzMapper.java

package net.sherry.mybatis.mapper;

import net.sherry.mybatis.bean.Clazz;
import net.sherry.mybatis.bean.Student;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.jdbc.Null;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

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

/**
 * 功能:测试班级映射器接口
 * 作者:sherry
 * 日期:2023年04月11日
 */
public class TestClazzMapper {
    
    

    private SqlSession sqlSession; // SQL会话
    private ClazzMapper clazzMapper; // 班级映射器

    @Before
    public void init() {
    
    
        try {
    
    
            // 读取MyBatis配置文件作为字符输入流
            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            // 基于MyBatis配置文件构建SQL会话工厂
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
            // 利用SQL会话工厂获取SQL会话
            sqlSession = factory.openSession();
            // 利用SQL会话获取班级映射器对象
            clazzMapper = sqlSession.getMapper(ClazzMapper.class);
            System.out.println("SQL回话创建成功~");
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
    }

    @Test
    public void testFindById() {
    
    
        int id = 1;
        Clazz clazz = clazzMapper.findById(id);
        if (clazz != null) {
    
    
            System.out.println(clazz);
            System.out.println("班级编号[" + id + "]的学生:");
            List<Student> students = clazz.getStudents();
            students.forEach(student -> System.out.println(student));
        }else {
    
    
            System.out.println("班级编号[" + id + "]的班级不存在~");
        }
    }

    @Test
    public void testFindAll() {
    
    
        List<Clazz> clazzes = clazzMapper.findAll();
        clazzes.forEach(clazz -> System.out.println(clazz));
    }

    @After
    public void destroy() {
    
    
        // 关闭SQL会话
        sqlSession.close();
        System.out.println("SQL会话关闭~");
    }
}

TestStudentMapper.java

package net.sherry.mybatis.mapper;

import net.sherry.mybatis.bean.Student;
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.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.Reader;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;

/**
 * 功能:测试学生映射器接口
 * 作者:sherry
 * 日期:2023年04月11日
 */
public class TestStudentMapper {
    
    

    private SqlSession sqlSession; // SQL会话
    private StudentMapper studentMapper; // 学生映射器

    @Before
    public void init() {
    
    
        try {
    
    
            // 读取MyBatis配置文件作为字符输入流
            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            // 基于MyBatis配置文件构建SQL会话工厂
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
            // 利用SQL会话工厂获取SQL会话
            sqlSession = factory.openSession();
            // 利用SQL会话获取学生映射器对象
            studentMapper = sqlSession.getMapper(StudentMapper.class);
            System.out.println("创建SQL成功~");
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
    }
    @Test
    public void testFindByCondition(){
    
    
        HashMap<String, Object> condition = new HashMap<String, Object>();
        condition.put("gender", "女");
        condition.put("age", 19);
        condition.put("name", "吴");
        List<Student> students = studentMapper.findByCondition(condition);
        if (students.size() > 0){
    
    
            students.forEach(student -> System.out.println(student));
        }else {
    
    
            System.out.println("没有找到~");
        }
    }

    @After
    public void destroy() {
    
    
        // 关闭SQL会话
        sqlSession.close();
        System.out.println("已关闭SQL会话~");
    }
}

TestuserMapper.java

package net.sherry.mybatis.mapper;

import net.sherry.mybatis.bean.User;
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.After;
import org.junit.Before;
import org.junit.Test;

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

/**
 * 功能:测试用户映射器接口
 * 作者:sherry
 * 日期:2023年04月11日
 */
public class TestUserMapper {
    
    

    private SqlSession sqlSession; // SQL会话
    private UserMapper userMapper; // 用户映射器

    @Before
    public void init() {
    
    
        try {
    
    
            // 读取MyBatis配置文件
            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            // 基于MyBatis配置文件构建SQL会话工厂
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
            // 利用SQL会话工厂获取SQL会话
            sqlSession = factory.openSession();
            // 利用SQL会话获取用户映射器对象
            userMapper = sqlSession.getMapper(UserMapper.class);
            // 提示用户SQL会话创建成功
            System.out.println("SQL会话创建成功~");
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
    }

    @Test // 测试按编号查询用户记录
    public void testFindById() {
    
    
        int id = 1;
        // 调用用户映射器的查询方法
        User user = userMapper.findById(id);
        // 判断查询是否成功
        if (user != null) {
    
    
            System.out.println(user);
        } else {
    
    
            System.out.println("编号为[" + id + "]的用户未找到~");
        }
    }

    @Test
    public void testFindByName(){
    
    
        String name = String.valueOf('王');
        // 调用用户映射器的查询方法
        List<User> users = userMapper.findByName(name);
        users.forEach(user -> System.out.println(user));
    }
    @Test // 测试查询全部用户记录
    public void testFindAll() {
    
    
        // 调用用户映射器的查询方法
        List<User> users = userMapper.findAll();
        // 输出全部用户信息(采用了列表的遍历算子与Lambda表达式)
        users.forEach(user -> System.out.println(user));
    }

    @After
    public void destroy() {
    
    
        // 关闭SQL会话
        sqlSession.close();
        // 提示用户SQL会话关闭
        System.out.println("SQL会话已经关闭~");
    }

    @Test
    public void testInsert(){
    
    
        User user = new User();
        user.setName("王雨涵");
        user.setAge(30);
        user.setAddress("古蔺县郎酒厂");
        int count = userMapper.insert(user);
        sqlSession.commit();
        if (count > 0){
    
    
            System.out.println("纪录插入成功!");
            System.out.println("插入新的纪录:" +user);
        }else {
    
    
            System.out.println("纪录插入失败!");
        }
    }

    @Test
    public void testUpdate(){
    
    
        User user = userMapper.findById(4);
        System.out.println("更新前的纪录: " + userMapper.findById(4));
        user.setName("萌萌哒");
        user.setAge(30);
        user.setAddress("北京朝阳区北苑路6号楼");
        userMapper.update(user);
        sqlSession.commit();
        System.out.println("更新成功!");
        System.out.println("更新后的记录:"+ userMapper.findById(4));
    }

    @Test
    public void testDeleteById(){
    
    
        int id = 4;
        User user = userMapper.findById(id);
        System.out.println("待删除的记录:" + user);
        userMapper.deleteById(id);
        sqlSession.commit();
        System.out.println("编号为[" + id + "]的记录删除成功!");
        user = userMapper.findById(id);
        if (user != null){
    
    
            System.out.println(user);
        }else {
    
    
            System.out.println("编号为[" + id + "] 的用户未找到");
        }
    }
}

TestUserMapperNew.java

package net.sherry.mybatis.mapper;

import net.sherry.mybatis.bean.User;
import net.sherry.mybatis.config.MyBatisConfig;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.util.List;

/**
 * 功能:测试用户映射器接口
 * 作者:sherry
 * 日期:2023年04月11日
 */
public class TestUserMapperNew {
    
    

    private SqlSession sqlSession; // SQL会话
    private UserMapper userMapper; // 用户映射器

    @Before
    public void init() {
    
    
        // 获取MyBatis配置对象
        Configuration configuration = MyBatisConfig.getConfiguration();
        // 添加用户映射器接口
        configuration.addMapper(UserMapper.class);
        // 基于配置对象构建SQL会话工厂
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(configuration);
        // 利用SQL会话工厂获取SQL会话
        sqlSession = factory.openSession();
        // 利用SQL会话获取用户映射器对象
        userMapper = sqlSession.getMapper(UserMapper.class);
        // 提示用户SQL会话创建成功
        System.out.println("SQL会话创建成功~");

    }

    @Test // 测试按编号查询用户记录
    public void testFindById() {
    
    
        int id = 1;
        // 调用用户映射器的查询方法
        User user = userMapper.findById(id);
        // 判断查询是否成功
        if (user != null) {
    
    
            System.out.println(user);
        } else {
    
    
            System.out.println("编号为[" + id + "]的用户未找到~");
        }
    }

    @Test // 测试查询全部用户记录
    public void testFindAll() {
    
    
        // 调用用户映射器的查询方法
        List<User> users = userMapper.findAll();
        // 输出全部用户信息(采用了列表的遍历算子与Lambda表达式)
        users.forEach(user -> System.out.println(user));
    }

    @After
    public void destroy() {
    
    
        // 关闭SQL会话
        sqlSession.close();
        // 提示用户SQL会话关闭
        System.out.println("SQL会话已经关闭~");
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_53547097/article/details/130229855