创建数据库和表用于测试:
create database student;
use student;
CREATE TABLE `student` (
`id` int(11) NOT NULL auto_increment,
`studentname` varchar(32) NOT NULL COMMENT '学生名称',
`birthday` datetime default NULL COMMENT '生日',
`sex` char(1) default NULL COMMENT '性别',
`address` varchar(256) default NULL COMMENT '地址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `student`(`id`,`studentname`,`birthday`,`sex`,`address`) values
(15,'Mybatis','2018-02-27 17:47:08','男','北京'),
(17,'小王','2018-03-02 15:09:37','男','广州');
创建Maven空项目:
next
选择Enable Auto-Import
导入Mybatis依赖坐标
到maven的中央仓库(https://mvnrepository.com/)搜索Mybatis,即可找到依赖坐标
点击第一个Mybatis,可以看到有很多的版本,这里我就选择3.4.5
页面下方的代码就是Mybatis的Maven依赖坐标,先复制好
先在项目的pom文件中写好dependencies标签,再把坐标粘贴到dependencies标签内
导入成功:
有了Mybatis是不够的,还需要添加Mysqlconnector,坐标的获得方法和以上获取Mybatis的一样,如下:
<!--依赖坐标-->
<dependencies>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<!--Mybatis坐标-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<!--MysqlConnector坐标-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
</dependencies>
在java文件夹下创建包(com.mb.bean),然后创建Bean:
Getter和Setter方法、toString方法可以通过Alt+Ins快捷键快速创建
然后创建com.mb.dao的包,在里面创建dao接口:
在resources文件夹中创建Mybatis的XML配置文件:
该配置文件的内容可以在Mybatis的官方文档上复制(https://mybatis.org/mybatis-3/zh/getting-started.html)
关于XML配置文件的标签的解释在官方文档上已有了,简单的整理:
- 默认使用的环境 ID(比如:default="development")。
- 每个 environment 元素定义的环境 ID(比如:id="development")。
- 事务管理器的配置(比如:type="JDBC")。
- 数据源的配置(比如:type="POOLED")。
默认的环境和环境 ID 是自解释的,因此一目了然。 你可以对环境随意命名,但一定要保证默认的环境 ID 要匹配其中一个环境 ID。
事务管理器(transactionManager)
在 MyBatis 中有两种类型的事务管理器(也就是 type=”[JDBC|MANAGED]”):
- JDBC – 这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域。
- MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接,然而一些容器并不希望这样,因此需要将 closeConnection 属性设置为 false 来阻止它默认的关闭行为。
接下来在XML配置文件中添加代码用于指定映射(mappers)配置文件的位置,映射配置玩家指的是每个dao独立的配置文件,我们需要告诉 MyBatis 到哪里去找到这些Sql语句
首先在resources文件加内创建文件夹com/mb/dao
在dao文件夹内创建映射配置文件,文件名称为:StudentDaoInterface.xml
同理,该文件的内容可以在官方文档中的"入门"章节内复制
接下来要对mappers文件和XML配置文件稍做修改,因为我们刚刚复制的是官方文档的内容。
Mappers:
- namespace里面应该指定Dao接口的全限定类名
- id里面应该指定Dao接口中的查询方法名称
- resultType指的是从这条语句中返回的期望类型的类的完全限定名或别名。
- select标签里面的Sql语句需要修改自己需要的
XML配置文件:
修改的地方比较简单,主要是property标签和mapper标签
以上,Mybatis的环境搭建已经完成
****
注意的地方:
- mybatis的映射配置文件位置必须和dao接口的包结构相同
- 映射配置文件的namespace属性的取值必须是dao接口的全限定类名
- 映射配置文件的操作配置(比如select标签),id属性的值必须是dao接口的方法名称
****
开始测试
在test/java文件夹内创建测试类:
import com.mb.bean.Student;
import com.mb.dao.StudentDaoInterface;
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 java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class Test01 {
public static void main(String[] args) throws IOException {
/*读取配置文件*/
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
/*创建Sql会话工厂*/
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
/*使用工厂生产Sql会话对象*/
SqlSession session = factory.openSession();
/*使用Sql会话创建Dao接口的代理对象*/
StudentDaoInterface mapper = session.getMapper(StudentDaoInterface.class);
/*使用代理对象执行方法*/
List<Student> Students = mapper.findAllStudent();
for (Student student:Students){
System.out.println(student);
}
/*释放资源*/
session.close();
in.close();
}
}
可以看到输出结果和我们数据库的内容是一样的: