Sistema de Gestão de Vendas de Produtos Corporativos com Spring Boot, Vue.js e MySQL

Backend com Spring Boot

O Spring Boot representa uma solução robusta para a criação de aplicações Spring autônomas e prontas para produção. Desenvolivdo pela equipe da Pivotal, seu objetivo principal é reduzir a complexidade de configuração que tradicionalmente acompanha projetos baseados em Spring.

A filosofia central do framework baseia-se no princípio de "convenção sobre configuração", eliminando a necessidade de definições manuais extensivas. Isso permite que os desenvolvedores concentrem seus esforços na lógica de negócio rather do que em configurações infraestruturais.

Dentre os recursos disponíveis, destacam-se o servidor Servlet embarcado (como Tomcat ou Jetty), que possibilita a execução direta da aplicação sem a necessidade de empacotamento em arquivos WAR. O mecanismo de autoconfiguração também permite inicializar projetos com praticamente zero configuração XML.

Frontend com Vue.js

Vue.js consiste em um framework JavaScript de código aberto voltado para a construção de interfaces de usuário interativas. Sua adoção cresceu significativamente, consolidando-se como uma das principais escolhas no cenário de desenvolvimento web moderno.

A arquitetura do Vue.js é fundamentada em componentes reutilizáveis, facilitando a construção de aplicações de página única (SPA) complexas. A API acessível do framework permite que iniciantes compreendam rapidamente seus conceitos fundamentais, enquanto sua flexibilidade atende demandas de projetos de grande escala.

Recursos como data binding reativo garantem que alterações nos dados sejam automaticamente refletidas na interface. O Virtual DOM otimiza as operações de renderização, melhorando a performance geral da aplicação. O ecossistema inclui Vue Router para gerenciamento de rotas, Vuex para controle de estado e Vue CLI para scaffolding de projetos.

Banco de Dados MySQL

MySQL é um sistema de gerenciamento de banco de dados relacional (RDBMS) amplamente reconhecido por sua performance, confiabilidade e versatilidade. Originalmente desenvolvido pela empresa sueca MySQL AB e lançado em 1995, posteriormente foi adquirido pela Sun Microsystems e atualmente pertence à Oracle Corporation.

Sob licença GPL, o MySQL tornou-se a escolha preferida de grande parte da comunidade de desenvolvedores e organizações. O sistema oferece suporte completo à linguagem SQL padrão e disponibiliza múltiplas engines de armazenamento, como InnoDB e MyISAM, cada uma adequada a cenários específicos de uso.

Configuração da Aplicação

O arquivo de configuração abaixo demonstra as definições de servidor, datasource e mapeamento do MyBatis-Plus:

# Configuração do servidor embutido
server:
  tomcat:
    uri-encoding: UTF-8
  port: 9090
  servlet:
    context-path: /sistema-vendas

spring:
  datasource:
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db_sistema_vendas?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=America/Sao_Paulo
    username: admin
    password: admin123

  servlet:
    multipart:
      max-file-size: 200MB
      max-request-size: 200MB
  resources:
    static-locations: classpath:/static/,file:/static/

# Configuração MyBatis-Plus
mybatis-plus:
  mapper-locations: classpath*:mapper/*.xml
  typeAliasesPackage: com.sistema.model
  global-config:
    id-type: 1
    field-strategy: 1
    db-column-underline: true
    refresh-mapper: true
    logic-delete-value: -1
    logic-not-delete-value: 0
    sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: false
    call-setters-on-nulls: true
    jdbc-type-for-null: 'null'

Mapeamento de Entidades

O mapper a seguir ilustra a configuração de consultas para a entidade de funcionários, utilizando result maps personalizados e queries dinâmicas:

<?xml version="1.0" encoding="UTF-8"?>

<mapper namespace="com.sistema.dao.FuncionarioDao">

    <resultMap type="com.sistema.model.Funcionario" id="funcionarioMap">
        <result property="matricula" column="matricula"/>
        <result property="senha" column="senha"/>
        <result property="nomeCompleto" column="nome_completo"/>
        <result property="sexo" column="sexo"/>
        <result property="cargo" column="cargo"/>
        <result property="idade" column="idade"/>
        <result property="dataAdmissao" column="data_admissao"/>
        <result property="telefone" column="telefone"/>
        <result property="email" column="email"/>
        <result property="cpf" column="cpf"/>
    </resultMap>

    <select id="listarTodos" resultType="com.sistema.vo.FuncionarioVO">
        SELECT f.* FROM funcionario f
        <where> 1=1 ${ew.sqlSegment}</where>
    </select>

    <select id="buscarPorId" resultType="com.sistema.vo.FuncionarioVO">
        SELECT f.* FROM funcionario f
        <where> 1=1 ${ew.sqlSegment}</where>
    </select>

    <select id="listarDetalhado" resultType="com.sistema.view.FuncionarioView">
        SELECT f.* FROM funcionario f
        <where> 1=1 ${ew.sqlSegment}</where>
    </select>

    <select id="obterDetalhe" resultType="com.sistema.view.FuncionarioView">
        SELECT f.* FROM funcionario f
        <where> 1=1 ${ew.sqlSegment}</where>
    </select>

</mapper>

Tags: Spring Boot Vue.js MySQL MyBatis-Plus SSM

Publicado em 6-26 23:15