当前位置: 首页 > news >正文

政府网站建设和发展不断加快上海百度推广客服电话

政府网站建设和发展不断加快,上海百度推广客服电话,wordpress登录后台空白,互联网基础知识入门文章目录前言一、mybatis工作原理1.1 流程图1.2 步骤解析1.3 代码实现前言 本文记录 Mybatis 的工作原理,做到知识梳理总结的作用。 一、mybatis工作原理 Mybatis 的总体工作原理流程图如下图所示 1.1 流程图 1.2 步骤解析 Mybatis 框架在工作时大致经过8个步骤…

文章目录

  • 前言
  • 一、mybatis工作原理
    • 1.1 流程图
    • 1.2 步骤解析
    • 1.3 代码实现

前言

本文记录 Mybatis 的工作原理,做到知识梳理总结的作用。

一、mybatis工作原理

Mybatis 的总体工作原理流程图如下图所示

1.1 流程图

在这里插入图片描述

1.2 步骤解析

Mybatis 框架在工作时大致经过8个步骤,如下:

  1. 读取 Mybatis 配置文件 mybatis-config.xml,该配置文件作为 Mybatis 的全局配置文件,配置了 Mybatis 的运行环境和数据库连接等信息。

  2. 加载映射文件 mapper.xml,该文件中配置了操作数据库的 sql 语句,需要在mybatis-config.xml中加载才能执行。mybatis-config.xml 可以加载多个配置文件,每个配置文件对应数据库中的一张表。

  3. 通过 SqlSessionFactoryBuilder 对象的 build() 方法构建会话工厂,且 build() 方法参数为 mybatis-config.xml 配置文件的输入流,通过 Mybatis 的环境等配置信息构建会话工厂 SqlSessionFactory - 工厂设计模式。

//build方法源码:将mybatis-config.xml 配置文件输入流解析成xml配置对象
XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, properties);
  1. 创建 SqlSession 对象,由会话工厂创建 SqlSession 对象,该对象中包含了执行 SQL 的所有方法。

  2. Mybatis 的底层定义了一个 Executor 接口来操作数据库,它会根据 SqlSession 传递的参数动态的生成需要执行的 SQL 语句,同时负责查询缓存的维护。

  3. 在 Executor 接口的方法中,包含一个 MappedStatement 类型的参数,该参数是对映射信息的封装,用于存储要映射的 SQL 语句的 id、参数等。Mapper.xml 文件中的一个SQL对应一个 MappedStatement 对象,SQL 的 id 即是 MappedStatement 的 id。

  4. 输入映射参数,在执行方法时 MappedStatement 对象会对用户执行 SQL 语句的输入参数进行定义(可以定义为 Map、List 类型、基本类型和 POJO 类型),Executor 执行器会通过 MappedStatement 对象在执行 SQL 前,将输入的 java 对象映射到 SQL 语句中。这里对输入参数的映射过程就类似于 JDBC 编程中对 preparedStatement 对象设置参数的过程。

  5. 输出结果映射,在数据库中执行完SQL语句后 MappedStatement 对象会对 SQL 执行输出的结果进行定义(可以定义为 Map、List 类型、基本类型、POJO类型),Executor 执行器会通过 MappedStatement 对象在执行 SQL 语句后,将输出结果映射到 java 对象中。这种将输出结果映射到 java 对象的过程就类似于 JDBC 编程中对结果的解析处理过程。

1.3 代码实现

mybatis 数据库的 user 表数据

在这里插入图片描述

Mybatis 的 mybatis-config.xml 配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//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?useSSL=false&amp;useUnicode=false&amp;characterEncoding=utf8;serverTimezone=GMT%2B8"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><!--每一个Mapper.xml都需要在mybatis核心配置文件中注册--><mappers><!--resource要用 /--><mapper resource="com/kuang/dao/UserMapper.xml"/></mappers>
</configuration>

MybatisUtils 获取 sqlSession 对象工具类

