spring-boot-route (oito) integrar banco de dados de operação mybatis

MyBatis é uma excelente estrutura de camada de persistência que oferece suporte a SQL personalizado, procedimentos armazenados e mapeamento avançado. MyBatis evita quase todo o código JDBC e configuração manual de parâmetros e obtenção de conjuntos de resultados. MyBatis pode usar XML simples ou anotações para configurar e mapear informações nativas e mapear interfaces e POJOs Java (Plain Ordinary Java Objects) para registros no banco de dados.

Complete as operações de dados por meio de anotações

Etapa 1: Introduzir a dependência do mysql e a dependência do mybatis

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

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>LATEST</version>
</dependency>

Etapa 2: criar uma nova tabela de alunos e classe de entidade correspondente

CREATE TABLE `student` (
   `student_id` int(30) NOT NULL AUTO_INCREMENT,
   `age` int(1) DEFAULT NULL COMMENT '年龄',
   `name` varchar(45) DEFAULT NULL COMMENT '姓名',
   `sex` int(1) DEFAULT NULL COMMENT '性别:1:男,2:女,0:未知',
   `create_time` datetime DEFAULT NULL COMMENT '创建时间',
   `status` int(1) DEFAULT NULL COMMENT '状态:1:正常,-1:删除',
   PRIMARY KEY (`student_id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=617354 DEFAULT CHARSET=utf8mb4 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='学生表'
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student implements Serializable {

    private static final long serialVersionUID = 6712540741269055064L;

    private Integer studentId;
    private Integer age;
    private String name;
    private Integer sex;
    private Date createTime;
    private Integer status;
}

Etapa 3: configurar as informações de conexão do banco de dados

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/simple_fast
    username: root
    password: root

Adicionar, excluir, modificar

@Mapper
public interface StudentMapper {

    @Select("select * from student where student_id = #{studentId}")
    Student findById(@Param("studentId") Integer studentId);

    @Insert("insert into student(age,name) values(#{age},#{name})")
    int addStudent(@Param("name") String name,@Param("age") Integer age);

    @Update("update student set name = #{name} where student_id = #{studentId}")
    int updateStudent(@Param("studentId") Integer studentId,@Param("name") String name);

    @Delete("delete from student where student_id = #{studentId}")
    int deleteStudent(@Param("studentId") Integer studentId);
}

O método de passagem de parâmetro demonstrado acima é passado por meio de um único parâmetro. Se você quiser passar parâmetros por meio de um mapa ou classe de entidade, não precisa usar @Param para vincular os parâmetros. A chave no mapa ou os atributos na classe de entidade são combinados com aqueles em sql. O valor do parâmetro corresponde a ele .

Manipulação completa de dados por meio de configuração XML

@Mapper 和 @MapperScan

@Mapper é adicionado à interface da camada de dados e registrado no contêiner ioc, @MapperScan é adicionado à classe de inicialização e o pacote de interface da camada de dados a ser varrido precisa ser especificado. do seguinte modo:

@Mapper
public interface StudentMapper {}
@SpringBootApplication
@MapperScan("com.javatrip.mybatis.mapper")
public class MybatisApplication {
    public static void main(String[] args) {
        SpringApplication.run(MybatisApplication.class, args);
    }
}

As duas anotações têm a mesma função. Para conveniência no desenvolvimento, normalmente usamos @MapperScan.

Especifique a localização do mapper.xml

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

Nomenclatura de caixa de camelo de mapeamento de entidade de dados aberta

mybatis:
  configuration:
    map-underscore-to-camel-case: true

Escreva xml e sua interface de mapeador correspondente

<?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.javatrip.mybatis.mapper.StudentXMapper">
    <select id="findById" resultType="com.javatrip.mybatis.entity.Student">
        select * from student where student_id = #{studentId}
    </select>
    <insert id="addStudent" parameterType="com.javatrip.mybatis.entity.Student">
        insert into student(name,age) values(#{name},#{age})
    </insert>

    <update id="updateStudent" parameterType="com.javatrip.mybatis.entity.Student">
        update student set name = #{name} where  student_id = #{studentId}
    </update>

    <delete id="deleteStudent" parameterType="Integer">
        delete from student where student_id = #{studentId}
    </delete>
</mapper>
@Mapper
public interface StudentXMapper {

    Student findById(@Param("studentId") Integer studentId);

    int addStudent(Student student);

    int updateStudent(@Param("studentId") Integer studentId,@Param("name") String name);

    int deleteStudent(@Param("studentId") Integer studentId);
}

Escreva aula de teste

@SpringBootTest
class MybatisApplicationTests {

    @Autowired
    StudentMapper mapper;

    @Autowired
    StudentXMapper xMapper;

    @Test
    void testMapper() {

        Student student = mapper.findById(10);
        mapper.addStudent("Java旅途",19);
        mapper.deleteStudent(31);
        mapper.updateStudent(10,"Java旅途");
    }

    @Test
    void contextLoads() {

        Student student = xMapper.findById(10);
        Student studentDo = new Student();
        studentDo.setAge(18);
        studentDo.setName("Java旅途呀");
        xMapper.addStudent(studentDo);
        xMapper.deleteStudent(32);
        xMapper.updateStudent(31,"Java旅途");
    }
}

Existem alguns pontos a serem observados aqui: o atributo de namespace na tag do mapeador corresponde à interface do mapeador; o id da tag de seleção corresponde ao nome do método na interface do mapeador; o resultType da tag de seleção corresponde à classe de entidade a ser consultada, usando o caminho completo.

Este é o oitavo artigo da série Spring Boot-Route. Os artigos desta série são relativamente simples. O objetivo principal é ajudar os alunos que são novos no Spring Boot a ter uma compreensão sistemática. Este artigo foi incluído no meu github , bem-vindos amigos star!

githubhttps://github.com/binzh303/spring-boot-route

Preste atenção, não se perca

Se você sente bons ensaios, bem-vinda atenção , polegares para cima , coleção , seu apoio é meu poder criativo, obrigado.

Se houver algum problema com a redação do artigo, por favor, não seja mesquinho. Deixe uma mensagem e indique. Vou verificar e modificar a tempo.

Se você quiser me conhecer mais profundamente, pode pesquisar " Java Journey " no WeChat para seguir. Responda " 1024 " para obter vídeos de aprendizagem e e-books requintados. Publique artigos técnicos pontualmente às 7h30 todos os dias, para que você não esteja sozinho no caminho para o trabalho, e há atividades mensais de entrega de livros para ajudá-lo a melhorar seu hard power!

Acho que você gosta

Origin blog.51cto.com/14820531/2540392
Recomendado
Clasificación