JavaWeb学习——MyBatis基础学习(4)

MyBatis详解

    • 总体思路
    • Mapper代理开发
        • 1,2,
        • 3,
        • 4,获取Mapper接口代理对象并调用对应方法完成sql执行
    • MyBatis核心配置文件
    • (配置文件完成)增删改查
        • 查询
          • 查询所有
          • 查看详情
          • 条件查询
            • 多条件查询
            • 单条件查询
        • 添加
          • 基础添加
          • 主键返回
        • 修改
          • 修改全部字段
          • 修改动态字段
        • 删除
          • 删除一个
          • 批量删除

接上篇MyBatis快速入门

总体思路

JavaWeb学习——MyBatis基础学习(4)_第1张图片

Mapper代理开发

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

JavaWeb学习——MyBatis基础学习(4)_第2张图片

1,2,

3,

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

JavaWeb学习——MyBatis基础学习(4)_第3张图片

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

MyBatis核心配置文件

JavaWeb学习——MyBatis基础学习(4)_第4张图片

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

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

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

在xml中使用resultmap来编写sql


DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.itheima.mapper.BrandMapper">
    
    
    
    
    
    <resultMap id="select_all" type="com.itheima.pojo.Brand">
        <result column="brand_name" property="brandName"/>
        <result column="company_name" property="companyName"/>
    resultMap>
    
    <select id="selectAll" resultMap="select_all">
        select *
        from tb_brand;
    select>
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
mapper>

查询

查询所有

步骤:

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

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

JavaWeb学习——MyBatis基础学习(4)_第5张图片

JavaWeb学习——MyBatis基础学习(4)_第6张图片
JavaWeb学习——MyBatis基础学习(4)_第7张图片
JavaWeb学习——MyBatis基础学习(4)_第8张图片特殊字符处理,如“<”,可以用CDTATA区
JavaWeb学习——MyBatis基础学习(4)_第9张图片
也可以用转义字符(与web相同:<<

条件查询
多条件查询

相当于输入框有多个筛选栏
JavaWeb学习——MyBatis基础学习(4)_第10张图片

单条件查询

书写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 selectByConditionSingle(Brand brand);
然后到Test文件里封装对象

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

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

添加

基础添加

JavaWeb学习——MyBatis基础学习(4)_第11张图片
老样子,写接口,写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即可

JavaWeb学习——MyBatis基础学习(4)_第12张图片

修改

修改全部字段

也是这个套路
JavaWeb学习——MyBatis基础学习(4)_第13张图片JavaWeb学习——MyBatis基础学习(4)_第14张图片JavaWeb学习——MyBatis基础学习(4)_第15张图片

修改动态字段

比如用户只是修改其中部分,我们就要用动态sql
和前面查询的动态sql类似,我们也用替代set并添加来判断条件
JavaWeb学习——MyBatis基础学习(4)_第16张图片
JavaWeb学习——MyBatis基础学习(4)_第17张图片

删除

删除一个

老样子

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

JavaWeb学习——MyBatis基础学习(4)_第18张图片

批量删除

那就是搞一个id数组一块儿接收
JavaWeb学习——MyBatis基础学习(4)_第19张图片
JavaWeb学习——MyBatis基础学习(4)_第20张图片JavaWeb学习——MyBatis基础学习(4)_第21张图片

你可能感兴趣的:(JavaWeb,java,后端,javaweb)