Sistema de Agendamento de Fotografias com Java, Spring MVC, MyBatis e JSP

Visão Geral da Arquitetura

O sistema proposto permite o agendamento de sessões fotográficas entre fotógrafos e clientes, utilizando uma arquitetura baseada em Java com o framework Spring MVC (parte do SSM), persistência via MyBatis, visualização com JSP e integração com o front end Vue.js. O banco de dados relacional é gerenciado pelo MySQL, garantindo robustez e escalabilidade.

Stack Tecnológica

Backend com Spring Boot

O Spring Boot simplifica a configuração e o deploy de aplicações Spring, fornecendo um servidor embarcado (como Tomcat) e autoconfiguração para dependências. Isso reduz a complexidade do setup inicial e acelera o desenvolvimento.

Frontend com Vue.js

O Vue.js é empregado para construir interfaces de usuário interativas e responsivas. Seu modelo baseado em componentes e reatividade facilita a gestão de estados complexos em aplicações de página única (SPA).

Banco de Dados MySQL

O MySQL é utilizado como sistema de gerenciamento de banco de dados relacional, oferecendo alta performance, confiabilidade e suporte a múltiplos motores de armazenamento como InnoDB para transações ACID.

Exemplos de Código

Configuração da Aplicação (application.yml)

server:
  tomcat:
    uri-encoding: UTF-8
  port: 8090
  servlet:
    context-path: /fotografia-app

spring:
  datasource:
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db_agendamento_fotos?useSSL=false&serverTimezone=UTC
    username: app_user
    password: s3nh4Segur4!
  servlet:
    multipart:
      max-file-size: 200MB
      max-request-size: 200MB

mybatis-plus:
  mapper-locations: classpath*:mapper/*.xml
  type-aliases-package: com.fotografia.entity
  global-config:
    id-type: auto
    field-strategy: not_null
    db-column-underline: true
    logic-delete-value: 1
    logic-not-delete-value: 0
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

Mapeamento de Entidade com MyBatis (FotografoMapper.xml)

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

<mapper namespace="com.fotografia.dao.FotografoMapper">

    <resultMap id="fotografoResultMap" type="com.fotografia.entity.Fotografo">
        <id property="codigo" column="codigo_fotografo"/>
        <result property="nomeCompleto" column="nome_completo"/>
        <result property="especializacao" column="area_especializacao"/>
        <result property="numeroTelefone" column="telefone_contato"/>
        <result property="emailContato" column="email"/>
        <result property="portfolioUrl" column="link_portfolio"/>
    </resultMap>

    <select id="buscarTodos" resultMap="fotografoResultMap">
        SELECT * FROM fotografos WHERE status_ativo = 1
    </select>

    <select id="buscarPorEspecializacao" resultMap="fotografoResultMap">
        SELECT * FROM fotografos
        <where>
            area_especializacao = #{especializacao}
            AND status_ativo = 1
        </where>
    </select>

    <insert id="inserirFotografo" parameterType="com.fotografia.entity.Fotografo">
        INSERT INTO fotografos (nome_completo, area_especializacao, telefone_contato, email, link_portfolio)
        VALUES (#{nomeCompleto}, #{especializacao}, #{numeroTelefone}, #{emailContato}, #{portfolioUrl})
    </insert>

</mapper>

Tags: java Spring Boot MyBatis jsp Vue.js

Publicado em 5-31 20:50 por Thomas