欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mybatis入门配置

程序员文章站 2022-06-13 15:32:17
...

在学配置Mybatis前,先学习一种有着main函数功能的框架—单元测试框架JUnit。

1、什么是JUnit

JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。JUnit主要运用于程序员测试。

2、怎么使用JUnit

(1) 首先,需要导入两个jar包,使用Eclipse的伙伴这个时候可以松一口气了,因为在Eclipse里面我们可以在项目里面直接“Build Path”获取这两个jar包。(但是这样导入有个缺点,并没有加载到服务器里面,如果要想加载到服务器里面,还是老老实实把jar包导入lib里面)。见下图1、2、3
Mybatis入门配置 图1 在“Build Path”构建

Mybatis入门配置图2 在Java Build Path里面Add Library

Mybatis入门配置图3 配置成功

(2) 来看看是要导入哪两个jar包,见下图4
Mybatis入门配置
图4 要导的两个Jar包

(3) 新建一个包,在包里新建一个JunitTest类用于测试。代码如下

package com.ydj.test;
import org.junit.Test;
/**
 * 测试---Junit
 * @author Carlos
 *
 */
public class JunitTest {
	/**
	 * 不写main方法实现打印
	 */
	@Test      //这个语句必须写,不然执行不了
	public void test(){
		System.out.println("---这是一个没有main方法的测试---");
	}
}

(4) 结果见下图5
Mybatis入门配置图5 测试结果

以上就是我们基本需要掌握的JUnit的知识,有了上面的知识,就继续配置我们的Mybatis。

------------------------------------------------------------------------------华丽的分割线----------------------------------------------------------------------------------
前面说了那么多,都是开胃菜,真正的重头戏在下面!!

引言:Mybatis是一个持久化【数据操作】的框架,封装了jdbc的框架。mybatis只需要开发者关注sql语句,至于其他的数据库连接、执行sql语句、封装结果操作全部由mybaits完成。

1、前期工作

(1) 需要导入的Jar包,见下图6
Mybatis入门配置
图6 使用Mybatis需要的Jar包

除了上图标红的jar包,其他jar包是第三方jar包,根据自己需求自行导入。

(2) 创建项目(大家看我的项目结构,就会很清楚了),见下图7
Mybatis入门配置
图7 项目结构

2、我会根据上图的项目结构,按照Mybatis配置顺序一步一步和大家解释

(1) 创建一个项目MyBatisWeb01

     导入相应Jar包和JUnit框架

(2) 在数据库(mybatisweb01)里面建表(t_user),见下图8
Mybatis入门配置 图8 创建数据库表

(3) 在src下面创建三个包和一个mybatis的配置文件

1)com.ydj.model包

这个包唯一功能就是创建实体类—User,代码如下:

package com.ydj.model;

public class User {
	private int uId;		//用户ID
	private String uName;	//用户名
	private String uPwd;	//密码
	//无参构造方法
	public User() {}
	//有参构造
	public User(String uName, String uPwd){
		this.uName = uName;
		this.uPwd = uPwd;
	}
	//有参构造
	public User(int uId, String uName, String uPwd) {
		this.uId = uId;
		this.uName = uName;
		this.uPwd = uPwd;
	}
	//get、set方法
	public int getuId() {
		return uId;
	}
	public void setuId(int uId) {
		this.uId = uId;
	}

	public String getuName() {
		return uName;
	}
	public void setuName(String uName) {
		this.uName = uName;
	}

	public String getuPwd() {
		return uPwd;
	}
	public void setuPwd(String uPwd) {
		this.uPwd = uPwd;
	}

	//重写toString方法
	@Override
	public String toString() {
		return "User [uId=" + uId + ", uName=" + uName + ", uPwd=" + uPwd + "]";
	}
}

2)com.ydj.dao包

这个包有两个功能,一个是创建dao层接口,一个是创建对应的.xml配置文件

dao层接口代码:

package com.ydj.dao;

import java.sql.SQLException;
import java.util.ArrayList;
import com.ydj.model.User;

public interface UserDao {

	//1.插入数据
	public void save(User user) throws SQLException;

}

UserDao.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">

<!-- 包名 + .xml文件名 -->
<mapper namespace="com.ydj.dao.UserDao">
	<!-- 插入数据  save对应dao层接口里面的方法名 -->
	<insert id="save">
		INSERT INTO t_user(user_name,user_pwd) VALUES(#{uName},#{uPwd})
	</insert>

3)mybatis.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>
		<package name="com.ydj.model"/>
	</typeAliases>
	
	<!-- environments下面可以有多个environment,每次只能执行一个。当然,要想执行多个数据库,需要在创建sqlSeesion时做出来 -->
	<!-- 执行哪一个,就要看environments的default 和 environment的id,当default与id的值相同时,就执行id对应的environment-->
	<!-- default和id里面的名字可以自己随便取,一般还是能够字如其意-->
	<environments default="mysql">
		<environment id="mysql">
 			<transactionManager type="JDBC"/>
 			<dataSource type="POOLED">
 				<!-- property里面的name值千万不要改动,vaule的值根据自己的驱动和数据库填入 -->
			 	<property name="driver" value="com.mysql.jdbc.Driver"/>
 				<property name="url" value="jdbc:mysql://localhost:3306/mybatisweb01"/>
 				<property name="username" value="root"/>
 				<property name="password" value="x5"/>
 			</dataSource>
 		</environment>
 	</environments>
 	<!-- 这是mybatis.xml配置文件和每个dao层的.xml配置文件联系的地方      就是可以映射 -->
 	<mappers>
 		<!-- 第一种写法:包名+配置文件名字  每个dao接口都需要写一个 -->
 		<!-- <mapper resource="com/ydj/dao/UserDao.xml"/> -->
 		<!-- 第二种写法:只要写一次,它里面的映射文件根据实际映射而映射,比较灵活 -->
 		<package name="com.ydj.dao"/>
 	</mappers>
</configuration>

4)com.ydj.test包

这个包只是测试mybatis是否配置成功,能否数据持久化

package com.ydj.test;

import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;

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 com.ydj.dao.UserDao;
import com.ydj.model.User;

public class InsertUserTest {

	@Test
	public void insertUser() throws IOException, SQLException{
		//1.加载配置文件并构建SqlSessionFactory对象
		InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
		//2.从SqlSessionFactory对象中获取SqlSession对象---true表示事务自动提交,false表示事务需要手动提交
		SqlSession session = factory.openSession(true);
		//3.根据dao接口对象通过动态代理创建dao接口的实现类对象
		UserDao dao = session.getMapper(UserDao.class);
		//4.执行插入数据操作
		dao.save(new User("ydj", "123456"));
		//5.关闭资源
		session.close();
	}	
}

3、结果

  检查数据库表是否插入成功

Mybatis入门配置
图9 数据库表成功插入

总结:配置Mybatis其实还是比较容易,只要一步一步配置,就算出了错误,再去百度,就能很快配置成功。第一步:需要知道导入哪些jar包;第二步:可以使用JUnit也可以直接使用main函数测试;第三步:创建项目;第四步:配置相应的配置文件。

后面我还会写一写Mybatis的增删查改文章,嘻嘻~