Mybats整合以及测试

第2周 上机操作 MyBatis框架入门

学习目标:

  1. 1.用Eclipse实现Mybatis框架基本操作
  2. 2.用IntelliJ IDEA+Maven实现Mybatis框架基本操作

学习说明:本周我们学习使用Mybatis对数据进行基本操作。为了让同学们从Eclipse到IntelliJ IDEA的平滑过渡,本周我们先使用Eclipse创建项目实现Mybatis框架操作,然后再用Intellij IDEA+Maven实现,让同学们对比两种软件的使用方法。后一阶段我们主要使用IntelliJ IDEA进行操作学习。

准备工作:数据库的建立。

请同学们启动MySQL数据库(如果已启动的可以跳过这一步)。然后运行数据库管理工具,例如Navicat或SQLYog。然后导入mybatis.sql创建数据库mybatis,请打开数据库查看一下里面的表,特别是User表。

  • 上机操作一:Eclipse实现Mybatis框架基本操作

下面我们使用Eclipse,搭建Mybatis框架,并实现数据的读取。

先请听老师简单讲解一下Mybatis框架的概念,特别是ORM框架思想。

步骤1. 运行Eclipse,新建一个java project项目,名称为Week2Test1:

在项目上右击,新建一个文件夹,名称为lib

  • 步骤2:导入相关的框架文件:

在第2周的”相关文件”文件夹中,找到mybatis包文件夹,复制里面所有的jar文件。(注意里面有一个是我们上周的日志框架文件log4j)
粘贴到上面的lib文件夹中。

然后在项目上面击,选择Build Path->Configur Build Path:

在Libraries->Add JARS中选择lib里的全部jar文件(可以按住Ctrl键多选):

点OK确认。
(本操作和上周的导入log4j框架操作一样)

  • 步骤3.创建配置文件。各个框架需要各自的配置文件来帮助运行。一般需要创建一个文件夹来存放配置文件。

在项目上右击,新建一个资源文件夹Source Folder (注意不是普通的Folder)

文件夹名为resources (可以自行命名)

请将相关文件夹里的
Log4j.properties,db.properties,mybatis-config.xml文件复制进去。

说明:
日志配置文件log4j.properties上周我们介绍过,这里不再做介绍。

db.properties是数据库连接配置,这里我们需要注意的是数据库名和密码,可能需要根据情况进行修改:

Mybatis-config.xml是Mybatis的核心配置文件,下周我们会进行详细学习,这里我们简单介绍一下它的几个重要位置:

  • 步骤4. (重点)使用Mybatis进行数据库取

Mybatis框架的使用主要有四步:

  1. 创建Pojo类(将表映射为一个对象)
  2. 创建映射文件
  3. 创建接口(可省略,但在后面MVC中需要)
  4. 在测试类中读取映射文件。
    下面我们进行操作:

(1) 创建POJO类,Mybatis是一个ORM数据框架,典型的特征就是将数据表映射成一个类。(将数据读到类的对象里,请结合下面的操作进行理解,这是本周重点)。
例如我们要读取的是User表,我们就要创建一个和User表相同结构的类。

请在src文件夹上右击,new-Package,新建一个Package,名称为pojo

在pojo包上右击,new –class,新建一个类,名称为User (尽量和表名一致)
在User类中添加以下代码,和User表的字段对应:
package pojo;

public class User {
private int uid; //用户id
private String uname; //用户姓名
private int uage; //用户年龄
}

在User类上右击,Source->Generate Getters and Setters,自动行成getter和setter方法:

(2) 添加映射文件:
在src上右击,new->package,新建一个包,名称为mapper

在mapper上右击,new->other->XML->XML File,创建一个XML文件:

文件名为:UserMapper.xml (可自由命名)
在UserMapper.xml中加上下面的代码:

<?xml version="1.0" encoding="UTF-8"?> select * from users where uid = #{id} 听老师讲解上面的代码:

namespace属性:
在MyBatis中,Mapper中的namespace用于绑定Dao接口的,即面向接口编程。
它的好处在于当使用了namespace之后就可以不用写接口实现类,业务逻辑会直接通过这个绑定寻找到相对应的SQL语句进行对应的数据处理,本周没使用接口,暂时不用管它。

(3) 打开mybatis-config.xml文件,添加下面的代码,表示将上面的UserMapper.xml文件映射到程序中:

<?xml version="1.0" encoding="UTF-8" ?>

步骤5.创建测试类,对数据读取并测试:

(1) 在工程上右击,新建一个Source Folder

名字为test

我们的测试类都放到这个文件夹中。

(2) 在上面创建的文件夹test上右击,new->other->Junit->Junit Test Case,如下图:

