我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【MyBatis】初识这一优秀的持久层框架

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【MyBatis】初识这一优秀的持久层框架

学习目录

前言

传统的JDBC操作数据库都是通过写一个java类,在类中调用接口下的API执行相应的SQL,存在大量的硬编码。试想,若是开发一个日活度高的系统,那SQL的变动的非常大,就要我们去相应的类中修改Java代码,特别是进行查询操作时需要我们手动将结果集封装到实体类中,造成后期维护压力山大
总而言之,缺点多多

MyBatis简介

在这里插入图片描述
mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句
最后mybatis框架执行sql并将结果映射为java对象并返回。采用ORM思想解决了实体和数据库映射的问题,对jdbc进行了封装,屏蔽了jdbc api底层访问细节,使我们不用与jdbc api打交道,就可以完成对数据库的持久化操作
MyBatis几乎免除了所有的JDBC代码
在这里插入图片描述

快速入门

下面的配置文件在MyBatis的官网里都有,自己去复制过来粘贴到IDEA中更改对应的信息即可,我写出来的目的是为了保证文章的顺序流畅(大家莫烦~)
1.导入MyBatis相关坐标

<dependency>    <groupId>mysql</groupId>    <artifactId>mysql-connector-java</artifactId>    <version>8.0.29</version></dependency><dependency>    <groupId>org.mybatis</groupId>    <artifactId>mybatis</artifactId>    <version>3.5.10</version></dependency>

2.数据库中建立相应的数据表,并编写一个表中字段对应的(Brand)实体类
在这里插入图片描述
3.编写BrandMapper映射文件

<?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="mapper.BrandMapper">//Mapper代理开发://定义与SQL映射文件同名的Mapper接口,//并且将Mapper接口和SQL映射文件放置在同一目录下//设置SQL映射文件的namespace属性为Mapper接口全限定名//在Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致    <select id="selAll" resultType="sqlTest.Brand">        select * from mybatis;    </select></mapper>

4.编写封装查询结果对象的接口

public interface BrandMapper { public List<Brand> selAll(); }

5编写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>    <typeAliases>            <package name="sqlTest"/>    </typeAliases>    <environments default="development">        <environment id="development">            <transactionManager type="JDBC"/>            <dataSource type="POOLED">                <!--数据库连接信息-->                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>                <property name="url" value="jdbc:mysql://localhost:3306/pyq?useSSL=false"/>                <property name="username" value="root"/>                <property name="password" value="284650"/>            </dataSource>        </environment>    </environments>    <mappers>        <mapper resource="mapper/userMapper.xml"/>        <mapper resource="mapper/BrandMapper.xml"/>    </mappers></configuration>

6.编写测试类,通过MyBatis实现查询功能

public class MybatisDemo3 {    public static void main(String[] args) throws IOException {        //加载mybatis的核心配置文件,获取sqlSessionFactory        String resource = "mybatis-config.xml";        InputStream inputStream = Resources.getResourceAsStream(resource);        //获取sqlSession工厂对象        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);        //获取sqlSession对象,来执行sql        SqlSession sqlSession = sqlSessionFactory.openSession();        //获取BrandMapper接口的代理对象        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);        List<Brand> brands =brandMapper.selAll();        System.out.println(brands);        //释放资源        sqlSession.close();    }}

一顿操作下来好像也没有简单多少,其实不然,初次编写的配置文件都是持久化的属性,以后的变更只需要在接口里写出相应的方法即可,避免了大量的硬编码

映射文件

在这里插入图片描述

sql片段与resultMap(🏳️‍🌈)

在进行查询操作时,为了解决SQL表中字段名称和实体类中的属性名不一致导致的不能自动封装(查出为null)的问题,我们可以通过"起别名"也可以通过SQL片段来对查询的数据进行定义修改,统一重复的操作
比如,在遇到表中的字段名称不符合实体类中驼峰命名的规范时、要对查询的数据进行范围限定时都可以通过sql片段来实现,就像这样:

