Mybatis的介绍
什么是Mybatis
- Mybatis是一款优秀的持久层框架,它支持定制化sql,存储过程以及高级映射
- Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集
- Mybatis可以使用简单的XML或者注解来配置和映射原生类型,接口和JAVA的POJO为数据库中的记录。
持久化
-什么是持久化
持久化就是将程序的数据持久状态和瞬时状态转化的过程
我们的内存:断电就会失去数据
我们所用的数据库,io文件则是持久化的数据
- 为什么我们需要将数据持久化
就像我们存储的用户信息不能因为一些原因让他轻易的丢失,我们后期还需要利用这些数据去实现功能
还有就是内存太贵
Mybatis的优点
- 帮助我们更方便的去和数据库建立连接,并且对数据库进行操作
- 简单易于掌握(JDBC代码太复杂)
- sql和代码分离提高了维护性
- 提供映射标签,支持对象与数据库的orm字段关系的映射
- 提供对象关系标签,支持对象关系组建维护
- 提供xml标签,支持编写动态sql
简单Mbatis程序的构建
1.编写我们的数据库(此处利用mysql)
CREATE DATABASE `mybatis`;
USE `mybatis`;
CREATE TABLE `user`(
`id` INT(20) NOT NULL PRIMARY KEY,
`name` VARCHAR(30) DEFAULT NULL,
`pwd` VARCHAR(30) DEFAULT NULL
)ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO `user`(`id`,`name`,`pwd`) VALUES
(1,'张三','123456'),
(2,'李四','123890')
2.创建一个MAVEN项目
- 在pom.xml中添加依赖
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--mybatis-->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
- 删除src选项
- 在该项目下在创建一个maven项目
3.在rescourse中创建一个mybatis的核心配置文件(稍后用来实现数据库的连接)
<?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核心配置文件-->
<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?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="dao/UserMapper.xml"></mapper>
</mappers>
</configuration>
4.建立工具类实现数据库的连接(获取sqlsessionFactory–>获取sqlsession)
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static{
try {
//使用Mybatis第一步:获取sqlSessionFactory对象
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
// 从sqlsessionfactory中获得的SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
5.建立实体类(与数据库中的表头元素相对应)
package com.kuang.pojo;
public class User {
private int id;
private String name;
private String pwd;
public User() {
}
public User(int id, String name, String pwd) {
this.id = id;
this.name = name;
this.pwd = pwd;
}
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 getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", pwd='" + pwd + '\'' +
'}';
}
}
6.新建Dao目录在JAVA下
- 创建UserMapper接口
public interface UserMapper {
List<User> getUserList();
}
- 继续在该目录下创建userMapper.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="com.lala.dao.UserMapper">
<!--select查询语句-->
<select id="getUserList" resultType="com.lala.pojo.User">
select * from mybatis.user
</select>
</mapper>
测试结果
public class Test {
public static void main(String[] args) {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao usermapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = usermapper.getUserList();
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
}