logo头像

一路过来,不过游牧自己。。

SSM之MyBatis(一)


MyBatis是一个针对数据库进行操作的一个框架,通过MyBatis可以对数据库进行一系列操作,MyBatis的性能优劣与程序员使用数据库水平有很大的关系!所以学好框架也是一种提高性能的有效方式!

1、MyBatis介绍

MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录.
关于几个是数据库操作工具之间的关系大概如下:
JDBC->dbutils(自动封装)->MyBatis->Hibernate

2、MyBatis快速入门

我们先通过一个实例来切实感受下mybatis是什么东西:

(1)添加jar包:

【mybatis】包:

1
mybatis-3.1.1.jar

【MYSQL驱动包】:

1
mysql-connector-java-5.1.7-bin.jar

(2)数据库建表:

1
2
3
4
5
create database mybatis;
use mybatis;
CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);
INSERT INTO users(NAME, age) VALUES('Tom', 12);
INSERT INTO users(NAME, age) VALUES('Jack', 11);

这里我们建了一张用户表,里面的id是主键,还有name和age的属性
然后插入两条记录,下面我们就要通过这个作为基础数据然后进行操作!

(3)添加MyBatis的配置文件conf.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
</configuration>

如上所示,我们定义这个environments为development,其实这里主要是定义一些property,要加载驱动driver,还有链接地址url和数据库的用户名和密码,这个每个人都不一样,所以注意要修改好

(4)定义表的实体类

我们说数据库表中对应的数据都应该有一个对象来接受,所以我们定义一个属性一致的Class来表示:

1
2
3
4
5
6
public class User {
private int id;
private String name;
private int age;
//get,set方法
}

(5)定义操作user表的sql映射文件userMapper

在MyBatis中,一切数据库操作都是配置封装好的,通过一个例子来讲解:

1
2
3
4
5
6
7
8
<?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="com.atguigu.mybatis_test.test1.userMapper">
<select id="getUser" parameterType="int"
resultType="com.atguigu.mybatis_test.test1.User">
select * from users where id=#{id}
</select>
</mapper>

注意下我们这个各个字段代表什么意思! com.atguigu.mybatis_test.test1.userMapper这是一个执行空间,是一个执行单位,我们要执行就从这开始!这是装在mapper之中的! select表示这是一条查询语句!id是这个方法的标识,parameterType表示的是参数的类型是int型,resultType表示返回的是什么类型,然后编写语句!

(6)在conf.xml中去注册userMapper.xml文件

在con.xml中去加入语句:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<mappers>
<mapper resource="com/atguigu/mybatis_test/test1/userMapper.xml"/>
</mappers>
表示这个要加载的mapper文件在哪
#### (7)编写测试代码
```java
ublic class Test {
public static void main(String[] args) throws IOException {
String resource = "conf.xml";
//加载mybatis的配置文件(它也加载关联的映射文件)
Reader reader = Resources.getResourceAsReader(resource);
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//创建能执行映射文件中sql的sqlSession
SqlSession session = sessionFactory.openSession();
//映射sql的标识字符串
String statement = "com.atguigu.mybatis.bean.userMapper"+".getUser";
//执行查询返回一个唯一user对象的sql
User user = session.selectOne(statement, 1);
System.out.println(user);
}
}

如上所示,首先要加载的就是con.xml文件,这时候其实他会一起加载userMapper.xml文件,然后定义一个SqlSession,这是印射文件,然后利用这个进行操作:
selectOne,里面指定要用的语句id和插入参数;然后看其返回类型接受,输出!
从这个例子我们可以很明确看到思路很清晰,一个模块化的数据库操作和映射,简单而又持久灵活!

多走路,多思考,越努力,越幸运!
———————————————YoungerFary

微信打赏

赞赏是不耍流氓的鼓励