MyBatis的执行流程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/b509_ying/article/details/89021331

MyBatis介绍

        MyBatis 本是apache的一个开源项目iBatis,后改名为MyBatis,它支持定制化 SQL、存储过程以及高级映射,是一款优秀的基于java的持久层框架。

操作步骤

使用MyBatis进行持久化操作,通常的操作步骤如下:

1.导入mybatis相关jar包

2.编写配置文件: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>

	<properties resource="db.properties"></properties>
	<!-- <settings>
		<setting name="logImpl" value="LOG4J"/>
	</settings> -->
	<!-- 环境配置 -->
	<environments default="development">
		<environment id="development">
			<!-- 指定事务管理类型 -->
			<transactionManager type="JDBC"></transactionManager>
			<!-- 数据源配置 -->
			<dataSource type="POOLED">
				<property name="driver" value="${driver}" />
       	 		<property name="url" value="${url}" />
        		<property name="username" value="${username}" />
        		<property name="password" value="${password}" />
			</dataSource>
		</environment>
	</environments>

    <!-- 加载映射文件 -->
    <mappers>
        <mapper resource="com/iotek/mapper/UserMapper.xml" />
    </mappers>
</configuration>

3.建立实体类,普通POJO作为持久化类,例如:User

4.在数据库中创建相应表user

5.编写映射文件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.iotek.mapper.UserMapper">
    <select id="findUserById" parameterType="int" resultType="com.iotek.model.User">
        select * from user WHERE id = #{id} 
    </select>
    <insert id="save" parameterType="com.iotek.model.User" useGeneratedKeys="true">
    	insert into user(username,sex,birthday,address) values (#{username},#{sex},#{birthday},#{address})
    </insert>
    
    <delete id="delete" parameterType="int">
    	delete from user where id = #{id}
    </delete>
    
    <update id="update" parameterType="com.iotek.model.User">
    	update user set username = #{username} where id = #{id}
    </update>
    
    <select id="findAll" resultType="com.iotek.model.User">
    	select * from user
    </select>
</mapper>

6.编写业务代码,完成持久化操作

package com.iotek.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;

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.iotek.model.User;

public class MyBatisTest {
	
	@Test
	public void Test() throws IOException{
		//mybatis配置文件
		String resource = "mybatis.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		//创建会话工厂
		SqlSessionFactory sqlSessionFactory = new     SqlSessionFactoryBuilder().build(inputStream);
		//创建会话
		SqlSession sqlSession = sqlSessionFactory.openSession();
		//通过sqlSession操作数据库
		//查询一条数据
		User user = sqlSession.selectOne("com.iotek.mapper.UserMapper.findUserById",5);
		//查询全部数据		
		//List<User> list = sqlSession.selectList("com.iotek.mapper.UserMapper.findAll");
		//插入数据库操作		
		//User user1 = new User("阿强", "男", new Date(), "苏州");
		//sqlSession.insert("com.iotek.mapper.UserMapper.save", user1);
		/*for (User user : list) {
			System.out.println(user);
		}*/
		//user.setUsername("西西");
		//更新操作
		//sqlSession.update("com.iotek.mapper.UserMapper.update",user);
		
		//删除一条数据
		//sqlSession.delete("com.iotek.mapper.UserMapper.delete", 8);
		System.out.println(user);
		//提交事务
		sqlSession.commit();
		//关闭sqlsession
		sqlSession.close();
	}
}

7.查询结果

sql执行流程

在MyBatis进行持久化操作时,sql的执行流程如下:

1.读取MyBatis配置文件mybatis-config.xml

2.通过配置信息,SqlSessionFactoryBuilder创建SqlSessionFactory实例

3.SqlSessionFactory创建SqlSession会话实例

4.SqlSession进行持久化操作

5.提交SqlSession(事务)

6.关闭SqlSession(事务)

猜你喜欢

转载自blog.csdn.net/b509_ying/article/details/89021331