环境需要:
jdk8+
MySQL 5.7.19
maven 3.6.1
首先先了解下什么是Mybatis框架: Mybatis是一个持久层框架,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程; 可以使用简单的 XML 或注解来配置和映射原生信息;将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。
持久化:将程序数据在持久状态和瞬时状态间转换的机制,即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等等。
持久层:完成持久化工作的代码块 . ----> dao层 【DAO (Data Access Object) 数据访问对象】
环境搭建及demo:
1.导入Mybatis相关的jar包(在pom.xml文件中导入依赖)
<!--Mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<!--Mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
2.按照官方文档编写核心配置文件
在src/mian/resource下新建mybatis-config.xml配置文件
<?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>
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<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=false&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/kuang/dao/UserMapper.xml"/>
</mappers>
</configuration>
3.编写Mybatis工具类
在src/main/java/com/hj/utils下编写工具类MybatisUtils.class
MybatisUtils.class
//sqlSessionFactory --->sqlSession
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static{
InputStream inputStream = null;
try {
//使用Mybatis第一步:获取sqlSessionFactory对象
String resource = "mybatis-config.xml";
inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
5.创建实体类
在src/main/java/com/hj/pojo下编写实体类User.class。可以在IDEA中导入lombok插件,通过@Data注解自动生成实体类的构造器方法等。
User.class
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;
}
}
6.编写Mapper接口
在src/main/java/com/hj/dao下编写UseMapper接口
package com.hj.dao;
import com.hj.pojo.User;
import java.util.List;
public interface UserMapper {
//查询全部用户
List<User> getUserList();
//根据ID查询用户
User getUserById(int id);
//insert一个用户
int addUser(User user);
//修改用户
int updateUser(User user);
//删除一个用户
int deletUser(int id);
}
7.编写Mapper.xml配置文件在这个里面,通过namespace绑定接口,然后写编写sql语句
<?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.hj.dao.UserMapper">
<select id="getUserList" resultType="com.hj.pojo.User">
select * from mybatis.user
</select>
<select id="getUserId" parameterType="int" resultType="com.hj.pojo.User">
select * from user where id= #{id}
</select>
<!--对象中的属性可以直接取出来-->
<insert id="addUser" parameterType="com.hj.pojo.User" >
insert into mybatis.user(id,name ,pwd) values(#{id},#{name},#{pwd});
</insert>
<update id="updateUser" parameterType="com.hj.pojo.User" >
<!--sql语句中填的参数需要和User中定义的一样-->
update mybatis.user set name=#{name},pwd #{pwd} = where id = #{id};
</update>
<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id =#{id};
</delete>
</mapper>
8.测试类。Junit包测试
在src/main/java/com/hj/dao下编写UseMapperTest测试类
@Test
public void test(){
//第一步:获取sqlsession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.getUserList();
for (User user : userList) {
System.out.println(user);
}
//关闭sqlSession
sqlSession.close();
}
工程目录如下图:
Mybatis的具体执行思路是:首先先配置好环境以及编写好Mybatis.xml配置文件和实体类,接口,xml文件(里面编写执行的sql语句)。然后通过测试类进行测试的步骤是:
1.先获取sqlSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession();
2.获取mapper对象(通过反射实现) UserMapper mapper = sqlSession.getMapper(UserMapper.class);
3.相应的业务代码 List userList = mapper.getUserList();
4.最后一步是:关闭sqlSession sqlSession.close();