Java (1): Crie um projeto Spring Boot e implemente operações de conexão com o banco de dados MySQL

Crie um projeto Spring Boot e implemente a operação de conexão do banco de dados MySQL

Preparar

MySQL

Insira a descrição da imagem aqui

Ordem

$ docker pull mysql
$ docker run --name local-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

Maven

Endereços relacionados

Link para Download:

https://maven.apache.org/

endereço do método de configuração maven:

https://developer.aliyun.com/mvn/guide

Endereço de pesquisa do armazém:

https://mvnrepository.com/

https://repo.maven.apache.org/

mavenconfiguração localconf/settings.xml

<!-- TAG··· -->

<!-- 指定下载依赖到本地的路径 -->
<localRepository>${user.home}/Documents/AAA-PLee/maven/repository</localRepository>

        <!-- TAG··· -->

        <!-- 配置为阿里云公共仓库 -->
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>

        <!-- TAG··· -->

Baixe ideae configure o ambiente localmaven

Insira a descrição da imagem aqui

MavenConstruir生命周期

  • MavenA construção 生命周期inclui 三个阶段: cleanebuildsite
    1. clean: Limpe o projeto, exclua os resultados da compilação anterior e os arquivos gerados pela compilação.
    2. build: Construa o projeto, incluindo compilação, teste, empacotamento e outras operações.
    3. site: Gere documentos e relatórios de projeto, como relatórios de teste, relatórios de cobertura de código, etc.
  • Cada estágio contém alguns plug-ins e destinos, que Mavensão executados em uma ordem predefinida. Por exemplo, buildnuma fase, Mavenos seguintes objetivos são executados em sequência:
    1. validate: Verifique se o projeto está correto.
    2. compile: Compile o código-fonte do projeto.
    3. test: execute os casos de teste do projeto.
    4. package: Empacote o projeto em um arquivo jar ou war.
    5. verify: Verifique se o resultado da embalagem está correto.
    6. install: instale os resultados do pacote no repositório Maven local.
    7. deploy: implanta os resultados do empacotamento no repositório Maven remoto.

ideaBaixe os plug-ins necessários

Insira a descrição da imagem aqui

Código Fácil

Usado para gerar rapidamente diretórios e códigos de projetos relacionados ao banco de dados

MeuBatisPlus

Usado para pular entre javaesql.xml

ideaCriar projeto

ConfiguraçãoServer URL

Endereço: https://start.aliyun.com/

Insira a descrição da imagem aqui

Preencha as informações relacionadas ao projeto

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

Criação do projeto bem-sucedida (executar e testar)

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

ideaTeste se a conexão está normalMySQL

Insira a descrição da imagem aqui

Criar tabela de banco de dados

Insira a descrição da imagem aqui

Adicione MySQLconfiguração de conexões dentro do projeto

Procure MySQLpacotes de dependência usados ​​pela conexão

Insira a descrição da imagem aqui

Gravar arquivo de configuração do banco de dados de conexão

Apresente (não se pom.xmlesqueça )MySQL依赖包Load Maven Changes


<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
</dependency>

criar e escreverapplication.yml

caminho:user/src/main/resources/application.yml

server:
  port: 8000
spring:
  application:
    name: user-service
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/java_app
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

Use plug-ins EasyCodepara criar rapidamente código relacionado a bancos de dados operacionais

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

Veja a estrutura de diretórios do projeto após a criação

Insira a descrição da imagem aqui

JavaOs aplicativos normalmente usam os seguintes componentes para organizar seu código

O relacionamento entre esses componentes geralmente é chamada Controller, Servicedefinida Servicedentro implda pasta 业务实现类, 业务实现类chamada DAO, DAOoperação , representando a estrutura da tabela do banco de dadosMapperSQL语句Entity实体类

Simplificando, Controllerele é usado para receber solicitações de usuários, Serviceimplementar lógica de negócios, DAOoperar o banco de dados e Entityrepresentar a estrutura da tabela do banco de dados.

/service/impl/xxx.javaImplementar lógica de negócios específica em

Adicione instruções /resources/mapper/xxx.xmlpara manipular dados emsql

  • Controller: Controlador, usado para receber solicitações do usuário e chamar métodos de processamento correspondentes para processar as solicitações e, em seguida, retornar os resultados da resposta. Geralmente Spring MVCimplementado usando uma estrutura.
  • Service: Camada de serviço, usada para implementar lógica de negócios e chamada para DAOrealizar operações de dados. Geralmente contém classes de interface e implementação.
  • DAO: Objeto de acesso a dados, utilizado para operar o banco de dados. Geralmente é implementado usando frameworks MyBatiscomo Hibernate.
  • Entity: Classe de entidade, usada para representar a estrutura da tabela no banco de dados. Geralmente contém atributos de classe e getter/settermétodos correspondentes.

