文章目录:
5.编写StudentDao.xml文件(mapper映射文件)
1.准备数据表(Navicat)
2.通过Maven创建项目(IDEA)
那么用Maven搭建的MyBatis大框架就是上图的样式。
下面对项目进行一些特定的配置设置:👇👇👇
3.在pom.xml文件中加入相关的Maven依赖坐标
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--当前项目坐标-->
<groupId>com.bjpowernode</groupId>
<artifactId>ch01-first</artifactId>
<version>1.0</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>14</maven.compiler.source>
<maven.compiler.target>14</maven.compiler.target>
</properties>
<!--依赖列表-->
<dependencies>
<!--MyBatis依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.9</version>
</dependency>
<!--单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<!--资源插件:处理src/main/java目录中的xml-->
<resources>
<resource>
<directory>src/main/java</directory><!--所在的目录-->
<includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>
这里给出修改后的xml文件,注释已经写的很详细了!!!
我在代码的 <dependencies> 标签上方写了注释:依赖列表。也就是说我们需要在这里面添加需要用到的架包的坐标。
其中包括 MyBatis 依赖、MySQL驱动、junit测试,而在 <build> 标签中添加的是 <resources> 标签(作用已写在注释中)
4.编写Student实体类、StudentDao接口
package com.bjpowernode.entity;
/**
*
*/
public class Student {
//属性名和列名一样
private Integer id;
private String name;
private String email;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "学生实体的信息{" +
"id=" + id +
", name='" + name + '\'' +
", email='" + email + '\'' +
", age=" + age +
'}';
}
}
package com.bjpowernode.dao;
import com.bjpowernode.entity.Student;
/**
*
*/
public interface StudentDao {
//查询一个学生
Student selectStudentById(Integer id);
}
5.编写StudentDao.xml文件(mapper映射文件)
<?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.bjpowernode.dao.StudentDao">
<!--
<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id}
</select>-->
<!--查询一个学生Student
<select>:表示查询操作,里面是select语句
id:要执行的sql语句的唯一标识,是一个自定义字符串
推荐使用Dao接口中的方法名称
resultType:告诉MyBatis,执行sql语句,把数据赋值给哪个类型的Java对象
推荐使用Java对象的全限定名称
#{studentId}:占位符,表示从Java程序中传入过来的数据
-->
<select id="selectStudentById" resultType="com.bjpowernode.entity.Student">
select id,name,email,age from student where id=#{studentId}
</select>
</mapper>
<!--
1.约束文件
http://mybatis.org/dtd/mybatis-3-mapper.dtd
约束文件作用:定义和限制当前文件中可以使用的标签和属性,以及标签出现的顺序
2.mapper是根标签
namespace:命名空间,必须有值(唯一),不能为空。
推荐使用Dao接口的全限定名称
作用:参与识别sql语句的作用
3.在mapper里面可以写 <insert>,<update>,<delete>,<select>标签
<insert>里面是 insert 语句,表示执行的是 insert 操作
<update>里面是 update 语句,表示执行的是 update 操作
<delete>里面是 delete 语句,表示执行的是 delete 操作
<select>里面是 select 语句,表示执行的是 select 操作
-->
这里给出修改后的xml文件,注释已经写的很详细了!!!
<select>标签中就是我们要执行的 sql 语句,这里注意 namespace、id、resultType 的含义及设置!!!
6.编写MyBatis.xml主配置文件
在src/main目录下,我们要新建一个 resources 目录,然后右键单击 resources → Mark Directory as → Resources Root。将此文件夹的类型修改为 Resources Root,之后在这个目录下创建一个 File,名为 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>
<!--设置日志-->
<!--
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!--配置数据源:创建Connection对象-->
<dataSource type="POOLED">
<!--driver:驱动内容-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!--连接数据库的url-->
<property name="url" value="jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf-8"/>
<!--用户名-->
<property name="username" value="root"/>
<!--密码-->
<property name="password" value="12345678"/>
</dataSource>
</environment>
</environments>
<!--指定其他mapper文件的位置
目的是找到其他mapper文件的sql语句
-->
<mappers>
<!--使用mapper的resource属性指定mapper文件的路径
这个路径是从target/classes路径开启的
使用注意:resource="mapper"文件的路径,使用 / 分割路径
一个resource指定一个mapper文件
-->
<mapper resource="com/bjpowernode/dao/StudentDao.xml"/>
</mappers>
</configuration>
这里给出修改后的xml文件,注释已经写的很详细了!!!
7.编写MyTest测试类
package com.bjpowernode;
import com.bjpowernode.entity.Student;
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 java.io.IOException;
import java.io.InputStream;
/**
*
*/
public class MyTest {
//测试MyBatis执行sql语句
@Test
public void testSelectStudentById() throws IOException {
//调用MyBatis某个对象的方法,执行mapper文件中的sql语句
//MyBatis核心类:SqlSessionFactory
//1.定义MyBatis主配置文件的位置,从类路径开始的相对路径
String config="mybatis.xml";
//2.读取主配置文件,使用MyBatis框架中的Resources类
InputStream inputStream=Resources.getResourceAsStream(config);
//3.创建SqlSessionFactory对象,使用SqlSessionFactoryBuilder类
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
//4.获取SqlSession对象
SqlSession session=factory.openSession();
//5.指定要执行的sql语句的id
// sql的 id = namespace + "." + select|update|insert|delete标签的id属性值
String sqlId="com.bjpowernode.dao.StudentDao" + "." + "selectStudentById";
//6.通过SqlSessionde的方法,执行sql语句
Student student=session.selectOne(sqlId,1001);
System.out.println("使用MyBatis查询一个学生:" + student);
//7.关闭SqlSession对象
session.close();
}
}
每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。
从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。 但也可以使用任意的输入流(InputStream)实例,比如用文件路径字符串或 file:// URL 构造的输入流。MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,使得从类路径或其它位置加载资源文件更加容易。
8.框架搭建成功,正常运行结果
9.总结大体的步骤
- 创建 student 表(id,name,email,age)。
- 新建 Maven 项目。
- 修改 pom.xml 。
1)加入Maven依赖:MyBatis依赖、MySQL驱动、junit
2)在 <build> 中加入资源插件
- 创建实体类 Student,定义属性(属性名和列名保持一致)。
- 创建 Dao 接口,定义操作数据库的方法。
- 创建 StudentDao.xml(mapper文件),写sql语句。
1)MyBatis框架推荐是把 Java 代码和 sql 语句分开
2)mapper文件:定义在和 Dao接口同一个目录下,一个表一个mapper文件
- 创建 MyBatis.xml 文件,放在 resources 目录下。
1)定义创建连接实例的数据源(DataSource)对象
2)指定其他 mapper 文件的位置
创建测试类
1)可以使用 main 方法,测试访问数据库。
2)也可以使用 junit 访问数据库。
相关的xml文件参考网址:https://mybatis.org/mybatis-3/zh/index.html