5. MyBatis


1. 概述

1.1 MyBatis概念

在这里插入图片描述

1.2 JDBC缺点

在这里插入图片描述

1.3 MyBatis优化

在这里插入图片描述

2. MyBatis快速入门

在这里插入图片描述
在这里插入图片描述

create database mybatis;
use mybatis;

drop table if exists tb_user;

create table tb_user(
	id int primary key auto_increment,
	username varchar(20),
	password varchar(20),
	gender char(1),
	addr varchar(30)
);



INSERT INTO tb_user VALUES (1, 'zhangsan', '123', '男', '北京');
INSERT INTO tb_user VALUES (2, '李四', '234', '女', '天津');
INSERT INTO tb_user VALUES (3, '王五', '11', '男', '西安');

在这里插入图片描述

<dependencies>

        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>
        <!-- mysql 驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.32</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>

        <!-- 添加slf4j日志api -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.20</version>
        </dependency>
        <!-- 添加logback-classic依赖 -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
        <!-- 添加logback-core依赖 -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.3</version>
        </dependency>

    </dependencies>

在这里插入图片描述

<?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>
    <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://mybatis?useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--加载sql映射文件-->
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

在这里插入图片描述

<?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="test">
    <select id="selectAll" resultType="com.buluchacha.pojo.User">
        select * from tb_user;
    </select>
</mapper>

在这里插入图片描述

public class User {
    // alt+鼠标左键:整列编辑
    // ctrl+alt+l:自动格式化
    private String id;
    private String username;
    private String password;
    private String gender;
    private String addr;

	//getter and setter ...
}

在这里插入图片描述

/**
 * Mybatis 快速入门代码
 */
public class MyBatisDemo {

    public static void main(String[] args) throws IOException {

        //1. 加载mybatis的核心配置文件,获取 SqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2. 获取SqlSession对象,用它来执行sql
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //3. 执行sql
        List<User> users = sqlSession.selectList("test.selectAll");
        System.out.println(users);

        //4. 释放资源
        sqlSession.close();

    }
}

在这里插入图片描述
在这里插入图片描述

3. Mapper代理开发

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
a
在这里插入图片描述
案例代码实现:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. MyBatis核心配置文件

在这里插入图片描述

4.1 多环境配置

在这里插入图片描述

4.2 类型别名

在这里插入图片描述

5. 配置文件完成增删改查

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

-- 删除tb_brand表
drop table if exists tb_brand;
-- 创建tb_brand表
create table tb_brand
(
    -- id 主键
    id           int primary key auto_increment,
    -- 品牌名称
    brand_name   varchar(20),
    -- 企业名称
    company_name varchar(20),
    -- 排序字段
    ordered      int,
    -- 描述信息
    description  varchar(100),
    -- 状态:0:禁用  1:启用
    status       int
);
-- 添加数据
insert into tb_brand (brand_name, company_name, ordered, description, status)
values ('三只松鼠', '三只松鼠股份有限公司', 5, '好吃不上火', 0),
       ('华为', '华为技术有限公司', 100, '华为致力于把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界', 1),
       ('小米', '小米科技有限公司', 50, 'are you ok', 1);


SELECT * FROM tb_brand;

在这里插入图片描述

public class Brand {
    // id 主键
    private Integer id;
    // 品牌名称
    private String brandName;
    // 企业名称
    private String companyName;
    // 排序字段
    private Integer ordered;
    // 描述信息
    private String description;
    // 状态:0:禁用  1:启用
    private Integer status;

	// getter and setter...
}

public class MyBatisTest {
}

在这里插入图片描述

5.1 查询

5.1.1 查询所有数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.1.2 查看详情

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.1.3 多条件查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.1.4 多条件-动态条件查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.1.5 单条件-动态条件查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.2 添加数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.3 修改数据

5.3.1 修改全部字段

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.3.2 修改动态字段

在这里插入图片描述
上述5.3.1已经提及

5.4 删除数据

5.4.1 删除一个

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.4.2 批量删除

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6. MyBatis参数传递

在这里插入图片描述

6.1 多个参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.2 单个参数

在这里插入图片描述

7. 注解完成增删改查

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 当实体类的属性名和表中的字段名不一致时,可以使用MyBatis的ResultMap来进行映射。在ResultMap中可以通过定义<result>元素来指定属性和字段的对应关系。 例如,如果实体类中的属性名为userName,而表中的字段名为user_name,可以在ResultMap中这样进行映射: ``` <resultMap id="userResultMap" type="User"> <result column="user_name" property="userName"/> </resultMap> ``` 2. Dao接口的工作原理是,定义Dao接口及其方法,然后通过MyBatis框架自动生成对应的实现类,实现类会自动调用框架内部的SQL执行引擎进行数据库操作。 Dao接口里的方法,参数不同时,方法可以重载,但需要注意方法名不能相同。 3. MyBatis的接口绑定是指将Mapper接口与XML映射文件或注解绑定在一起,使得Mapper接口的方法能够直接调用XML映射文件或注解中定义的SQL语句。 MyBatis的接口绑定有三种实现方式: - XML映射文件 - 注解 - Mapper接口方法名与SQL语句映射 4. MyBatis实现一对一关联有两种方式: - 嵌套结果映射 - 延迟加载 嵌套结果映射是指在查询时,通过关联查询将两个表中的数据一起查询出来,并通过MyBatis的ResultMap进行映射。实现方式较为简单,但查询效率较低。 延迟加载是指在查询时只查询主表的数据,然后通过在需要使用关联表数据时进行再次查询,以达到减少查询数据量和提高查询效率的目的。MyBatis的实现原理是在查询时只查询主表的数据,然后生成一个代理对象,在需要使用关联表数据时再进行查询并填充代理对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值