Resolva o problema de importação de erros de biblioteca no projeto

Usar https://mvnrepository.com/solução de pesquisa

<!-- 解决完成后的pom.xml -->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-commons</artifactId>
        <version>3.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.6</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

Tente executar (erro: nenhuma versão correspondente foi introduzida)

Insira a descrição da imagem aqui

<!-- <dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-commons</artifactId>
    <version>3.1.0</version>
</dependency> -->
<!-- 修改为 -->
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-commons</artifactId>
</dependency>

Tente executar (faltam @MapperScananotações)

Insira a descrição da imagem aqui

Perceber:尽量选择使用量大的依赖包


<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.2</version>
</dependency>
// user/src/main/java/com/example/user/UserApplication.java

package com.example.user;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
@MapperScan(basePackages = "com.example.user.dao")
public class UserApplication {
    
    
    public static void main(String[] args) {
    
    
        SpringApplication.run(UserApplication.class, args);
    }
}
  • A anotação @SpringBootApplication é uma anotação combinada, usada para marcar
    a classe principal de um aplicativo Spring Boot. Inclui três anotações : @Configuratione@EnableAutoConfiguration@ComponentScan
    • @Configuration: marque esta classe como a origem de uma definição de bean no contexto do aplicativo Spring. Ou seja, os beans definidos nesta classe podem ser gerenciados pelo contêiner Spring.
    • @EnableAutoConfiguration: configura automaticamente os beans exigidos pelos aplicativos Spring Boot.
    • @ComponentScan: verifica outros componentes do aplicativo, como controladores, serviços e repositórios.
  • @MapperScan é uma anotação na estrutura MyBatis. Sua função é verificar o caminho do pacote especificado, encontrar todas as interfaces marcadas com a anotação @Mapper e criar essas interfaces nas classes de implementação da interface MyBatis Mapper.
    • Instâncias dessas classes de implementação do Mapper podem ser injetadas automaticamente sempre que o Mapper for necessário, acessando assim o banco de dados de maneira conveniente.

Tente executar (a operação foi bem-sucedida, se terminar imediatamente após a execução, pode ser que spring-boot-starter-webo pacote não tenha sido introduzido)

Apenas tente importá-lo


<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

finalmentepom.xml


<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-commons</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.6</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.2.2</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

Interface de acesso

Falha na solicitação

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

Resolva o erro (diga MyBatisonde encontrar SQLa afirmação)

mybatis:
  mapper-locations: classpath:**/mapper/*.xml

Execute novamente e solicite

Insira a descrição da imagem aqui

Código fonte completo

Estrutura de diretório

Insira a descrição da imagem aqui

Introduzir dependências:user/pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>user</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>user</name>
    <description>user</description>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.6.13</spring-boot.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainClass>com.example.user.UserApplication</mainClass>
                    <skip>true</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

Configuração relacionada ao serviço:user/src/main/resources/application.yml

server:
  port: 8000

spring:
  application:
    name: user-service
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/java_app
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis:
  mapper-locations: classpath:**/mapper/*.xml

Entrada:user/src/main/java/com/example/user/UserApplication.java

package com.example.user;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
@MapperScan(basePackages = "com.example.user.dao")
public class UserApplication {
    
    

    public static void main(String[] args) {
    
    
        SpringApplication.run(UserApplication.class, args);
    }

}

Camada de controle de tabela (usuário):user/src/main/java/com/example/user/controller/UserController.java

package com.example.user.controller;

import com.example.user.entity.User;
import com.example.user.service.UserService;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * (User)表控制层
 *
 * @author makejava
 * @since 2023-06-12 14:13:44
 */
@RestController
@RequestMapping("user")
public class UserController {
    
    
    /**
     * 服务对象
     */
    @Resource
    private UserService userService;

    /**
     * 分页查询
     *
     * @param user 筛选条件
     * @param pageRequest      分页对象
     * @return 查询结果
     */
    @GetMapping
    public ResponseEntity<Page<User>> queryByPage(User user, PageRequest pageRequest) {
    
    
        return ResponseEntity.ok(this.userService.queryByPage(user, pageRequest));
    }

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @GetMapping("{id}")
    public ResponseEntity<User> queryById(@PathVariable("id") String id) {
    
    
        return ResponseEntity.ok(this.userService.queryById(id));
    }

