首页 > 其他分享 >MyBatis框架

MyBatis框架

时间:2024-03-18 15:55:57浏览次数:26  
标签:xml 框架 对象 mybatis SqlSession SQL MyBatis

一、什么是mybatis?

MyBatis 是一款优秀的半自动的ORM持久层框架,它支持自定义 SQL、存储过程以及高级映射。

MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。

MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录

二、MyBaits与JDBC

JDBC核心对象

DriverManager,数据库驱动管理对象
Connection,数据库连接对象
Statement | PrepareStatement ,操作数据库SQL语句对象
ResultSet,结果集对象

MyBaits核心对象

SqlSession对象,该对象包含了执行SQL语句的所有方法,例如JDBC里面Connection

Executor接口,将传递过来的参数动态生成SQL语句,负责查询缓存。

MappedStatement对象,该对象负责对SQL封装,用于存储需要映射的SQL语句及参数等信息

ResultHandler对象,用户返回结果集合,封装成最红想要的数据类型,可以自定义返回类型

三、MyBaits执行流程

 

mybatis核心组件:
①SqlSessionFactoryBuilder:构建SqlSessionFactory的构建器,采用了分布构建方式进行构建
②SqlSessionFactory:生产SqlSession的工厂(工厂设计模式),在项目的生命周期应该以单例的形式进行存在
③SqlSession:mybatis围绕SqlSession进行工作,
提供:发送执行sql语句;
   获取mapper映射器;
控制事务
④mapper映射器:接口+映射文件(注解或者xml)xml常用

注意:在xml中&是特殊符号,有具体的语义,要使用&表示连接

mybatis不支持方法重载
因为MyBatis动态代理寻找策略是:全限定名+方法名,不涉及参数,所以MyBatis不支持方法重载。
方法重载:方法名相同,参数列表不同

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核心配置文件--> <configuration> <!--通过 properties文件进行配置datasource数据源--> <properties resource="datasource.properties"/>

<!--settings:会改变mybatis的运行时行为 logImpl:指定mybatis所有日志的具体实现,未指定时将自动查找 mapUnderscoreToCamelCase:驼峰映射 autoMapperBehavior:指定mybatis应如何自动映射列到字段或属性 (NONE:关闭自动映射;PARTIAL只会自动映射没有定义嵌套结果映射的字段;FULL会自动映射任何).....--> <settings> <!-- 开启驼峰映射 默认是关闭的--> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings>

<!--类型别名:不区分大小写--> <typeAliases> <!-- 针对类型单独进行别名配置--> <typeAlias type="com.monster.pojo.Student" alias="student"/> <!-- 位于指定包下指定别名,别名即为类的简单名称(mybatis 的别名不区分大小写)--> <package name="com.monster.mapper"/> <package name="com.monster.pojo"/> </typeAliases> <!--类型处理器:处理Java对象属性和数据表字段类型不一致的类型转换 BooleanTypeHandler FloatTypeHandler BigDecimalTypeHandler EnumTypeHandler: 数据库兼容的字节流类型【VARCHAR 或任何兼容的字符串类型,用来存储枚举的名称(而不是索引序数值)】 .....等等 --> <typeHandlers> <!-- 单独加载--> <typeHandler handler="com.monster.typehandler.GenderTypeHandler" javaType="com.monster.enums.Gender"/> <!--包加载-->    <!-- <package name="com.monster.typehandler"/>--> </typeHandlers>

<!-- 环境配置 --> <environments default="development"> <environment id="development"> <!-- 事务管理器 --> <transactionManager type="JDBC"/> <!-- 数据源 --> <dataSource type="POOLED"> <!-- 连接驱动--> <property name="driver" value="${driverClassName}"/> <!-- 在xml中&是特殊符号,有具体的语义,要使用&amp表示连接--> <property name="url" value="jdbc:mysql://localhost:3306/studentmanage?userUnicode=true&amp;characterEncoding=UTF8"/> <property name="username" value="longhj"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments>

<!-- 映射器 --> <mappers> <!--<mapper resource="com/monster/mapper/StudentMapper.xml"/>--> <package name="com/monster/mapper"/> </mappers>

