这一节,我们自己动手来试试第一个mybatis程序,需要在mysql数据库中创建一个表,

CREATE TABLE `website` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(20) COLLATE utf8_unicode_ci NOT NULL,

`url` varchar(30) COLLATE utf8_unicode_ci DEFAULT '',

`age` tinyint(3) unsigned NOT NULL,

`country` char(3) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',

`createtime` timestamp NULL DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

下面开始使用 Eclipse IDE 创建一个简单的 MyBatis 程序

1,创建动态网站程序

在 Eclipse 中创建dynamic Web project 项目 mybatisDemoA1,并将上节下载的 MyBatis目录下lib目录下的jar包,核心包mybatis-3.5.6.jar以及 MySQL 数据库的驱动 jar 包(mysql-connector-java-5.1.38-bin.jar)复制到WebContent /WEB-INF/lib 目录中,选择这些包,右键添加到编译路径中

2,创建javabean类website

在 src 目录下创建一个名为 net.biancheng.po 的包,在该包中创建持久化类 Website。注意,在类中声明的属性与数据表 website 的字段一致。

package net.biancheng.po;

 

import java.util.Date;
/**
* 在类中声明的属性与数据表 website 的字段一致。
* @author Administrator
*
*/
public class Website {
private int id;
private String name;
private String url;
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 String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public Date getCreatetime() {
return createtime;
}
public void setCreatetime(Date createtime) {
this.createtime = createtime;
}
private int age;
private String country;
private Date createtime;

public String show(){
String msg="站点名称:"+this.name+",网址:"+this.url+",来自地区:"+this.country;
return msg;

}

 3,创建website对象的映射文件

 在 src 目录下创建 net.biancheng.mapper 包,在该包下创建映射文件 WebsiteMapper.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 属性,该属性值通常设置为“包名+SQL映射文件名”,用于指定唯一的命名空间。 -->
<mapper namespace="net.biancheng.mapper.WebsiteMapper">
<!-- insert表示添加操作 ,id用于标识语句,parameterType表示参数类型,id是唯一标识符 -->
<!-- “#{}”表示一个占位符,相当于“?”,而“#{name}”表示该占位符待接收参数的名称为 name。 -->
<insert id="addWebsite" parameterType="net.biancheng.po.Website">
insert into website (name,url,age,country,createtime) values
(#{name},#{url},#{age},#{country},#{createtime})
</insert>
<!-- select表示查询 ,id用于标识语句,查询所有网站信息 -resultType表示结果类型 -->
<select id="selectAllWebsite" resultType="net.biancheng.po.Website">
select * from website
</select>
</mapper>

4,创建mybatis配置文件

在 src 目录下创建 MyBatis 的核心配置文件 mybatis-config.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="LOG4J" />
</settings>
<!-- 配置mybatis运行环境 -->
<!-- 在 environments 标签中,可以配置 MyBatis 的多套运行环境,将 SQL 映射到多个不同的数据库上。 -->
<environments default="development">
<!-- 环境变量 -->
<!-- environment 标签提供了两个子标签,即 transactionManager 和 dataSource -->
<!-- environment 是 environments 的子标签,用来配置 MyBatis 的一套运行环境,需指定运行环境 ID、事务管理、数据源配置等相关信息。 -->
<environment id="development">
<!--transactionManager事务, 使用JDBC的事务管理 -->
<transactionManager type="JDBC" />
<!-- dataSource数据源 ,用于配置数据库的连接属性,例如要连接的数据库的驱动程序名称、URL、用户名和密码等。 -->
<dataSource type="POOLED">
<!-- MySQL数据库驱动 -->
<property name="driver" value="com.mysql.jdbc.Driver" />
<!-- 连接数据库的URL -->
<property name="url"
value="jdbc:mysql://localhost:3306/cctv?characterEncoding=utf8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 将mapper文件加入到配置文件中 -->
<!-- 映射器, mappers 标签用于指定 MyBatis SQL 映射文件的路径 -->
<mappers>
<!-- resource 属性用于指定 SQL 映射文件的路径(类资源路径) -->
<mapper resource="net/biancheng/mapper/WebsiteMapper.xml" />
</mappers>
</configuration>

上述两个配置文件都必须创建在src的根目录下

5,编写测试类

在 src 目录下创建一个名为 net.biancheng.test 的包,在该包中创建含有main方法 test 类,内容如下:

package net.biancheng.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;

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 net.biancheng.po.Website;

public class test {

public static void main(String[] args) {
// 读取配置文件mybatis-config.xml
InputStream config;
try {
config = Resources.getResourceAsStream("mybatis-config.xml");
// 根据配置文件构建SqlSessionFactory,SqlSessionFactory 对象一旦创建,就会在整个应用程序过程中始终存在
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config);
// 通过SqlSessionFactory创建SqlSession
//SqlSession 是用于执行持久化操作的对象,类似于 JDBC 中的 Connection。它提供了面向数据库执行 SQL 命令所需的所有方法,
//可以通过 SqlSession 实例直接运行已映射的 SQL 语句。
SqlSession ss = ssf.openSession();
// SqlSession执行文件中定义的SQL,并返回映射结果
//SqlSession 的用途主要有两种。
//获取映射器。让映射器通过命名空间和方法名称找到对应的 SQL,并发送给数据库,执行后返回结果。
//直接通过“命名空间(namespace)+SQL id”的方式执行 SQL,不需要获取映射器,比如下面的操作
// 添加网站
Website website = new Website();
website.setName("太空");
website.setUrl("https://www.tm.net/");
website.setAge(21);
website.setCountry("中国");
Date dt=new Date();
website.setCreatetime(dt);
//以下的insert和selectlist两个方法都是通过命名空间(namespace)+SQL id”的方式执行 SQL
//调用配置文件websitemapper.xml文件中id为addWebsite的节点中的sql语句,并传递对应的参数值
ss.insert("net.biancheng.mapper.WebsiteMapper.addWebsite", website);
// 查询所有网站
//调用配置文件websitemapper.xml文件中id为selectAllWebsite的节点中的sql语句,并传递对应的参数值
//selectList 方法表示使用查询并且返回一个列表。可以查询 0 或 N 条记录
List<Website> listWeb = ss.selectList("net.biancheng.mapper.WebsiteMapper.selectAllWebsite");
for (Website site : listWeb) {
System.out.println(site.show());
}
// 提交事务
ss.commit();
// 关闭 SqlSession
ss.close();
} catch (IOException e) {
e.printStackTrace();
}

}

}

最后的项目结构如图:

mybatis尝鲜_xml

 

 

运行结果如下:

mybatis尝鲜_xml_02

 

 mysql数据库中的website显示了刚才添加的记录

mybatis尝鲜_配置文件_03

 

第一个mybatis程序运行成功。

下节继续