JavaEE MyBatis入门案例

描述

使用 MyBatis 框架访问数据库,查询数据库中数据。

题目

使用 MyBatis 框架访问数据库,查询学生表中的记录。

题目解决思路

  1. 执行 SQL 语句,创建学生表。
  2. 在 IDEA 中搭建 MyBatis 的开发环境。
  3. 导入所需 Jar 包到项目中,并导入 log4j.properties 日志配置文件。
  4. 编写 MyBatis 核心配置文件。
  5. 编写实体类(Student)、持久层接口(StudentMapper)、以及接口映射文件(StudentMapper.xml)。

相关 Jar 包及源码

百度云网盘:

链接:https://pan.baidu.com/s/1G9jV_JxIGJDcJO8vVHRw_Q 提取码:51g6

项目结构

01_JavaEE MyBatis.png

具体实现

数据库代码:

DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(10) DEFAULT NULL, `sex` tinyint(1) DEFAULT '1', `birthday` date DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; INSERT INTO `student`(`id`,`name`,`sex`,`birthday`) VALUES (1,'张三',1,'1997-10-14'),(2,'李四',1,'1998-10-10');

运行 SQL 语句,表中数据如下:

02_JavaEE MyBatis.png

持久层接口 (StudentMapper):

package net.haicoder.dao; import net.haicoder.entity.Student; import java.util.List; public interface StudentMapper { List<Student> findAllStus(); }

持久层映射文件 (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.haicoder.dao.StudentMapper"> <select id="findAllStus" resultType="net.haicoder.entity.Student"> select * from `student` </select> </mapper>

持久层接口与映射文件关系如下图:

03_JavaEE MyBatis.png

MyBatis 核心配置文件:

<?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> <settings> <!--在控制台显示SQL语句--> <setting name="logImpl" value="STDOUT_LOGGING"/> </settings> <!--定义实体类别名--> <typeAliases> <package name="net.haicoder.entity"/> </typeAliases> <environments default="default"> <!--环境变量--> <environment id="default"> <!--事务管理器--> <transactionManager type="JDBC"/> <!--数据源--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/haicoder_mybatis"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!--加载其它映射文件--> <mappers> <package name="net.haicoder.dao"/> </mappers> </configuration>

log4j 配置文件:

### 设置Logger输出级别和输出目的地 ### log4j.rootLogger=debug, stdout ### 把日志信息输出到控制台 ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout

实体类:

package net.haicoder.entity; import java.sql.Date; public class Student { private int id; private String name; private Double sex; private Date birthday; public Student() { } public Student(int id, String name, Double sex, Date birthday) { this.id = id; this.name = name; this.sex = sex; this.birthday = birthday; } 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 Double getSex() { return sex; } public void setSex(Double sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Override public String toString() { return "Student{" + "id=" + id + ", name='" + name + '\'' + ", sex=" + sex + ", birthday=" + birthday + '}'; } }

测试类:

public class TestStudent { @Test public void findAllStu() throws IOException { // 获取核心配置文件 InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml"); // 创建工厂建造类 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); // 创建工厂类 SqlSessionFactory factory = builder.build(inputStream); // 创建会话 SqlSession session = factory.openSession(); // 获取接口对象 StudentMapper mapper = session.getMapper(StudentMapper.class); // 查询所有学生信息 List<Student> allStus = mapper.findAllStus(); // 打印结果 allStus.forEach(System.out::println); // 释放资源,关闭会话即可 session.close(); } }

运行结果,如下图:

04_JavaEE MyBatis.png

总结

使用 MyBatis 框架访问数据库,查询学生表中的记录。(注意:本案例需要提前创建数据库 haicoder_jdbc)。