MyBatis测试

本文介绍了MyBatis的基本使用步骤,包括配置全局配置文件、定义数据表对应类、创建SQL映射文件以及编写测试类。通过实例展示了如何在Eclipse环境中搭建MyBatis项目,连接MySQL数据库,实现数据的增删改查操作。总结了MyBatis通过XML配置或注解将数据库记录转化为Java对象的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。

 

 

MyBatis中的全局配置文件定义了mybatis运行的一些配置和属性,以及使用的映射文件;XML映射文件可以由Resource类加载;运行mybatis程序需要获取SqlSessionFactory实例,该实例可由SqlSessionFactoryBuilder的方法来获取;获取SqlSessionFactory实例后可以打开SqlSession会话,利用SqlSession会话可执行数据库操作。

 

 

使用MyBatis有以下几个基本步骤:

(1)配置全局配置文件Configure.xml,指定sql映射文件

(2)定义测试表对应的类

(3)定义sql映射文件

(4)编写测试类测试MyBatis应用

接下来按照上述基本步骤测试MyBatis,给出一个简单的测试例子,需要预先安装配置好mysql,并启动mysql服务,安装和配置可见先前的文章(JDBC连接mysql-8.0实现增删改查)。Eclipse建立一个java project,工程视图如下:

(1)配置全局配置文件Configure.xml

配置文件如下,这里指定了properties、typeAliases、environments以及sql映射配置文件。properties有些属性通过标签方式定义,也有些通过mysql.properties定义,属性值可以在environments引用。

<?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>
    <properties resource="config/mysql.properties">
       <property name="username" value="root"/>
       <property name="password" value="123456"/>
       <property name="url" value="jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC&useSSL=false&characterEncoding=UTF-8"/>
       <!-- 注意在xml中url的参数分割符需要使用&代替&,amp$还要以;分割,这是跟JDBC不一样的地方 -->
    </properties>
   
    <typeAliases>
        <typeAlias alias="Stu" type="com.test.mybatis.Stu" />
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${driver}" />
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="com/test/mapper/StuMapper.xml" />
    </mappers>
</configuration>

其中config/mysql.properties内容如下:

driver=com.mysql.cj.jdbc.Driver

(2)定义测试表对应的类,如下:

首先在mysql数据库中建立数据库test,然后在test中建一个表tbl_stu,插入两条数据,如下:

create database  test;
use test;

create table tbl_stu(
   id         int            NOT NULL ,
   name       varchar(32)             ,
   department varchar(64)             ,
   PRIMARY KEY ( id )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into tbl_stu values(1001, "kevin", "computer");
insert into tbl_stu values(1002, "angela", "account");

然后创建表对应的类Stu.java如下:

package com.test.mybatis;

public class Stu {
	private int id ;
	private String name;
	private String department;
	
	//无参构造方法
	public Stu(){
		
	}
	
	//有参构造方法
	public Stu(int id, String name, String deparment){
		this.id = id;
		this.name = name;
		this.department = deparment;
	}
	
	public void setId(int id){
		this.id = id;
	}
	
	public void setName(String name){
		this.name = name;
	}
	
	public void setDepartment(String deparment){
		this.department = deparment;
	}
	
	public int getID(){
		return this.id;
	}
	
	public String getName(){
		return this.name;
	}
	
	public String getDepartment(){
		return this.department;
	}
}

 

(3)定义sql映射文件StuMapper.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="com.test.mapper.StuMapper">
	<select id="getStuById" parameterType="int" resultType="Stu">
		select * from tbl_stu where id = #{id}
    </select>
</mapper>

注意全局配置文件中的resource必须正确指向StuMapper.xml。

(4)编写测试类测试MyBatis应用MybatisTest.java

import java.io.IOException;
import java.io.InputStream;
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 com.test.mybatis.Stu;

public class MybatisTest {

	public static void main(String[] args) {
		SqlSessionFactory sqlSessionFactory = null;
		InputStream input = null;
		SqlSession session = null;
			
		//创建sqlSessionFactory
	    try {
	    	
	    	input = Resources.getResourceAsStream("config/Configure.xml");
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(input);
			
			
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	    
	   //得到SqlSession对象,执行查询操作
	    try{
	    	session  = sqlSessionFactory.openSession();
		    Stu stu = (Stu) session.selectOne("com.test.mapper.StuMapper.getStuById", 1002);
		    if(stu != null){
		    	System.out.println("id: "+stu.getID());
		    	System.out.println("name: "+stu.getName());
		    	System.out.println("deparment: "+stu.getDepartment());
		    }
	    }finally{
	    	session.close();
	    	try {
				input.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
	    }
	    
	}

}

测试结果如下:

id: 1002
name: angela
deparment: account

总结:

MyBatis能够通过XML配置文件或者java注解将数据库中的记录,转换为JAVA对象,使得sql语句可以从java程序中剥离出来。以xml配置文件映射对象为例,映射文件定义了要执行的数据库语句,以及输入参数类型和输出参数类型(java类),在java程序中通过sqlSession可以传递参数执行数据库语句,并返回映射文件总指定的类对象,该对象中自定义解析类的方法,即能够最终得到数据库记录的数据信息。以XML映射为例,过程和原理如下:

(1)全局配置文件定义了一些数据库连接、用户、驱动属性,类别名,environment等参数,以及映射使用的XML文件;

(2)Resource类的静态getResourceAsStream方法,可以加载全局配置文件,获得一个InputStream流对象;

(3)SqlSessionFactoryBuilder的静态方法build(InputStream input)可以获取sqlFactory实例;

(4)sqlFactory实例的openSession()方法能够获取sqlSession实例,sqlSession有selectOne等操作数据库的方法,通过sqlSession可以传递参数并执行映射配置文件中指定的sql语句(通过映射文件中namespace和id确定执行的具体语句), 返回一个映射配置文件执行的对象;

(5)测试程序调用自定义实体类(映射返回的类)的方法,可以解析出数据库相应数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值