MyBatis从入门到“入土“

 💕喜欢的朋友可以关注一下,下次更新不迷路!💕(●'◡'●)

目录

一、Mybatis为何物?👌

二、快速入门🤣

 1、新建项目😊

2、数据库建表😊

3、导入依赖的jar包😊

4、根据表建pojo类😊

5、编写mapper映射文件(编写sql)😊

 6、编写全局配置文件(主要是配置数据源信息)😊

7、测试😊

三、快速入土😢

代理开发😂

1、定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下。

2、设置SQL映射文件的namespace属性为Mapper接口全限定名。

3、在Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致。

4、通过SqlSession的getMapper方法获取Mapper接口的代理对象,并调用对应方法。

 Mybatis核心配置--mybatis-config.xml😂

1、可以连接多个数据库

 2、配置标签

案例😂

1、 建表

2、实体类

3、测试类

4、mybatisx插件

根据方法自动生成mapper映射文件

 5、查询(查询所有)

6、查看详情(根据id查询一个)

7、条件查询

 根据参数接收(无参/一个参数/两个参数/)

散装参数(模糊匹配)

对象参数

map参数

 动态条件查询(用户输入条件时,是否所有条件都会填写。不是,哥们🤣👌)

 使用if,choose,when设定条件

 8、添加

 主键返回

 9、修改

修改全部字段

 修改动态字段

10、删除

单个删除

批量删除

 注解开发😍


 

一、Mybatis为何物?👌

🤦‍♂️恶臭的描述: MyBatis 是一个优秀的持久层框架,它对JDBC的操作数据库的过程进行封装,让开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等JDBC繁琐的过程代码。

❤️舒服的描述:

不需要手动编写 JDBC 代码来执行 SQL 语句,也不需要处理数据库连接的创建和关闭。

所有的数据库操作都被抽象成了简单的 Mapper 方法调用。 (伟大无需多言!)

Mybatis中文官网

二、快速入门🤣

 前言:

完整结构图

只需要通过如下几个步骤,即可用mybatis快速进行持久层的开发

  1. 编写全局配置文件
  2. 编写mapper映射文件
  3. 加载全局配置文件,生成SqlSessionFactory
  4. 创建SqlSession,调用mapper映射文件中的SQL语句来执行CRUD操作

🤣话不多说,直接Mybatis启动!🤣

 1、新建项目😊

java8

2、数据库建表😊

3、导入依赖的jar包😊

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.itqingshui</groupId>
    <artifactId>mybatis-test1</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>Archetype - mybatis-test1</name>
    <url>http://maven.apache.org</url>

    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.21</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.30</version>
        </dependency>
    </dependencies>

       <build>
       <plugins>
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-compiler-plugin</artifactId>
               <version>3.8.1</version>
               <configuration>
                   <source>1.8</source> <!-- 替换为你的JDK版本 -->
                   <target>1.8</target> <!-- 替换为你的JDK版本 -->
               </configuration>
           </plugin>
       </plugins>
   </build>

</project>

4、根据表建pojo类😊

package pojo;

import lombok.*;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Student{
    private Integer id;
    private String name;
    private Integer score;
    private Integer age;
    private Integer gender;
}
@Getter
@Setter:省略set,get方法。
@NoArgsConstructor:建立一个无参构造器。
@AllArgsConstructor:建立一个全参构造器。
@ToString:建立一个tostring方法。