输入测试类名(可自行名)UserTest,如下图:

在UserTest类中写上如下代码,请注意理解:
import static org.junit.Assert.*;

import java.io.IOException;
import java.io.Reader;

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.apache.log4j.Logger;
import org.junit.Test;

import pojo.User;

public class UserTest {
//创建一个当前类的日志对象
private Logger logger=Logger.getLogger(UserTest.class);

@Test
public void test() {
	//读取文件名
    String resources = "mybatis-config.xml";
    //创建流
    Reader reader = null;
    try {
        //读取mybatis-config.xml文件内容到reader对象中
        reader = Resources.getResourceAsReader(resources);
    } catch (IOException e) {
        e.printStackTrace();
    }
    //初始化mybatis数据库,创建SqlSessionFactory类的实例
    SqlSessionFactory sqlMapper = new
            SqlSessionFactoryBuilder().build(reader);
    //创建SqlSession实例
    SqlSession session = sqlMapper.openSession();
    //传入参数查询,返回结果
    User user = session.selectOne("findById", 1);
    //输出结果
    logger.info("姓名:"+user.getUname()+",年龄:"+user.getUage());
    //关闭session
    session.close();

}

}

保存,运行测试类,查看结果:

代码注意事项:

请认真阅读课本1.5 MyBatis工作原理。
关于上面的SQLSessionFactory等对象,我们会在下一章详细讲解,先学会固定代码进行使用。

说明,上面的selectOne只能读取一行记录,如果要多行,需要使用selectList,下一个操作我们会进行说明。

上机作业1. 请模仿上面的操作,添加一个查询,查询t_student表中姓名是Lili的人的年龄。
(提示:姓名是String类型)

上机操作二、使用Intelli IDEA+MAVEN实现Mybatis框架的操作。 IntelliJ IDEA是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具

Maven是一个构建工具,服务与构建.使用Maven配置好项目后,可以自动导入Jar包,并能最大化的消除了构建的重复。

下面我们用IDEA+Maven来重做操作一的项目,请同学们注意通过本操作学习IDEA+Maven项目的基本使用。

  • 步骤1.运行IDEA,并运行破解工具。

运行Intellij IDEA,新建一个项目:File->new->Project

左边选择Maven工具。右边选择JDK,然后NEXT:

(将来可使用现成的架构,可以点中下面的Create from archetype,本节课我们暂时不用现成架构)
在项目名称窗口输入名称WeekTest2,选择好保存位置(必须是空文件夹),可以在下面输入版本和公司:

点Finish确定(如果点不了,说明可能项目名称已经存在,请换一个名称或删除旧项目)。

  • 步骤2.在pom.xml文件中引入依赖文件。

上面eclipse导入框架时,我们要考入大量的jar包,还要进行build path等操作。Maven提供了自动引入功能,只需要在pom.xml文件中说明引用的类型,版本等就行,Maven自动下载这些Jar文件(但是要联网)请看下面操作:
打开项目中的pom.xml文件

写入下面的代码:

<?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.itheima</groupId>
    <artifactId>mybatistest</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <!--   	        <scope>test</scope>-->
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
    </dependencies>
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
</project>

按Ctrl+S保存后,Maven自动下载并配置相关的Jar文件。(但是要联网)

请听老师讲解一下上面的代码,分别引入了Mybatis,Mysql连接包,测试用例包(JUnit)和Log4j日志包。

说明,如果在版本里面出现红色字体,表示这部分没有引入成功,(特别是中途修改了Pom.xml文件)如下图:

出现这种情况,有时可能要刷新一下Maven,点击右边的Maven,然后点刷新按钮:

这样Jar包就引入成功了。
相关知识请阅读课本P5-P6

步骤3.复制相关配置文件。
这里我们需要几个配置文件:数据库连接配置,Mybatis配置和Log4j配置文件。从第2周的“相关文件”文件夹中复制以下三个文件:

粘贴到Src/main/resources目录中,弹出的窗口中点一下Refactor(重构):

贴好之后:

注意对比一下在eclipse中的操作,IDEA不需要另外创建resources文件夹,一般默认放在src/main/resources中。

打开里面的db.properties,如果数据库名和密码不同,记得修改一下。

Mybatis的核心配置文件和log4j的配置和上一个操作一样,这里不做解释。

步骤4.创建Pojo类
由于要查询的是User表,我们在src/main/java中创建pojo包(右击,new->package,输入pojo,按回车)。注意课本的包名比较复杂,我们简化了。
在pojo包中创建User类,代码和操作一一样,代码如下:
package pojo;

