mybatis 之一:hello world

前言

Mybatis就是一个封装了jdbc的持久层框架,它和hibernate都属于orm框架,但是具体说,hibernate是一个完全的orm框架,而mybatis是一个不完全的orm框架,mybatis只关注sql本身,而不需要关注如连接的创建,statement的创建等操作。Mybatis会将输入参数、输出结果进行映射。

不多说,先来一个入门程序,意在先从整体了解
步骤一:创建一个java工程

步骤二:导入jar包,首先创建一个lib文件夹,在将包导入
Alt text

步骤三:数据库中的表user
Alt text

步骤四:创建pojo类,与数据库字段对应

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
package com.zwl.pojo;
public class User {
private int age;
private int id;
private String name;
public int getAge() {
return age;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}

步骤五:创建全局配置文件(mybatis核心配置文件SqlMapConfig.xml,放在src目录下)

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
<?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>
<!-- 配置mybatis的环境信息,与spring整合,该信息由spring来管理 -->
<environments default="development">
<environment id="development">
<!-- 配置JDBC事务控制,由mybatis进行管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源,采用mybatis连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:9806/sshe" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
还没有映射文件
</mappers>
</configuration>

简要说明一下,类似于hibernate核心配置文件,连接数据库,这里暂时还没有映射文件,后面步骤在加上

步骤六:映射文件(User.xml)这里是通过id查询返回对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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">
<!-- namespace:命名空间,对statement的信息进行分类管理 -->
<!-- 注意:在mapper代理时,它具有特殊及重要的作用 -->
<mapper namespace="test">
<!-- 根据用户ID查询用户信息 -->
<!-- select:表示一个MappedStatement对象 -->
<!-- id:statement的唯一标示 -->
<!-- #{}:表示一个占位符? -->
<!-- #{id}:里面的id表示输入参数的参数名称,如果该参数是简单类型,那么#{}里面的参数名称可以任意 -->
<!-- parameterType:输入参数的java类型 -->
<!-- resultType:输出结果的所映射的java类型(单条结果所对应的java类型) -->
<select id="findUserById" parameterType="int"
resultType="com.zwl.pojo.User">
SELECT * FROM user WHERE id =#{id}
</select>
</mapper>

步骤七:在全局配置文件中声明映射文件(User.xml)

1
2
3
<mappers>
<mapper resource="com/zwl/pojo/User.xml" />
</mappers>

步骤八:测试类

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
33
34
35
36
package com.zwl.test;
import java.io.InputStream;
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 com.zwl.pojo.User;
public class test {
@Test
public void findUserByIdtest() throws Exception{
//读取配置文件
//全局配置文件的路径
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//调用SqlSession的增删改查方法
//第一个参数:表示statement的唯一标示
User u=sqlSession.selectOne("test.findUserById", 1);
System.out.println(u.getName());
sqlSession.close();
}
}

最后可将数据库中id为1的数据取出

至此,入门程序算是完成了,通过上面步骤发现,这里的不完全orm,还是得最后我们自己写sql,这样我们就可以面对复杂表关系时,自己优化了

热评文章