5、编写mapper映射文件(编写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">
<mapper namespace="pojo.StudentMapper">
    <select id="findAll" resultType="pojo.Student">
        select * from student
    </select>

    <insert id="insert" parameterType="pojo.Student">
        insert into student(name,gender,age,score) values(#{name},#{gender},#{age},#{score})
    </insert>

    <delete id="delete" parameterType="int">
        delete from student where id=#{id}
    </delete>

    <update id="update" parameterType="pojo.Student">
        update student set name=#{name},gender=#{gender},age=#{age},score=#{score} where id=#{id}
    </update>

</mapper>

 6、编写全局配置文件(主要是配置数据源信息)😊

resources包下 

<?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.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/ssm?useSSL=false&amp;serverTimezone=UTC"/>
                <property name="username" value="lovertx"/>
                <property name="password" value="1234567"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!-- 加载编写的SQL语句 -->
        <mapper resource="StudentMapper.xml"/>
    </mappers>
</configuration>

7、测试😊

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import pojo.Student;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;


public class MybatisDemo {
    public static void main(String[] args) throws IOException, ClassNotFoundException {

        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        SqlSession sqlSession = sqlSessionFactory.openSession();

        List<Student> student = sqlSession.selectList("pojo.StudentMapper.findAll");

        for (Student s : student){
            System.out.println(s);
        }
        sqlSession.close();
    }
}

三、快速入土😢

代理开发😂

对于

  List<Student> student = sqlSession.selectList("pojo.StudentMapper.findAll");

目的:

解决原生方式中的硬编码。

简化后期执行SQL

 

1、定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下。

在resources包下创建mapper包并放入StudentMapper.xml

2、设置SQL映射文件的namespace属性为Mapper接口全限定名。

<mapper namespace="pojo.StudentMapper">

改为 

<mapper namespace="mapper.StudentMapper">

3、在Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致。

StudentMapper中 

package mapper;

import pojo.Student;

import java.util.List;

public interface StudentMapper {
    List<Student>  findAll();
}

4、通过SqlSession的getMapper方法获取Mapper接口的代理对象,并调用对应方法。

StudentMapper userMapper = sqlSession.getMapper(StudentMapper.class);
userMapper.findAll().forEach(System.out::println);

 Mybatis核心配置--mybatis-config.xml😂

1、可以连接多个数据库

可以配置多个environment,通过default属性切换不同的environment 

<?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.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/ssm?useSSL=false&amp;serverTimezone=UTC"/>
                <property name="username" value="lovertx"/>
                <property name="password" value="1234567"/>
            </dataSource>
        </environment>
    </environments>

    <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/ssm?useSSL=false&amp;serverTimezone=UTC"/>
                <property name="username" value="lovertx"/>
                <property name="password" value="1234567"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!-- 加载编写的SQL语句 -->
        <mapper resource="mapper/StudentMapper.xml"/>
    </mappers>
</configuration>

 2、配置标签

案例😂

1、 建表

id:主键

brand_name:品牌名称

company_name:企业名称

ordered:排序字段

description:描述信息

status:状态(0:禁用,1启用)

2、实体类

package pojo;

import lombok.*;

@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Brand {
    private Integer id;
    private String brand_name;
    private String company_name;
    private Integer ordered;
    private String description;
    private Integer status;
}

3、测试类

4、mybatisx插件

通过点击左边的红色小鸟 

 

可以找到蓝色小鸟

 

 

根据方法自动生成mapper映射文件

1、第一步:在StudentMapper中

package mapper;

import pojo.Student;

import java.util.List;

public interface StudentMapper {
    List<Student>  findAll();
    
    Student findById(int id);
}

2、使用插件自动生成

<select id="findById" resultType="pojo.Student"></select>

3、补充实际操作

<select id="findById" resultType="pojo.Student">
        select * from student where id=#{id}
    </select>

 5、查询(查询所有)

1、创建BrandMapper(先写方法,后自动写sql)

 

package mapper;

import pojo.Brand;
import java.util.List;

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

2、创建BrandMapper.xml

package mapper;

import pojo.Brand;
import java.util.List;

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

 3、配置映射文件

在mybatis-config.xml添加 <mapper resource="mapper/BrandMapper.xml"/>

<mappers>
        <!-- 加载编写的SQL语句 -->
        <mapper resource="mapper/StudentMapper.xml"/>
        <mapper resource="mapper/BrandMapper.xml"/>
    </mappers>

 4、测试类

import mapper.BrandMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class MybatisDemo3 {
    public static void main(String[] args) throws IOException, ClassNotFoundException {

        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        SqlSession sqlSession = sqlSessionFactory.openSession();

        BrandMapper userMapper = sqlSession.getMapper(BrandMapper.class);
        userMapper.findAll().forEach(System.out::println);

        sqlSession.close();
    }
}

6、查看详情(根据id查询一个)

BrandMapper中写: 

Brand findById(int id);
public interface BrandMapper {
    List<Brand> findAll();
    
    Brand findById(int id);
}

BrandMapper.xml中写:

<select id="findById" resultType="pojo.Brand">
        select * from tb_brand where id = #{id}
    </select>

 测试类中写:

public class MybatisDemo {
    public static void main(String[] args) throws IOException, ClassNotFoundException {

        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        SqlSession sqlSession = sqlSessionFactory.openSession();

        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
        Brand brand = brandMapper.findById(1);
        System.out.println(brand);
        sqlSession.close();
    }
}

7、条件查询

类似于实现这样的功能:

 根据参数接收(无参/一个参数/两个参数/)
散装参数(模糊匹配)

因模糊匹配需要处理参数

接口方法

List<Brand> selectByCondition(@Param("status") int status, @Param("company_name") String company_name, @Param("brand_name") String brand_name);

sql语句

<select id="selectByCondition" resultType="pojo.Brand">
        select * from tb_brand
        where status = #{status}
            and brand_name like #{brand_name}
            and company_name like #{company_name}
    </select>

测试类 

public class MybatisDemo {
    public static void main(String[] args) throws IOException {
        //接收参数
        int status = 1;
        String company_name = "华为";
        String brand_name = "华为";

        //因模糊匹配,所有处理参数
        company_name = "%" + company_name + "%";
        brand_name = "%" + brand_name + "%";

        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);

        List<Brand> brands = brandMapper.selectByCondition(status, company_name, brand_name);
        for (Brand brand : brands) {
            System.out.println(brand);
        }
        sqlSession.close();
    }
}

 

对象参数

对象的属性名称要和参数占位符名称一致


Mapper接口:

List<Brand> selectByCondition(Brand brand);

sql语句:

<select id="selectByCondition" resultType="pojo.Brand">
        select * from tb_brand
        where status = #{status}
            and brand_name like #{brand_name}
            and company_name like #{company_name}
    </select>

 测试类:

多了个封装对象

public class MybatisDemo {
    public static void main(String[] args) throws IOException {
        //接收参数
        int status = 1;
        String company_name = "华为";
        String brand_name = "华为";

        //因模糊匹配,所有处理参数
        company_name = "%" + company_name + "%";
        brand_name = "%" + brand_name + "%";

        //封装对象
        Brand brand = new Brand();
        brand.setStatus(status);
        brand.setCompany_name(company_name);
        brand.setBrand_name(brand_name);

        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);

//      List<Brand> brands = brandMapper.selectByCondition(status, company_name, brand_name);
        List<Brand> brands = brandMapper.selectByCondition(brand);
        for (Brand brand1 : brands) {
            System.out.println(brand1);
        }
        sqlSession.close();
    }
}

