文章目录:
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>
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.总结大体的步骤
1. 创建 student 表(id,name,email,age)。
2. 新建 Maven 项目。
3. 修改 pom.xml 。
1)加入Maven依赖:MyBatis依赖、MySQL驱动、junit
2)在 <build> 中加入资源插件
4. 创建实体类 Student,定义属性(属性名和列名保持一致)。
5. 创建 Dao 接口,定义操作数据库的方法。
6. 创建 StudentDao.xml(mapper文件),写sql语句。
1)MyBatis框架推荐是把 Java 代码和 sql 语句分开
2)mapper文件:定义在和 Dao接口同一个目录下,一个表一个mapper文件
7. 创建 MyBatis.xml文件,放在 resources 目录下。
1)定义创建连接实例的数据源(DataSource)对象
2)指定其他 mapper 文件的位置
8. 创建测试类
1)可以使用 main 方法,测试访问数据库。
2)也可以使用 junit 访问数据库。
相关的xml文件参考网址:https://mybatis.org/mybatis-3/zh/index.html