码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【后端框架】MyBatis(1)


    文章目录

    • 1、MyBatis概述
      • 1-1.简介
      • 1-2.MyBatis历史
      • 1-3.为什么要使用MyBatis
      • 1-4.ORM思想的理解
    • 2、MyBatis的Hello 示例程序
      • 2-1.创建一个数据库和一个单表
      • 2-2.创建一个Java模块,示例MyBatis的Hello程序
    • 3、Mapper接口方式的mybatis的增,删,改,查实现
      • 3-1.Mapper接口编程的命名习惯
      • 3-2.Mapper接口开发有四个开发规范**必须遵守**
      • 3-3.插入记录并返回主键
      • 3-4.` ` 标签的使用
      • 3-5.注解@MapKey的使用
    • 4、MyBatis的核心配置之properties
    • 5、MyBatis的核心配置之settings
      • 5-1.所有MyBatiss的settings设置选项
    • 6、MyBatis的核心配置之typeAliases
    • 7、MyBatis的核心配置之typeHandlers
    • 8、MyBatis的核心配置之environments
      • 8-1、environments 标签说明
      • 8-2、transactionManager 标签说明
      • 8-3、dataSource 标签说明
    • 9、MyBatis的核心配置之databaseIdProvider
      • 9-1、databaseId测试
    • 10、MyBatis的核心配置之Mapper
    • 11、MyBatis的参数传递
      • 11-1.一个普通数据类型
      • 11-2.多个普通数据类型
        • @Param注解命名参数
      • 11-3.传递一个Map对象作为参数
      • 11-4.一个Pojo数据类型
      • 11-5.模糊查询
      • 11-6.#{}和${}的区别
        • MySQL的字符串拼接,concat函数实现。

    1、MyBatis概述

    1-1.简介

    1、MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。
    2、MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
    3、MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

    1-2.MyBatis历史

    1、原来是Apache有一个开源的项目iBatis, 2010年6月这个项目由Apache software foundation 迁移到了Google Code,随着开发团队转投Google Code旗下,ibatis3.x正式更名为MyBatis ,代码于2013年11月迁移到了Github上(https://github.com/mybatis/mybatis-3)。

    2、iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Object(DAO)。

    1-3.为什么要使用MyBatis

    1、MyBatis是一个半自动化的持久化层ORM框架。
    2、jdbc编程—当我们使用jdbc持久化的时候,sql语句被硬编码到java代码中。这样耦合度太高。代码不易于维护。在实际项目开发中会经常添加sql或者修改sql,这样我们就只能到java代码中去修改。
    3、Hibernate和JPA,长难复杂的SQL,对于Hibernate而言处理也不容易。内部自动生产的SQL,不容易做特殊优化。Hibernate是基于全映射的全自动化的ORM框架,javaBean存在大量字段时无法只映射部分字段。导致数据库性能下降。
    4、对开发人员而言,核心sql还是需要自己优化。sql和java编码分开,功能边界清晰,一个专注业务、一个专注数据。可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO映射成数据库中的记录。成为业务代码+底层数据库的媒介。

    1-4.ORM思想的理解

    在这里插入图片描述

    2、MyBatis的Hello 示例程序

    2-1.创建一个数据库和一个单表

    drop database if exists mybatis;
    create database mybatis;
    use mybatis;
    ##############################################################################
    ################################### 单表 ######################################
    ##############################################################################
    ## 创建单表
    create table t_user(
    	`id` int primary key auto_increment,
    	`last_name`	varchar(50),
    	`sex` int
    );
    
    insert into t_user(`last_name`,`sex`) values('wzg168',1);
    select * from t_user;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2-2.创建一个Java模块,示例MyBatis的Hello程序

    需要导入的jar包有:
    在这里插入图片描述

    • 编写javaBean
    public class User {
       
        private Integer id;
        private String lastName;
        private Integer sex;
    }
    
    public Interface User {
       
        public User queryUserById(Integer id);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 编写对应的Sql的配置文件UserMapper.xml配置文件
    
    DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <mapper namespace="com.atguigu.dao.UserMapper">
        
        <select id="queryUserById" resultType="com.atguigu.pojo.User">
            select id,last_name lastName,sex from t_user where id = #{id}
        select>
    mapper>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 创建Mybatis的核心配置文件 mybatis-config.xml配置文件:
    
    DOCTYPE configuration
            PUBLIC "-//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"/>
                    <property name="username" value="root"/>
                    <property name="password" value="root"/>
                dataSource>
            environment>
        environments>
        
        <mappers>
            <mapper resource="com/atguigu/dao/UserMapper.xml"/>
        mappers>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 编写测试的代码:
    @Test
    public void test1() throws Exception{
       
        // 通过 xml 配置文件,创建SqlSessionFactory对象
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    通关算法题之 ⌈数组⌋ 下
    在Node.js中,什么是中间件(middleware)?它们的作用是什么?
    SpringCloud CircuitBreak, 熔断限流
    尚硅谷Vue系列教程学习笔记(1)
    go-cqhttp帮助文档
    vulnhub blogger: 1
    【oceanbase】安装ocp,ocp部署oceanbase
    go语言的高级特性
    支付宝沙箱支付
    AVT Prosilica GC Vision Cameras 相机视觉说明使用安装。具体详情内容可参看PDF目录内容。
  • 原文地址:https://blog.csdn.net/qq_48687155/article/details/126880914
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号