map参数

 Mapper接口:

List<Brand> selectByCondition(Map map);

sql语句:

<select id="selectByCondition" resultType="pojo.Brand">
        select * from tb_brand
        where status = #{status}
            and brand_name like #{brand_name}
            and company_name like #{company_name}
    </select>

测试类:

public class MybatisDemo {
    public static void main(String[] args) throws IOException {
        //接收参数
        int status = 1;
        String company_name = "华为";
        String brand_name = "华为";

        //因模糊匹配,所有处理参数
        company_name = "%" + company_name + "%";
        brand_name = "%" + brand_name + "%";

        //封装对象
//        Brand brand = new Brand();
//        brand.setStatus(status);
//        brand.setCompany_name(company_name);
//        brand.setBrand_name(brand_name);

        Map map = new HashMap();
        map.put("status",status);
        map.put("company_name",company_name);
        map.put("brand_name",brand_name);


        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);

//      List<Brand> brands = brandMapper.selectByCondition(status, company_name, brand_name);
//      List<Brand> brands = brandMapper.selectByCondition(brand);
        List<Brand> brands = brandMapper.selectByCondition(map);
        for (Brand brand1 : brands) {
            System.out.println(brand1);
        }
        sqlSession.close();
    }
}
 动态条件查询(用户输入条件时,是否所有条件都会填写。不是,哥们🤣👌)

只需要修改sql语句:

<select id="selectByCondition" resultType="pojo.Brand">
        select * from tb_brand
        where
            <if test="status != null">
                status = #{status}
            </if>
            <if test="brand_name != null and brand_name != ''">
                and brand_name like #{brand_name}
            </if>
            <if test="company_name != null and company_name != ''">
                and company_name like #{company_name}
            </if>
    </select>

  可是当特殊条件缺少时会出现错误:

 Map map = new HashMap();
        //map.put("status",status);
        map.put("company_name",company_name);
        //map.put("brand_name",brand_name);

 解决:恒等式