public class User {
private int uid; //用户id
private String uname; //用户姓名
private int uage; //用户年龄
}

自动生成getter方法和Setter方法和Eclipse稍有不同,在代码窗口中的成员变量位置中右击,选择Generate:

然后选择Getter and Setter:

按CTRL键把所有变量都选中:

点下面的OK自动生成Getter和Setter方法。

步骤4.创建映射文件(重点)
在src/main/resources目录中创建文件夹mapper.(new-Directory)

输入文件夹名mapper,回车

接下来准备创建UserMapper.xml文件,但是在mapper文件夹上右击,new,找不到XML文件选项,IDEA中要配置一下才能new生成XML文件。

先在FILE->Setting打开配置窗口

在左侧的输入框输入Temp回车 ,选中file and code templates 选择“+”号码

将右边Name右边输入XML File,entension后面的输入框输入xml ,勾选enable live templates (激活模板).

点OK确认。

回到Src/main/resources/mapper文件夹,右击,new-XML File

输入UserMapper

在UserMapper.xml中加上下面的代码:

<?xml version="1.0" encoding="UTF-8"?> select * from users where uid = #{id}

然后打开Mybatis-config.xml文件,加上下面的红色代码,添加上面的映射文件到Mybatis配置文件中:
…前面略

<mappers>
    <mapper resource="mapper/UserMapper.xml"/>
</mappers>

步骤5.创建测试类进行测试。
IDEA默认的测试类放在src/test/java中。

创建存放测试类的包:在src/test/java中创建Test包。(右击new-Package)
IDEA中的测试类,要针对某个类进行创建。
在src/main/java/pojo中双击打开User类。
在User类右边的代码窗口中右击,Goto->Test

在弹出的窗口中选择Create New Test:

在弹出的窗口中选择一下测试类的保存位置,如下图:

点OK确认,这时会生成测试类UserTest

写入测试代码:
public class UserTest {

//创建一个当前类的日志对象
private Logger logger=Logger.getLogger(UserTest.class);


@Test
public void userFindByIdTest() {
    //读取文件名
    String resources = "mybatis-config.xml";
    //创建流
    Reader reader = null;
    try {
        //读取mybatis-config.xml文件内容到reader对象中
        reader = Resources.getResourceAsReader(resources);
    } catch (IOException e) {
        e.printStackTrace();
    }
    //初始化mybatis数据库,创建SqlSessionFactory类的实例
    SqlSessionFactory sqlMapper = new
            SqlSessionFactoryBuilder().build(reader);
    //创建SqlSession实例
    SqlSession session = sqlMapper.openSession();
    //传入参数查询,返回结果
    User user = session.selectOne("findById", 1);
    //输出结果
    logger.info("姓名:"+user.getUname()+",年龄:"+user.getUage());
    //关闭session
    session.close();
}

}

最后import相关的包,鼠标移到所有红色字体的类上面,例如Logger类:
选择import class

选择Logger(org.apache.log4j):

然后在其他红色字体的类上面都import相应的包。

Ctrl+S运行。在Run窗口点Run,然后选择UserTest
查看运行结果:

上机操作三、读取多条记录。
上面的select One只能读取一条记录,如果要读取多条记录,需要使用selectList,并且要返回泛型。下面我们举例读取用户表的所有记录。

步骤1.在UserMapper.xml中添加一条查询:


select * from users where uid = #{id}

<select id="showAllUser"  resultType="pojo.User">
    select * from users
</select>

上面我们创建了一个新的查询,id是showAllUser,不需要参数,读取用户表所有记录。

步骤2.添加测试
打开UserTest测试类
在@Test前添加//,注释掉上一个测试方法:

然后在下面添加一个新的测试方法:
@Test
public void showUser() {
//读取文件名
String resources = “mybatis-config.xml”;
//创建流
Reader reader = null;
try {
//读取mybatis-config.xml文件内容到reader对象中
reader = Resources.getResourceAsReader(resources);
} catch (IOException e) {
e.printStackTrace();
}
//初始化mybatis数据库,创建SqlSessionFactory类的实例
SqlSessionFactory sqlMapper = new
SqlSessionFactoryBuilder().build(reader);
//创建SqlSession实例
SqlSession session = sqlMapper.openSession();
//传入参数查询,返回结果
List userList =session.selectList(“showAllUser”);
//输出结果
for(User user: userList){
logger.debug(“ID: " + user.getUid() + " 姓名: " + user.getUname()+” 年龄:"+user.getUage());
}
//关闭session
session.close();
}
说明,上面我们使用selectList读取showAllUser的值,并创建了一个List型的变量获取值,最后用for循环遍历这个List变量。
运行查看结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值