</configuration>

 



标签:xml,框架,对象,mybatis,SqlSession,SQL,MyBatis
From: https://www.cnblogs.com/longhj/p/17939902

相关文章

  • Spring6如此厉害的框架到底包含哪些内容
    源码下面无秘密,这是程序员的口头禅。对于强大而且设计优秀的Spring框架也是这样的,在基础代码层层堆叠之下,Spring成为了一个非常流行的框架。Spring6框架的开发者们通过层层设计和封装打造了一个功能如此之多而兼容性非常好的框架。这也是解构这个框架难点,而通过理解整个框架功能......
  • 在Tomcat下部署若依框架前后端分离SpringBoot+Vue3项目
     一、后端打包在ruoyi项目的bin目录下执行package.bat打包Web工程,生成war/jar包文件。然后会在项目下生成target文件夹包含war或jar1.jar包使用命令行执行:java–jarruoyi-admin.jar或者执行脚本:ruoyi/bin/run.bat注意事项【jar包部署,需要使用nginx代理,前端项目中的代理仅......
  • androidui开发框架,,三级缓存框架问题你都了解了吗
    面经分享第一部分是我前端面试的经验总结,第二部分是我认为比较有思考空间的题目经验总结一份漂亮的简历,需要包括以下部分(排版由上而下)个人亮点(专精领域,个人博客,开源项目)教育经历(毕业院校,在校经历、荣誉)工作经历(实习)项目经历专业技能扎实的前端基础,比如你知道<......
  • mybatis-plus-extension 百万数据多行插入,几秒入库
    百万数据多行插入,几秒入库最近遇到过一个导入大批量数据耗时过长的问题,查了一下资料,找到一个mybatis-puls的一个插入,大大提高了入库效率,这里给大家分析分析。先介绍一下,本次测试用例是MVC三层结构的例子,大概结构如下:pom.xmlcom.tring.ysyn.entity.Pull.java//数据库实体类c......
  • MyBatisPlus 之四:MP 的乐观锁和逻辑删除、分组、排序、链式的实现步骤
    乐观锁乐观锁是相对悲观锁而言的,乐观锁假设数据一般情况不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果冲突,则返回给用户异常信息,让用户决定如何去做。乐观锁适用于读多写少的场景,这样可以提高程序的吞吐量。乐观锁采取了更加宽松的加......
  • ASP.NET-框架分类与详解
    一、ASP.NET框架概述ASP.NET是由微软公司推出的一种基于.NET框架的服务器端Web应用程序开发技术。它提供了丰富的工具和框架,用于开发各种规模的Web应用程序和服务。ASP.NET具有高度的灵活性和可扩展性,适用于不同规模和复杂度的项目。在ASP.NET的生态系统中,有许多不同的框......
  • 疫苗接种管理系统(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图 项目介绍疫苗接种管理系统是一种旨在提高疫苗注射效率、确保接种记录准确性的信息系统。在全球疫情常态化防控的背景下,此类系统对于实现疫苗的快速分发、接种情况追......
  • 养老公寓管理系统(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图 项目介绍随着社会老龄化的加速,养老服务成为社会关注的焦点。养老公寓作为服务老年人群的重要居住形式,其管理水平直接影响到老年人的生活质量和家属的满意度。一个功......
  • Mybatis-plus构建wrapper条件时出现索引越界异常Caused by: org.apache.ibatis.except
    项目场景:学习springboot整合mybatis-plus时通过构建器执行相关操作@AutowiredBookMappermapper;@Testvoidtest(){QueryWrapper<Book>wrapper=newQueryWrapper<>();wrapper.select("id","name","press")//只查询前三......
  • web后端-java框架-spring Boot
    springBootweb入门:1)创建springboot工程此处我使用的jdk版本为11,在选择版本时,如果服务器URL为https://start.spring.io ,那么java下拉选项中只有17或者21,因此将服务器URL为https://start.aliyun.com\即可点击下一步,将springWeb依赖添加进去。HTTP协议:1)请求协议: 2)......