将sql语句修改为:

<select id="selectByCondition" resultType="pojo.Brand">
        select * from tb_brand
        <where>
            <if test="status != null">
                and status = #{status}
            </if>
            <if test="brand_name != null and brand_name != ''">
                and brand_name like #{brand_name}
            </if>
            <if test="company_name != null and company_name != ''">
                and company_name like #{company_name}
            </if>
        </where>
    </select>
 使用if,choose,when设定条件
<select id="selectByConditionOne" resultType="pojo.Brand">
        select * from tb_brand
        where
            <choose><!--相当于switch-->
                <when test="status != null"><!--相当于case-->
                    status = #{status}
                </when>
                <when test="brand_name != null and brand_name != ''">
                    brand_name like #{brand_name}
                </when>
                <when test="company_name != null and company_name != ''">
                    company_name like #{company_name}
                </when>
                <otherwise><!--当用户一个条件都不给-->
                    1=1
                </otherwise>
            </choose>
    </select>

 8、添加

 接口方法

void add(Brand brand);

sql语句

<insert id="add">
        insert into tb_brand(brand_name,company_name,ordered,description,status)
        values(#{brand_name},#{company_name},#{ordered},#{description},#{status})
    </insert>

 测试类

public class MybatisDemo3 {
    public static void main(String[] args) throws IOException, ClassNotFoundException {

        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        BrandMapper userMapper = sqlSession.getMapper(BrandMapper.class);

        int status = 1;
        String company_name = "菠萝手机";
        String brand_name = "菠萝";
        int ordered = 1;
        String description = "美国有苹果,中国有菠萝";
        Brand brand = new Brand();
        brand.setStatus(status);
        brand.setCompany_name(company_name);
        brand.setBrand_name(brand_name);
        brand.setOrdered(ordered);
        brand.setDescription(description);
        userMapper.add(brand);
//事务提交
        sqlSession.commit();
        sqlSession.close();
    }
}
 主键返回

实现可查询主键id的值

 因为事务回滚导致少了id=4

因此查询菠萝的id的值为5


将sql语句改为

<insert id="add" useGeneratedKeys="true" keyProperty="id">
        insert into tb_brand(brand_name,company_name,ordered,description,status)
        values(#{brand_name},#{company_name},#{ordered},#{description},#{status})
    </insert>

即添加

useGeneratedKeys="true" keyProperty="id"

 9、修改

修改全部字段

实现

 Mapper接口

void update(Brand brand);

SQL语句

<update id="update">
        update tb_brand
        <set>
            <if test="brand_name != null and brand_name != ''">
                brand_name = #{brand_name},
            </if>
            <if test="company_name != null and company_name != ''">
                company_name = #{company_name},
            </if>
            <if test="ordered != null">
                ordered = #{ordered},
            </if>
            <if test="description != null and description != ''">
                description =#{description},
                status = #{status}
            </if>
        where id = #{id}
        </set>
    </update>

测试类

public class UpdateTest {
    public static void main(String[] args) throws IOException
    {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);

        Brand brand = new Brand();
        brand.setId(5);
        brand.setBrand_name("香飘飘");
        brand.setCompany_name("香飘飘");
        brand.setDescription("香飘飘");
        brand.setOrdered(100);
        brand.setStatus(1);
        brandMapper.update(brand);

        sqlSession.close();
    }
}
 修改动态字段

实现修改密码功能(想单独改哪个值就改哪个值)

如果调用接口却不给参数,则数据库会出现null值🤦‍♂️

 实现

只需要在SQL语句中添加条件,添加<set>标签

<update id="update">
        update tb_brand
        <set>
            <if test="brand_name != null and brand_name != ''">
                brand_name = #{brand_name},
            </if>
            <if test="company_name != null and company_name != ''">
                company_name = #{company_name},
            </if>
            <if test="ordered != null">
                ordered = #{ordered},
            </if>
            <if test="description != null and description != ''">
                description =#{description},
                status = #{status}
            </if>
        where id = #{id}
        </set>
    </update>

10、删除

单个删除

Mapper接口

void delete(int id);

 SQL语句

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

测试类

public class DeleteTest {
    public static void main(String[] args) throws IOException, IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
        
        brandMapper.delete(2);
        sqlSession.close();
    }
}
批量删除

 ​​​​​​

 实现