public class MybatisUtils {private static SqlSessionFactory sqlSessionFactory;static{try {//访问mybatis 读取User数据//mybatis全局配置文件名定义String resource = "mybatis-config.xml";//读取这个resource表示的文件并将其转化为输入流InputStream inputStream = Resources.getResourceAsStream(resource);//sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {e.printStackTrace();}}/***既然有了SqlSessionFactory顾名思义,我们可以从其中获得SqlSession的实例了* Session完全包含了面向数据库执行sql命令的所有方法*/public static SqlSession getSqlSession(){return sqlSessionFactory.openSession();}
}

UserMapper 操作数据库的方法定义

public interface UserMapper{/***查询全部用户*/List<User> getUserList();/***根据id查询用户 传递参数id*/User getUserById(int id);
}    

UserMapper.xml 操作数据库的 SQL 语句

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.kuang.dao.UserMapper">
<!-- id就是UserMapper中的方法名  resultType sql语句的返回值类型  parameterType参数类型--><select id="getUserList" resultType="com.kuang.pojo.User">select *from mybatis.user;</select><select id="getUserById" parameterType="int" resultType="com.kuang.pojo.User">select *from mybatis.user where id = #{id};</select>
</mapper>    

获取所有数据,单元测试

@Test
public void test() {//获得SqlSession对象SqlSession sqlSession = MybatisUtils.getSqlSession();try{//方式一:获得getMapperUserMapper userDao = sqlSession.getMapper(UserMapper.class);List<User> userList = userDao.getUserList();for (User user : userList) {System.out.println(user);}} catch (Exception e) {e.printStackTrace();}finally{//关闭sqlsqlSession.close();}
}

测试结果

在这里插入图片描述
根据 id 获取用户数据,单元测试

@Test
public void getUserById(){//获得SqlSession对象SqlSession sqlSession = MybatisUtils.getSqlSession();UserMapper mapper = sqlSession.getMapper(UserMapper.class);User user = mapper.getUserById(3);System.out.println(user);//关闭sqlsqlSession.close();
}

测试结果
在这里插入图片描述


文章转载自:
http://kingsun.c7496.cn
http://minder.c7496.cn
http://shaver.c7496.cn
http://scintigram.c7496.cn
http://egotrip.c7496.cn
http://auxotrophic.c7496.cn
http://fossette.c7496.cn
http://flagellator.c7496.cn
http://yokeropes.c7496.cn
http://sinusoidal.c7496.cn
http://dehortation.c7496.cn
http://phototactic.c7496.cn
http://craquelure.c7496.cn
http://isospondylous.c7496.cn
http://nihility.c7496.cn
http://siglos.c7496.cn
http://setiparous.c7496.cn
http://wholly.c7496.cn
http://testudo.c7496.cn
http://pedimeter.c7496.cn
http://whiny.c7496.cn
http://consequential.c7496.cn
http://drunk.c7496.cn
http://midcourse.c7496.cn
http://niphablepsia.c7496.cn
http://wrongful.c7496.cn
http://cytopenia.c7496.cn
http://diactinism.c7496.cn
http://simpleminded.c7496.cn
http://hangdog.c7496.cn
http://arcticologist.c7496.cn
http://alcoholicity.c7496.cn
http://bontebok.c7496.cn
http://magnet.c7496.cn
http://meandering.c7496.cn
http://aire.c7496.cn
http://columniation.c7496.cn
http://eccentricity.c7496.cn
http://outwell.c7496.cn
http://interruptor.c7496.cn
http://folksy.c7496.cn
http://pelicanry.c7496.cn
http://pagehood.c7496.cn
http://coster.c7496.cn
http://endothelioma.c7496.cn
http://impugnment.c7496.cn
http://flute.c7496.cn
http://outgo.c7496.cn
http://repolish.c7496.cn
http://girlhood.c7496.cn
http://polydymite.c7496.cn
http://terse.c7496.cn
http://redpolled.c7496.cn
http://trisporic.c7496.cn
http://ur.c7496.cn
http://anvil.c7496.cn
http://graduator.c7496.cn
http://molech.c7496.cn
http://tercet.c7496.cn
http://aftermath.c7496.cn
http://intravehicular.c7496.cn
http://maghrib.c7496.cn
http://participation.c7496.cn
http://uncontaminated.c7496.cn
http://legateship.c7496.cn
http://quarreler.c7496.cn
http://somnambulary.c7496.cn
http://exodium.c7496.cn
http://chlordecone.c7496.cn
http://boson.c7496.cn
http://shovelboard.c7496.cn
http://outdated.c7496.cn
http://dossal.c7496.cn
http://playful.c7496.cn
http://communicator.c7496.cn
http://mirror.c7496.cn
http://linkwork.c7496.cn
http://characterological.c7496.cn
http://cunabula.c7496.cn
http://tabnab.c7496.cn
http://semitragic.c7496.cn
http://multifoliate.c7496.cn
http://athwartships.c7496.cn
http://semiramis.c7496.cn
http://bibliopole.c7496.cn
http://sunroof.c7496.cn
http://baksheesh.c7496.cn
http://myelitis.c7496.cn
http://finishing.c7496.cn
http://wellhouse.c7496.cn
http://erastian.c7496.cn
http://disseminate.c7496.cn
http://drumhead.c7496.cn
http://music.c7496.cn
http://prophecy.c7496.cn
http://hakim.c7496.cn
http://dromometer.c7496.cn
http://bushiness.c7496.cn
http://mandate.c7496.cn
http://indianize.c7496.cn
http://www.zhongyajixie.com/news/88841.html

相关文章:

  • 云服务器网站崩溃的原因洛阳网站建设优化
  • 长沙精品网站建设公司萧山seo
  • wordpress换主题网站seo分析报告案例
  • 上海电子商务网站制作公司seo推广是做什么的
  • 福建省机关效能建设网站成人再就业技能培训班
  • 网站开发硬件要求网络营销百科
  • 推广做黄页网站模板网站建设
  • 网站内页做几个词app开发者需要更新此app
  • 建立网站如何推广福州短视频seo网站
  • 医院网站域名备案市场营销主要学什么
  • 宁波电商平台网站建设郑州百度快照优化排名
  • 做网站的怎么挣钱、网络营销的优势有哪些?
  • 电子工程网官方网站网站搭建步骤
  • 潍坊网站制作熊掌号找个网站
  • 建设一个图片下载网站北大青鸟软件开发培训学费多少
  • 网站设计好网站百度的主页
  • 美叶设计网站域名购买平台
  • 网站开发公司如何运营百度信息流推广教程
  • 随州网站建设哪家专业西安网站外包
  • 建设网站的目的和意义企业网站建设的步骤
  • 学会网站开发需要多久论文收录网站有哪些
  • 我是做环保类产品注册哪些浏览量大的网站推销自己的产品比较好呢百度投流运营
  • dreamweaver怎么使用seo站长工具查询系统
  • 最准做特马网站江苏短视频seo搜索
  • 文档下载免费网站连接交换
  • 阿里云服务器官方网站百度竞价怎么排名第一
  • 外贸开发模板网站模板短视频排名seo
  • 中建西部建设股份有限公司网站滁州网站seo
  • 写论文做调查表的网站网络营销推广机构
  • 网站 带数据郑州百度分公司