    /**
     * 新增数据
     *
     * @param user 实体
     * @return 新增结果
     */
    @PostMapping
    public ResponseEntity<User> add(User user) {
    
    
        return ResponseEntity.ok(this.userService.insert(user));
    }

    /**
     * 编辑数据
     *
     * @param user 实体
     * @return 编辑结果
     */
    @PutMapping
    public ResponseEntity<User> edit(User user) {
    
    
        return ResponseEntity.ok(this.userService.update(user));
    }

    /**
     * 删除数据
     *
     * @param id 主键
     * @return 删除是否成功
     */
    @DeleteMapping
    public ResponseEntity<Boolean> deleteById(String id) {
    
    
        return ResponseEntity.ok(this.userService.deleteById(id));
    }

}

Interface de serviço de tabela (usuário):user/src/main/java/com/example/user/service/UserService.java

package com.example.user.service;

import com.example.user.entity.User;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;

/**
 * (User)表服务接口
 *
 * @author makejava
 * @since 2023-06-12 14:13:49
 */
public interface UserService {
    
    

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    User queryById(String id);

    /**
     * 分页查询
     *
     * @param user 筛选条件
     * @param pageRequest      分页对象
     * @return 查询结果
     */
    Page<User> queryByPage(User user, PageRequest pageRequest);

    /**
     * 新增数据
     *
     * @param user 实例对象
     * @return 实例对象
     */
    User insert(User user);

    /**
     * 修改数据
     *
     * @param user 实例对象
     * @return 实例对象
     */
    User update(User user);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(String id);

}

Classe de implementação de serviço de tabela (usuário):user/src/main/java/com/example/user/service/impl/UserServiceImpl.java

package com.example.user.service.impl;

import com.example.user.entity.User;
import com.example.user.dao.UserDao;
import com.example.user.service.UserService;
import org.springframework.stereotype.Service;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;

import javax.annotation.Resource;

/**
 * (User)表服务实现类
 *
 * @author makejava
 * @since 2023-06-12 14:13:50
 */
@Service("userService")
public class UserServiceImpl implements UserService {
    
    
    @Resource
    private UserDao userDao;

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    @Override
    public User queryById(String id) {
    
    
        return this.userDao.queryById(id);
    }

    /**
     * 分页查询
     *
     * @param user 筛选条件
     * @param pageRequest      分页对象
     * @return 查询结果
     */
    @Override
    public Page<User> queryByPage(User user, PageRequest pageRequest) {
    
    
        long total = this.userDao.count(user);
        return new PageImpl<>(this.userDao.queryAllByLimit(user, pageRequest), pageRequest, total);
    }

    /**
     * 新增数据
     *
     * @param user 实例对象
     * @return 实例对象
     */
    @Override
    public User insert(User user) {
    
    
        this.userDao.insert(user);
        return user;
    }

    /**
     * 修改数据
     *
     * @param user 实例对象
     * @return 实例对象
     */
    @Override
    public User update(User user) {
    
    
        this.userDao.update(user);
        return this.queryById(user.getId());
    }

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    @Override
    public boolean deleteById(String id) {
    
    
        return this.userDao.deleteById(id) > 0;
    }
}

Camada de acesso ao banco de dados de tabela (usuário):user/src/main/java/com/example/user/dao/UserDao.java

package com.example.user.dao;

import com.example.user.entity.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * (User)表数据库访问层
 *
 * @author makejava
 * @since 2023-06-12 14:13:45
 */
public interface UserDao {
    
    

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    User queryById(String id);

    /**
     * 查询指定行数据
     *
     * @param user 查询条件
     * @param pageable         分页对象
     * @return 对象列表
     */
    List<User> queryAllByLimit(User user, @Param("pageable") Pageable pageable);

    /**
     * 统计总行数
     *
     * @param user 查询条件
     * @return 总行数
     */
    long count(User user);

    /**
     * 新增数据
     *
     * @param user 实例对象
     * @return 影响行数
     */
    int insert(User user);

    /**
     * 批量新增数据(MyBatis原生foreach方法)
     *
     * @param entities List<User> 实例对象列表
     * @return 影响行数
     */
    int insertBatch(@Param("entities") List<User> entities);

    /**
     * 批量新增或按主键更新数据(MyBatis原生foreach方法)
     *
     * @param entities List<User> 实例对象列表
     * @return 影响行数
     * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
     */
    int insertOrUpdateBatch(@Param("entities") List<User> entities);