传id数组,sql遍历数组,一个一个删掉

Mapper接口

void deleteByIds(@Param("ids") int[] ids);

 SQL语句

<delete id="deleteByIds">
        delete from tb_brand where id in
        <foreach collection="ids" item="id" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>

 测试类

public class DeleteTest2 {
    public static void main(String[] args) throws IOException, IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);

        int []ids = {5,6};
        brandMapper.deleteByIds(ids);
        sqlSession.close();
    }
}

 注解开发😍

优点:对于简单的SQL语句使用注解开发会非常便捷。

@Select("select * from tb_user where id = #{id}")
public User selectById(int id);

查询:@Select

添加:@Insert

修改:  @Update

删除:@Delete 

缺点:对于复杂的SQL语句应使用xml映射文件编写。

<?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">
    <insert id="add" useGeneratedKeys="true" keyProperty="id">
        insert into tb_brand(brand_name,company_name,ordered,description,status)
        values(#{brand_name},#{company_name},#{ordered},#{description},#{status})
    </insert>

    <update id="update">
        update tb_brand
        <set>
            <if test="brand_name != null and brand_name != ''">
                brand_name = #{brand_name},
            </if>
            <if test="company_name != null and company_name != ''">
                company_name = #{company_name},
            </if>
            <if test="ordered != null">
                ordered = #{ordered},
            </if>
            <if test="description != null and description != ''">
                description =#{description},
                status = #{status}
            </if>
        where id = #{id}
        </set>
    </update>

    <delete id="delete">
        delete from tb_brand where id = #{id}
    </delete>
    <delete id="deleteByIds">
        delete from tb_brand where id in
        <foreach collection="ids" item="id" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>


    <select id="findAll" resultType="pojo.Brand">
            select * from tb_brand
    </select>
    <select id="findById" resultType="pojo.Brand">
        select * from tb_brand where id = #{id}
    </select>

<!--    <select id="selectByCondition" resultType="pojo.Brand">-->
<!--        select * from tb_brand-->
<!--        where status = #{status}-->
<!--            and brand_name like #{brand_name}-->
<!--            and company_name like #{company_name}-->
<!--    </select>-->
    <select id="selectByCondition" resultType="pojo.Brand">
        select * from tb_brand
        <where>
            <if test="status != null">
                and status = #{status}
            </if>
            <if test="brand_name != null and brand_name != ''">
                and brand_name like #{brand_name}
            </if>
            <if test="company_name != null and company_name != ''">
                and company_name like #{company_name}
            </if>
        </where>
    </select>
    <select id="selectByConditionOne" resultType="pojo.Brand">
        select * from tb_brand
        where
            <choose><!--相当于switch-->
                <when test="status != null"><!--相当于case-->
                    status = #{status}
                </when>
                <when test="brand_name != null and brand_name != ''">
                    brand_name like #{brand_name}
                </when>
                <when test="company_name != null and company_name != ''">
                    company_name like #{company_name}
                </when>
                <otherwise><!--当用户一个条件都不给-->
                    1=1
                </otherwise>
            </choose>
    </select>
</mapper>

 💕完结撒花!💕

 

 

  • 13
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用和引用提供的信息,可以了解到《MyBatis入门到精通》这本书是从一个简单的MyBatis查询入手,搭建起学习MyBatis的基础开发环境。通过全面的示例代码和测试讲解了在MyBatis XML方式和注解方式中进行增、删、改、查操作的基本用法,介绍了动态SQL在不同方面的应用以及在使用中的一些技巧。书中还提到了MyBatis的代码生成器MyBatisgenerator(缩写为MBG),可以帮助开发人员自动生成重复且繁琐的基本方法,提高开发效率。 关于刘增辉,根据提供的信息,无法得知刘增辉是否与《MyBatis入门到精通》书籍有关联。所以不能确认有关刘增辉在该书中的具体内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MyBatis入门到精通__刘增辉电子工业出版社](https://download.csdn.net/download/liujinlonggg/10207818)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [mybatis入门到精通(刘增辉著)-读书笔记第五章](https://blog.csdn.net/qq_38132995/article/details/118998445)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值