 <sql id="cut">         bracd_name as bracdName,company_name as compantName </sql>    <select id="selAll" resultType="sqlTest.Brand">        select <include refid="cut"/> from mybatis;</select>

通过SQL片段实现了所谓的范围查询,单表重复起别名工作的统一,但是针对多次不同的查询范围我们需要多次定义SQL片段(不灵活),这也不是一件简单的事
于是resultMap帮我们解决了这个问题:

    <resultMap id="rm" type="brand">        <result column="bracd_name" property="bracdName"/>        <result column="company_name" property="companyName"/>    resultMap>    <select id="selAll" resultMap="rm">        select * from mybatis;    select>

通过id来设置唯一标识,type来指定映射类型,把表的列名column和实体类的属性名通过result进行映射,在我们的SQL中直接查询所有即可,进行不同的查询操作也不需要重复定义片段或者取别名,就变得十分简单

MyBatis的增删改查

1.添加操作

编写Mapper接口,写出添加的方法:

     void add(Brand brand);

配置SQL映射文件:

<mapper>    <insert id="add" >        insert into mybatis(bracd_name,company_name,ordered,description,status)        values (#{bracdName},#{companyName},#{ordered},#{description},#{status});    insert>mapper>

执行方法:

 SqlSession sqlSession = sqlSessionFactory.openSession();  BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);  brandMapper.add(brand);

2.修改操作

编写Mapper接口,写出修改的方法:

void update(Brand brand);

编写映射文件:

    <update id="update" parameterType="sqlTest.Brand">        update mybatis set bracd_name=#{bracdName},company_name=#{companyName},ordered=#{ordered},description=#{description},status=#{status}    update>

执行方法:

 SqlSession sqlSession = sqlSessionFactory.openSession();  BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class); int count= brandMapper.update(brand);

3.删除操作

编写Mapper接口,写出删除方法:

     void deleteid(Brand brand);

编写映射文件:

    <delete id="deleteid" parameterType="brand">            delete from mybatis where id=#{id}    delete>

执行方法:

 SqlSession sqlSession = sqlSessionFactory.openSession();  BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class); int count= brandMapper.deleteid(id);

以上就是对MyBtias的初识,后面还有很多高级功能等待整理

来源地址:https://blog.csdn.net/weixin_57535055/article/details/125739267

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【MyBatis】初识这一优秀的持久层框架

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

踏上持久层开发的巅峰:掌握 Hibernate 框架的知识点

Hibernate 作为 Java 持久层开发框架的佼佼者,以其强大的功能和良好的性能,备受开发者们的青睐。本文通过对 Hibernate 框架知识点的深入剖析,帮助读者掌握持久层开发的精髓,助力项目开发的成功。
踏上持久层开发的巅峰:掌握 Hibernate 框架的知识点
2024-02-13

洞悉 Hibernate 框架的知识体系,成为持久层开发的专家

Hibernate 框架是持久层开发的常用工具,它提供了对 Java 对象和数据库之间的自动映射,简化了数据库操作。本文将介绍 Hibernate 框架的知识体系,帮助读者成为持久层开发的专家。
洞悉 Hibernate 框架的知识体系,成为持久层开发的专家
2024-02-14

揭秘 Hibernate 框架的知识点,掌握持久层开发的核心奥秘

Hibernate 框架作为一款备受欢迎的持久层开发框架,助力开发者轻松构建持久层,本文将揭开 Hibernate 框架的神秘面纱,为您奉上核心知识点和演示代码,助您掌握持久层开发的核心奥秘。
揭秘 Hibernate 框架的知识点,掌握持久层开发的核心奥秘
2024-02-14

Java JPA 初学者指南:轻松理解持久化框架的基础知识

,帮助您快速掌握 JPA 的核心概念和应用方法。
Java JPA 初学者指南:轻松理解持久化框架的基础知识
2024-02-13

编程热搜

目录