Mybatis框架实现MySQL数据库的连接(一)

Mybatis是一款支持动态SQL语句的持久层框架,可以将SQL语句写在XML文件中,使得SQL语句和Java语句分离开来:

dao层实现类—(获取)—主配置文件信息——局部配置文件,即dao层实现类实现局部配置文件中对数据库的操作

1.导入相应jar包(Leree的MySQL是8.0的,如果是5.0版本将第二个依赖包换成mysql-connector-java-5.1.1.jar就ok了)

在已建的java项目里新建文件夹lib,将jar包复制到该文件夹,右键Build Path—Add to Build Path导入

2.配置Mybatis标签提示模板(方便对Mybatis配置文件进行编程)

Window—Preferences—XML—XML Catalog,添加两个Mybatis模板配置地址,URL地址如下:
http://mybatis.org/dtd/mybatis-3-config.dtd
http://mybatis.org/dtd/mybatis-3-mapper.dtd

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>
	<!-- 配置数据库连接环境:driver、url、username、password -->
	<environments default="mysql">
		<!-- 开始配置mysql -->
		<environment id="mysql">
			<!--配置事务  -->
			<transactionManager type="JDBC"></transactionManager>
			<!-- 配置数据源 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
 				<property name="url" value="jdbc:mysql://localhost:3307/myschool?serverTimezone=GMT%2B8"/>
				<property name="username" value="root"/>
				<property name="password" value="1234"/>
			</dataSource>
		</environment>
		
	</environments>
	
	<!-- 关联SQL映射配置文件 ,指定SQL映射文件名及路径,即局部配置文件Mapper.xml-->
	<mappers>
		<mapper resource="dao/impl/StudentDaoMapper.xml"/>
	</mappers>
	
</configuration>

局部配置文件Mapper.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">

<!-- namespace为dao层实现类的具体路径,表示这个类要使用相应的SQL语句 -->
<mapper namespace="dao.impl.StudentDaoImpl">
	<select id="getAllStudent" resultType="entity.Student">
		select * from students
	</select>
</mapper>

4.编写实体类

实体类的成员变量要和所访问的数据库表的属性相同,类里包含参数构造函数和toString()方法

package entity;

public class Student {
	private Long s_id;
	private String s_name;

	public Student(Long s_id, String s_name) {
		super();
		this.s_id = s_id;
		this.s_name = s_name;
	}
	    
	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Long getId() {
	    return s_id;
	}

	public void setId(Long s_id) {
	    this.s_id = s_id;
	}

    public String getName() {
	    return s_name;
	}

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

	@Override
	public String toString() {
        return "Student [s_id=" + s_id + ", s_name=" + s_name + "]";
    }
}

5.编写dao层实现类

用于实现对数据库中表的操作,这里是对myschool数据库中的student表进行查询,其中会话工厂SqlSessionFactory可以获取配置文件的信息,从而创建一种与数据库交互的会话实例类SqlSession。

package dao.impl;

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

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import entity.Student;

import org.apache.ibatis.io.Resources;

public class StudentDaoImpl {
	@Test
	public void getAllStudent() throws IOException {
		SqlSessionFactoryBuilder sfb = new SqlSessionFactoryBuilder();
		InputStream ins = Resources.getResourceAsStream("mybatis.xml");
		SqlSessionFactory ssf = sfb.build(ins);
		SqlSession session = ssf.openSession();
		
		List<Student> studentList = session.selectList("dao.impl.StudentDaoImpl.getAllStudent");
		
		for (Student student : studentList) {
			System.out.println(student);
		}
	}
}

这里只对student表进行了查询操作,如果操作较多时,可以在dao层中编写接口类,用以存放所有操作,并在dao层实现类中重写。
本次代码是通过导入JUnit5来进行测试,测试结果如下:


版权声明:本文为weixin_44299693原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。