IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> JavaWeb学习——MyBatis基础学习(4) -> 正文阅读

[Java知识库]JavaWeb学习——MyBatis基础学习(4)

接上篇MyBatis快速入门

总体思路

在这里插入图片描述

Mapper代理开发

目的:解决原生方式中的硬编码,简化后期执行sql

在这里插入图片描述

1,2,

在这里插入图片描述

3,

在mapper中定义方法,方法名就是sql映射文件中的sql语句的id并保存参数类型和返回值一致

在这里插入图片描述

4,获取Mapper接口代理对象并调用对应方法完成sql执行

在这里插入图片描述

MyBatis核心配置文件

在这里插入图片描述

<environments>配置数据库连接环境信息,可以配置多个environment,通过default属性切换不同的environment

(配置文件完成)增删改查

三步:编写接口方法,编写sql,执行方法

在xml中使用resultmap来编写sql

<?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">
<!--namespace:下面改一个名字-->
<mapper namespace="com.itheima.mapper.BrandMapper">
    <!--    id为下面select语句的唯一标识;resultType为返回结果值,需要我们包装成pojo类型-->
    <!--    statement-->
    <!--    数据库表的字段名称实体类的属性名称不一样,则不能自动封装数据-->
    <!--    但是可以在sql语句里起别名来避免-->
    <!--    resultmap可以给字段名起映射-->
    <resultMap id="select_all" type="com.itheima.pojo.Brand">
        <result column="brand_name" property="brandName"/>
        <result column="company_name" property="companyName"/>
    </resultMap>
    <!--    下面的resultType改成resultMap来作选择-->
    <select id="selectAll" resultMap="select_all">
        select *
        from tb_brand;
    </select>
    <!--    <sql id="BrandAll">-->
    <!--        id, brand_name as brandName, company_name as companyName, ordered, description, status-->
    <!--    </sql>-->
    <!--    <select id="selectAll" resultType="com.itheima.pojo.Brand">-->
    <!--        select-->
    <!--        <include refid="BrandAll"/>-->
    <!--        from tb_brand;-->
    <!--    </select>-->
    <!--    <select id="selectAll" resultType="com.itheima.pojo.Brand">-->
    <!--        select id, brand_name as brandName, company_name as companyName, ordered, description, status-->
    <!--        from tb_brand;-->
    <!--    </select>-->
    <!--    <select id="selectAll" resultType="com.itheima.pojo.Brand">-->
    <!--        select *-->
    <!--        from tb_brand;-->
    <!--    </select>-->
</mapper>

查询

查询所有

步骤:

  1. 编写接口方法:Mapper接口;参数();结果List< Brand>
  2. 编写sql语句:SQL映射文件
执行方法:测试
查看详情

和上面一样,只是有参数而已,而且参数是行id(int)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述特殊字符处理,如“<”,可以用CDTATA区
在这里插入图片描述
也可以用转义字符(与web相同:<&lt;

条件查询
多条件查询

相当于输入框有多个筛选栏
在这里插入图片描述

单条件查询

书写sql时可以采用switch case模式

<select id="selectByConditionSingle" resultMap="differences">
        select *
        from tb_brand
        <where>
            <choose>
                <when test="status!=null">
                    status=#{status}
                </when>
                <when test="companyName!=null and companyName!=''">
                    company_name like #{companyName}
                </when>
                <when test="brandName!=null and brandName!=''">
                    brand_name like #{brandName}
                </when>
            </choose>
        </where>
    </select>

但是要单条件查询的话注解就不是很好用了,所有需要采用封装
在接口里写入
List<Brand> selectByConditionSingle(Brand brand);
然后到Test文件里封装对象

Brand brand = new Brand();
brand.setStatus(status);
brand.setCompanyName(companyName);
brand.setBrandName(brandName);

然后修改执行方法
List<Brand> condition = brandMapper.selectByConditionSingle(brand);
System.out.println(condition);
即可输出

添加

基础添加

在这里插入图片描述
老样子,写接口,写sql,调用方法
接口

void add(Brand brand);
<!--    添加-->
    <insert id="add">
        insert into tb_brand (brand_name, company_name, ordered, description, status)
        values (#{brandName}, #{companyName}, #{ordered}, #{description}, #{status});
    </insert>
//4.1.执行方法
        brandMapper.add(brand);
        //4.2.提交事务
        sqlSession.commit();//手动提交事务

也可以在第二步默认开事务

        SqlSession sqlSession = sqlSessionFactory.openSession(true);
主键返回

有时候需要在提交后收到添加字段的id值,这时候可以在xml里给sql语句添加两个属性:useGeneratedKeys="true" keyProperty="id"然后再在调用方法后面输出id即可

在这里插入图片描述

修改

修改全部字段

也是这个套路
在这里插入图片描述在这里插入图片描述在这里插入图片描述

修改动态字段

比如用户只是修改其中部分,我们就要用动态sql
和前面查询的动态sql类似,我们也用<set>替代set并添加<if>来判断条件
在这里插入图片描述
在这里插入图片描述

删除

删除一个

老样子

<delete id="deleteById">
        delete
        from tb_brand
        where id = #{id};
    </delete>

在这里插入图片描述

批量删除

那就是搞一个id数组一块儿接收
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-07 13:35:18  更:2022-02-07 13:35:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:09:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码