Mybatis✔

环境:

  1. JDK 13.0.2

  2. tomcat 9.0.3

  3. mybatis 3.5.4

  4. mysql 8

入门

早期为:ibatis:apache

2010年被Google收购改称:Mybatis

主要作用:简化JDBC操作,实现数据的持久化。

ORM:Object Relational Mapping,可以使开发人员像操作对象一样操作数据库

mybatis是ORM的一种实现

下载

之前看过的一个教程是使用Idea的,也就是直接使用依赖库导入,这次看的是导入jar使用。

官网

选择Getting Started

会有Maven方式,当然使用Idea就可以直接复制代码框内代码到idea中,但这次选择jar的超链接。

就来到了熟悉的github,在最新版本下,有三个选项,这里选择第一个zip包下载。

下好之后是个zip,

打开以后目录文件如图,

lib文件夹存放mybatis的一些依赖包,

license就是字面意思 许可证,

mybatis-3.5.4.jar即要用到的jar,

.pdf即使用说明书,

NOTICE也是字面意思 注意事项。

使用

简单实用一下:

导包

打开eclipse,新建一个JAVA项目,因为mybatis是操控数据库的,所以暂时可以先间隔Javaproject试一下。

这里起名“TestMyBatis”,将mybatis-3.5.4.jar拖到src里面,顺便add to buildpath,添加环境。

建表

打开cmd或者使用navicat,因为我的navicat建数据库总是会有数据编码混乱的问题,我一般建表都是用cmd。

创建实体类及映射关系

创建实体类 Person

构建这个类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
private String id;
private String name;
private int age;

public Person() {

}
public Person(String id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}

创建配置文件映射表和类的映射 .xml文件

点这里转换视图

在刚刚的.pdf文件中有大概的配置方法,打开后找到“Exploring Mapped SQL Statements

下面有

1
2
3
4
5
6
7
<?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="org.mybatis.example.BlogMapper">
<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>

直接复制,到刚刚的xml中,更改namespace 后面的内容为自己的xmltop.eshyee.entity.personMapper

改完之后

1
2
3
4
5
6
7
<?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="top.eshyee.entity.personMapper">
<select id="queryPersonById" resultType="Person" parameterType="String">
select * from person where id= #{id}
</select>
</mapper>

在创建一个配置文件,在src下创建一个叫config.xml的文件。

在pdf中查找“Building SqlSessionFactory from XML

这里需要提前准备好一个用来链接的jar MySQL connector

网址:https://dev.mysql.com/downloads/connector/j/

选zip,下好之后,里面乱七八糟的东西就不细致分析了,会点工地英语看看就好。主要使用mysql-connector-java-8.0.19.jar。拖到eclipse ,add一下环境。

配置xml如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false&amp;serverTimezone=UTC" />
<property name="username" value="你的用户名" />
<property name="password" value="你的密码" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="top/eshyee/entity/personMapper.xml" />
</mappers>
</configuration>

ok写个测试用例

1
2
3
4
5
6
7
8
9
10
11
12
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//加载config
Reader reader =Resources.getResourceAsReader("config.xml");
SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader);
SqlSession session= sessionFactory.openSession();
String statement ="top.eshyee.entity.personMapper.queryPersonById";
Person person=session.selectOne(statement,"1234567890");
//这里的1234567890是我接下来要插入的字符串
System.out.println(person.toString());
session.close();
}

同时在person下写一个toString()方法,这个可以自己来定,只要能看到person里的值就🉑。

测试

测试以下~~在数据库中插入一行数据

run一下test

🆗

常见问题

  1. 写完之后run的时候除了问题,报了一坨错其中有个timezone…想起来url写的jdbc:mysql://localhost:3306/test,然后后面加了?useSSL=false&serverTimezone=UTC,结果还不对,就百度了一下&在xml中是一种很神奇的存在得写成&amp;.
  2. Resource导包的时候选择org.apache.ibatis.io.*;

总结

相对于写DButil方便了不少。