Ce projet présente un système de gestion de magasin de fournitures de protection contre les épidémies, développé avec les technologies Java, Spring Boot pour le backend, Vue.js pour le frontend, et MySQL comme base de données.
Présentation des technologies
Backend : Spring Boot
Spring Boot est un framwork Java qui simplifie la création d'applications autonomes et prêtes pour la production. Il suit le principe de "convention plutôt que configuration", réduisant la complexité du développement grâce à ses paramètres par défaut. Spring Boot intègre des conteneurs web tels que Tomcat, permettant d'exécuter des applications directement sans nécessiter de déploiement de fichiers WAR. Sa fonctionnalité d'auto-configuration démarre rapidement les applications avec une configuration minimale, éliminant le besoin de nombreuses configurations XML.
Frontend : Vue.js
Vue.js est un framework JavaScript progressif pour la construction d'interfaces utilisateur interactives. Il est apprécié pour sa simplicité, sa flexibilité et son approche basée sur les composants. Vue.js permet de créer facilement des applications monopages (SPA) et des applications frontend complexes. Il offre une liaison de données réactive, où les modifications de données entraînent des mises à jour automatiques de l'interface utilisateur. L'utilisasion du DOM virtuel (Virtual DOM) optimise les performances en gérant efficacement les mises à jour du DOM. Vue.js prend en charge les composants de fichier unique (Single File Components) pour une meilleure organisation du code (HTML, CSS, JavaScript dans un même fichier) et dispose d'un écosystème riche incluant Vue Router pour la gestion des routes et Vuex pour la gestion d'état.
Base de données : MySQL
MySQL est un système de gestion de base de données relationnelle (SGBDR) open-source reconnu pour ses performances, sa fiabilité et sa flexibilité. Il prend en charge le langage SQL standard pour la manipulation des données et offre une variété de moteurs de stockage comme InnoDB et MyISAM pour répondre à divers besoins applicatifs. MySQL est compatible avec de nombreux systèmes d'exploitation (Windows, Linux, Unix).
Structure du code et configuraton
Configuration du serveur et de la base de données (application.properties)
server:
tomcat:
uri-encoding: UTF-8
port: 8080
servlet:
context-path: /springbootoiz2b
spring:
datasource:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/springbootoiz2b?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8
username: root
password: 123456
servlet:
multipart:
max-file-size: 300MB
max-request-size: 300MB
resources:
static-locations: classpath:static/,file:static/
mybatis-plus:
mapper-locations: classpath*:mapper/*.xml
typeAliasesPackage: com.entity
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'
Exemple de Mapper MyBatis-Plus (YuangongDao.xml)
<?xml version="1.0" encoding="UTF-8"?>
<mapper namespace="com.dao.YuangongDao">
<resultMap type="com.entity.YuangongEntity" id="yuangongMap">
<result property="yuangonggonghao" column="yuangonggonghao"/>
<result property="mima" column="mima"/>
<result property="yuangongxingming" column="yuangongxingming"/>
<result property="xingbie" column="xingbie"/>
<result property="gangwei" column="gangwei"/>
<result property="nianling" column="nianling"/>
<result property="ruzhishijian" column="ruzhishijian"/>
<result property="lianxifangshi" column="lianxifangshi"/>
<result property="youxiang" column="youxiang"/>
<result property="shenfenzheng" column="shenfenzheng"/>
</resultMap>
<select id="selectListVO" resultType="com.entity.vo.YuangongVO" >
SELECT * FROM yuangong yuangong
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<select id="selectVO" resultType="com.entity.vo.YuangongVO" >
SELECT yuangong.* FROM yuangong yuangong
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<select id="selectListView" resultType="com.entity.view.YuangongView" >
SELECT yuangong.* FROM yuangong yuangong
<where> 1=1 ${ew.sqlSegment}</where>
</select>
<select id="selectView" resultType="com.entity.view.YuangongView" >
SELECT * FROM yuangong yuangong <where> 1=1 ${ew.sqlSegment}</where>
</select>
</mapper>