    /**
     * 修改数据
     *
     * @param user 实例对象
     * @return 影响行数
     */
    int update(User user);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 影响行数
     */
    int deleteById(String id);

}

Classe de entidade (Usuário):user/src/main/java/com/example/user/entity/User.java

package com.example.user.entity;

import java.io.Serializable;

/**
 * (User)实体类
 *
 * @author makejava
 * @since 2023-06-12 14:13:46
 */
public class User implements Serializable {
    
    
    private static final long serialVersionUID = 264722085318530649L;

    private String id;

    private String name;

    private Integer age;

    private String sex;

    private String phone;


    public String getId() {
    
    
        return id;
    }

    public void setId(String id) {
    
    
        this.id = id;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public Integer getAge() {
    
    
        return age;
    }

    public void setAge(Integer age) {
    
    
        this.age = age;
    }

    public String getSex() {
    
    
        return sex;
    }

    public void setSex(String sex) {
    
    
        this.sex = sex;
    }

    public String getPhone() {
    
    
        return phone;
    }

    public void setPhone(String phone) {
    
    
        this.phone = phone;
    }

}

SQL:user/src/main/resources/mapper/UserDao.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="com.example.user.dao.UserDao">

    <resultMap type="com.example.user.entity.User" id="UserMap">
        <result property="id" column="id" jdbcType="VARCHAR"/>
        <result property="name" column="name" jdbcType="VARCHAR"/>
        <result property="age" column="age" jdbcType="INTEGER"/>
        <result property="sex" column="sex" jdbcType="VARCHAR"/>
        <result property="phone" column="phone" jdbcType="VARCHAR"/>
    </resultMap>

    <!--查询单个-->
    <select id="queryById" resultMap="UserMap">
        select
        id, name, age, sex, phone
        from user
        where id = #{id}
    </select>

    <!--查询指定行数据-->
    <select id="queryAllByLimit" resultMap="UserMap">
        select
        id, name, age, sex, phone
        from user
        <where>
            <if test="id != null and id != ''">
                and id = #{id}
            </if>
            <if test="name != null and name != ''">
                and name = #{name}
            </if>
            <if test="age != null">
                and age = #{age}
            </if>
            <if test="sex != null and sex != ''">
                and sex = #{sex}
            </if>
            <if test="phone != null and phone != ''">
                and phone = #{phone}
            </if>
        </where>
        limit #{pageable.offset}, #{pageable.pageSize}
    </select>

    <!--统计总行数-->
    <select id="count" resultType="java.lang.Long">
        select count(1)
        from user
        <where>
            <if test="id != null and id != ''">
                and id = #{id}
            </if>
            <if test="name != null and name != ''">
                and name = #{name}
            </if>
            <if test="age != null">
                and age = #{age}
            </if>
            <if test="sex != null and sex != ''">
                and sex = #{sex}
            </if>
            <if test="phone != null and phone != ''">
                and phone = #{phone}
            </if>
        </where>
    </select>

    <!--新增所有列-->
    <insert id="insert" keyProperty="id" useGeneratedKeys="true">
        insert into user(name, age, sex, phone)
        values (#{name}, #{age}, #{sex}, #{phone})
    </insert>

    <insert id="insertBatch" keyProperty="id" useGeneratedKeys="true">
        insert into user(name, age, sex, phone)
        values
        <foreach collection="entities" item="entity" separator=",">
            (#{entity.name}, #{entity.age}, #{entity.sex}, #{entity.phone})
        </foreach>
    </insert>

    <insert id="insertOrUpdateBatch" keyProperty="id" useGeneratedKeys="true">
        insert into user(name, age, sex, phone)
        values
        <foreach collection="entities" item="entity" separator=",">
            (#{entity.name}, #{entity.age}, #{entity.sex}, #{entity.phone})
        </foreach>
        on duplicate key update
        name = values(name),
        age = values(age),
        sex = values(sex),
        phone = values(phone)
    </insert>

    <!--通过主键修改数据-->
    <update id="update">
        update user
        <set>
            <if test="name != null and name != ''">
                name = #{name},
            </if>
            <if test="age != null">
                age = #{age},
            </if>
            <if test="sex != null and sex != ''">
                sex = #{sex},
            </if>
            <if test="phone != null and phone != ''">
                phone = #{phone},
            </if>
        </set>
        where id = #{id}
    </update>

    <!--通过主键删除-->
    <delete id="deleteById">
        delete from user where id = #{id}
    </delete>

</mapper>

Acho que você gosta

Origin blog.csdn.net/weixin_43526371/article/details/131172144
Recomendado
Clasificación