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版权协议,转载请附上原文出处链接和本声明。