今天,用STS4.11.1(springboot tools suite 4)开发了一个基于Springboot的测试工程,项目使用了mysql, mybatis,maven技术。
首先看工程目录结构,(不能上传图片),直接上代码吧
要新建一个工程,数据库是基础, 使用mysql数据库,在mysql库上建表做数据处理,数据库建库脚本:
DROP TABLE emp_info;
CREATE TABLE emp_info(
emp_id VARCHAR(20) NOT NULL ,
emp_name VARCHAR(20) NOT NULL ,
emp_passwd VARCHAR(64) NOT NULL,
emp_sex VARCHAR(1) NOT NULL,
emp_brithdate VARCHAR(10),
emp_age INT,
emp_email VARCHAR(30)
);
ALTER TABLE emp_info ADD PRIMARY KEY (emp_id);
INSERT INTO emp_info VALUES('111','111','11','1','2021-12-01',1,'28329@qq.com')
开发工具使用的是STS4.11.1,操作流程,FILE->NEW->NEW Project->Spring Starter Project,新建工程名为demo。
选择java 版本时,选择8,group 命名com.example,artifact命名:demo, package命名:com.example.demo, 工程建好之后,POM.xml配置如下 :
<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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
sprintboot 的配置文件application.properties,可修改为application.yml,本次不做修改
## 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/mysql
spring.datasource.username=root
spring.datasource.password=mysql
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
## Mybatis 配置
# 实体所在包,起别名
mybatis.type-aliasesPackage:com.example.entity
# 映射文件所在路径
mybatis.mapper-locations:classpath:com.example.dao/*.xml
#端口
server.port=8080
application.properties中增加thymeleaf模板
spring:
thymeleaf:
prefix: classpath:/templates/
mode: HTML
cache: false
encoding: UTF-8
# 新版本不支持content-type: text/html,故新写法
servlet:
content-type: text/html
注意:增加的thymeleaf之后 ,需要将static,templates目录拷贝至resources目录下。
application.properties中增加log输出
#日志输出
logging:
path: C:\Users\x_houjianjie\Documents\workspace-spring-tool-suite-4-4.11.1.RELEASE\demo\logs #日志文件路径
file: demo.log #日志文件名称
level: debug
root: debug #日志级别 root表示所有包,也可以单独配置具体包 fatal error warn info debug trace off
日志输出也可以使用logback-spring.xml文件来控制,如果配置了logback-spring.xml文件,则application.properties中的配置会失效。
logback-spring.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<contextName>demo</contextName>
<!--输出到控制台-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!--按天生成日志-->
<appender name="logFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Prudent>true</Prudent>
<!-- 过滤器,只打印ERROR级别的日志 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>
d:/log/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}.log
</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>15</MaxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} -%msg%n
</Pattern>
</layout>
</appender>
<logger name="com.fishpro.log" additivity="false">
<appender-ref ref="console"/>
<appender-ref ref="logFile"/>
</logger>
<!-- 设置Spring&Hibernate日志输出级别 -->
<logger name="org.springframework" level="DEBUG"/>
<logger name="org.mybatis" level="DEBUG"/>
<logger name="com.ibatis" level="DEBUG"/>
<logger name="com.ibatis.common.jdbc.SimpleDataSource" level="DEBUG"/>
<logger name="com.ibatis.common.jdbc.ScriptRunner" level="DEBUG"/>
<logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="DEBUG"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>
<logger name="com.ruidou.baoqian.mapper" level="DEBUG"/>
<!-- 开发环境下的日志配置 -->
<root level="debug">
<appender-ref ref="console"/>
<appender-ref ref="logFile"/>
</root>
</configuration>
包目录结构说明:
com.example,工程启动包,
com.example.controller,controller控制包
com.example.dao , dao接口,mapper文件
com.example.dao.imp, service业务控制
com.example.entity , bean对象定义
com.example.utils, 工具类定义
DemoApplication.java
package com.example;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
@MapperScan("com.example.dao")
public class DemoApplication {
@RequestMapping("/")
public String hello(){
return "hello springboot,mybatis,mysql,maven";
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
EmpInfoController.java
package com.example.controller;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import com.example.dao.impl.EmpInfoService;
import com.example.entity.EmpInfo;
import com.example.utils.CommonUtils;
import com.example.utils.StringUtils;
@Controller
public class EmpInfoController {
@Autowired
private EmpInfoService service;
@PostMapping("/EmpInfo/register")
public String addEmpInfo(@RequestParam Map<String, Object> map){
Logger logger =LoggerFactory.getLogger(this.getClass());
EmpInfo obj = new EmpInfo();
obj.setEmpId(StringUtils.toSafeStr(map.get("userid")));
obj.setEmpName(StringUtils.toSafeStr(map.get("username")));
obj.setEmpAge(CommonUtils.toSafeInt(map.get("age")));
obj.setEmpEmail(StringUtils.toSafeStr(map.get("email")));
obj.setEmpBrithDate(StringUtils.toSafeStr(map.get("brithdate")));
obj.setEmpSex(StringUtils.toSafeStr(map.get("sex")));
String sPassword1 = StringUtils.toSafeStr(map.get("password"));
String sPassword2 = StringUtils.toSafeStr(map.get("password1"));
logger.debug("sPassword1======" + sPassword1);
logger.debug("sPassword2======" + sPassword2);
if(!sPassword1.equals(sPassword2)) {
return "error/error";
}
obj.setEmpPasswd(sPassword1);
service.addEmpInfo(obj);
return "user/success";
}
}
IndexController.java
package com.example.controller;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import com.example.dao.impl.EmpInfoService;
import com.example.entity.EmpInfo;
@Controller
public class IndexController {
@Autowired
private EmpInfoService empInfoService;
private Logger logger =LoggerFactory.getLogger(this.getClass());
@RequestMapping("index")
public String index(){
return "hello";
}
@RequestMapping("login")
public String longin(@RequestParam("username") String username, @RequestParam("password") String password, HttpServletRequest request){
EmpInfo obj1 = new EmpInfo();
obj1.setEmpId(username);
obj1.setEmpPasswd(password);
EmpInfo obj = empInfoService.empLogin(obj1);
logger.debug("obj.name="+obj.getEmpName());
if(obj != null)
return "user/success";
else
return "error/error";
}
@RequestMapping("register")
public String register(){
return "user/register";
}
}
最重要的dao和mapper文件
EmpINfoDao.java
package com.example.dao;
import org.apache.ibatis.annotations.Mapper;
import com.example.entity.EmpInfo;
@Mapper
public interface EmpInfoDao {
int addEmpInfo(EmpInfo empInfo);
EmpInfo empLogin(EmpInfo empInfo);
}
EmpInfoDao.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.dao.EmpInfoDao">
<resultMap id="BaseResultMap" type="com.example.entity.EmpInfo" >
<result column="emp_id" property="empId" jdbcType="VARCHAR"/>
<result column="emp_name" property="empName" jdbcType="VARCHAR"/>
<result column="emp_passwd" property="empPasswd" jdbcType="VARCHAR"/>
<result column="emp_sex" property="empSex" jdbcType="VARCHAR"/>
<result column="emp_age" property="empAge" jdbcType="INTEGER"/>
<result column="emp_brithdate" property="empBrithDate" jdbcType="VARCHAR"/>
<result column="emp_email" property="empEmail" jdbcType="VARCHAR"/>
</resultMap>
<insert id="addEmpInfo" parameterType="com.example.entity.EmpInfo">
insert into emp_info (emp_id, emp_name, emp_passwd, emp_age, emp_sex, emp_brithdate, emp_email)
values (#{empId,jdbcType=VARCHAR},
#{empName,jdbcType=VARCHAR},
#{empPasswd,jdbcType=VARCHAR},
#{empAge,jdbcType=INTEGER},
#{empSex,jdbcType=VARCHAR},
#{empBrithDate,jdbcType=VARCHAR},
#{empEmail,jdbcType=VARCHAR})
</insert>
<select id="empLogin" parameterType="com.example.entity.EmpInfo" resultMap="BaseResultMap">
SELECT emp_id,emp_name,emp_passwd,emp_age,emp_sex,emp_brithdate,emp_email
FROM emp_info WHERE emp_id= #{empId} AND emp_passwd = #{empPasswd}
</select>
</mapper>
EmpInfoService.java
package com.example.dao.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.dao.EmpInfoDao;
import com.example.entity.EmpInfo;
@Service
public class EmpInfoService {
@Autowired
private EmpInfoDao dao;
public int addEmpInfo(EmpInfo empInfo) {
return dao.addEmpInfo(empInfo);
}
public EmpInfo empLogin(EmpInfo empInfo){
return dao.empLogin(empInfo);
}
}实
实体bean类。Emoinfo.java
package com.example.entity;
/**
* @author x_houjianjie
*
*/
public class EmpInfo {
public String empId;
public String empName;
public String empSex;
public String empBrithDate;
public int empAge;
public String empEmail;
public String empPasswd;
public String getEmpId() {
return empId;
}
public void setEmpId(String empId) {
this.empId = empId;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public String getEmpBrithDate() {
return empBrithDate;
}
public void setEmpBrithDate(String empBrithDate) {
this.empBrithDate = empBrithDate;
}
public int getEmpAge() {
return empAge;
}
public void setEmpAge(int empAge) {
this.empAge = empAge;
}
public String getEmpEmail() {
return empEmail;
}
public void setEmpEmail(String empEmail) {
this.empEmail = empEmail;
}
public String getEmpSex() {
return empSex;
}
public void setEmpSex(String empSex) {
this.empSex = empSex;
}
public String getEmpPasswd() {
return empPasswd;
}
public void setEmpPasswd(String empPasswd) {
this.empPasswd = empPasswd;
}
}
工具类:CommonUtils.java
package com.example.utils;
public class CommonUtils {
public final static int toSafeInt(Object obj) {
return obj == null ? 0 : Integer.parseInt(String.valueOf(obj));
}
}
StringUtil.java
package com.example.utils;
public class StringUtils {
public final static String toSafeStr(Object obj){
return obj == null ? "" : String.valueOf(obj);
}
}
html文件目录结构,html文件必须在resources/templates目录下,
templates目录下包含:hello.html,user和error目录, user目录下包含:register.html和success.html,error目录下包含:error.html
hello.html, 注意,hello文件中使用from-data方式提交参数,conctroller中需要用request请求接受参数,@RequestParam("username") String username, @RequestParam("password") String password
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Title</title>
<link rel="stylesheet" href="test.css" type="text/css" />
</head>
<body>
请输入用户名与密码登录
<form action="/login" method="post" target='_parent' >
用户名:<input type="text" name="username" /><br>
密 码:<input type="password" name="password" /><br>
<input type="submit" value="登录" />
<a href="/register" target='_parent'>注册</a>
</form>
</body>
</html>
register.html页面用json方式提交参数,controller中用haspmap<string,object>来接受参数@RequestParam Map<String, Object> map
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Title</title>
<link rel="stylesheet" href="test.css" type="text/css" />
</head>
<body>
<h1>user info</h1>
<form action="/EmpInfo/register" method="post" enctype='application/json'>
用户ID:<input type="text" name="userid" /></br>
用户名:<input type="text" name="username" /></br>
密码:<input type="password" name="password" /></br>
确认密码:<input type="password" name="password1" /></br>
出生日期:<input type="text" name="brithdate" /></br>
年龄:<input type="text" name="age" /></br>
性别:<input type="text" name="sex" /></br>
邮箱:<input type="text" name="email" /></br>
<input type="submit" value="注册">
</form>
</body>
</html>
error.html页面用来跳转报错页面,处理流程中的错误
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Title</title>
<link rel="stylesheet" href="test.css" type="text/css" />
</head>
<body>
<h1>Error occur!</h1>
</body>
</html>
success.html跳转成功
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Title</title>
<link rel="stylesheet" href="test.css" type="text/css" />
</head>
<body>
<h1>Congratulations!</h1>
</body>
</html>
最后附上test.css
分享到:
相关推荐
一、项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,...Spring + SpringBoot+ mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等。
一、项目简述 本系统功能包括: 学生管理,教师管理,课程管理,成绩管理,系统管理等等。 二、项目运行 环境配置: ...Springboot + Maven + mybatis+ Vue 等等组成,B/S模式 + Maven管理等等。
spring +springboot+mybatis+maven 读写分离,数据库采用mysql, 采用springboot 采用项目框架搭建,继承spring 中的AbstractRoutingDataSource,实现 determineCurrentLookupKey 进行数据源的动态切换,采用Spring ...
本项目是一个基于Java技术栈,使用SpringBoot、Mybatis、MySQL数据库、Bootstrap前端框架和Maven构建工具实现的网上商城系统。以下将详细介绍这个系统的关键技术及其应用。 **1. Java**: 作为后端开发的主要语言,...
基于SpringBoot+MySQL+Vue的在线考试系统(源码+论文).zip 基于SpringBoot+MySQL+Vue的在线考试系统(源码+论文).zip 基于SpringBoot+MySQL+Vue的在线考试系统(源码+论文).zip 基于SpringBoot+MySQL+Vue的在线...
本教程将通过一个实际的项目案例,讲解如何使用Maven、SpringBoot、MyBatis和MySQL这四个关键技术来实现基本的数据增删改查(CURD)功能。下面我们将深入探讨这些技术及其在项目中的应用。 首先,Maven是一个项目...
这是一个java WEB小项目,用 Maven Springboot+mybatis+mysql+redis集成的小项目例子,可供新手进行参考学习,数据库是mysql 5.5 ,只是一个简单的小参考例子,测试过可以正常运行
一、项目简述 系统功能: ... 二、项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe ...项目技术: JSP +Springboot+ SpringMVC + MyBatis + ThymeLeaf + HTML+ JavaScript + JQuery + Ajax + maven等等
一、项目简述 ...进行收藏 我的音乐模块:收藏的歌曲会被添加到我的音乐列表中, 在我的音乐列表中也可以对...项目技术: JSP +SpringBoot + MyBatis + html+ css + JavaScript + JQuery + Ajax + Bootstrap+ maven 等等。
springboot+mybatis+thymeleaf+maven+mysql+layui小项目 基本框架都已搭建好,需要其他插件可以自己进行配置,适合新手学习。 前端用的是layUI框架,比较容易上手,官方有对应的案例和文档。
springboot+vue教务管理系统前后端分离(技术栈:springboot+vue+ElementUI+mybatis+mysql+maven) 一、功能说明: 基础管理,学院管理,专业管理,班级管理,权限管理,角色管理,用户管理,教学计划管理,教学执行...
springboot+vue教务管理系统前后端分离(技术栈:springboot+vue+ElementUI+mybatis+mysql+maven) 一、功能说明: 基础管理,学院管理,专业管理,班级管理,权限管理,角色管理,用户管理,教学计划管理,教学执行...
前端使用Html+CSS+JS实现,后端使用Java语言开发,使用Spring+SpringMVC+SpringBoot+MyBatis+PageHelper+MySQL+Maven实现,开发工具为Eclipse。该系统为Java分享学习网站。前端使用Html+CSS+JS实现,后端使用Java...
一、项目简述 本系统功能包括: 基于vue + Springboot前后端分离项目精简版仿小米商城 系统,注册登录,首页展示,商品展示,商品...项目技术: Springboot + Maven + Mybatis + Vue + Redis, B/S 模式+ Maven等等。
Java商城 免费 开源 CRMEB商城JAVA版,SpringBoot + Maven + Swagger + Mybatis 运行环境及框架: 1. 移动端uniapp开发框架 可生成H5 公众号 微信小程序 2. WEB Pc 管理后台使用Vue + Element UI 开发 兼容主流...
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 ...springboot项目简单、快速、方便,越来越多的人使用,这是一个Springboot+mybatis+mysql+web的实例,简单易懂,非常适合springboot的初学者
一、项目简述 功能:该项目是用springboot+layui+shiro写的医院管理系 统,该系统的业务比较复杂,...项目技术: JSP +Springboot+ SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + Layui+ maven等等
一、项目简述: 系统功能包括::学生信息管理、教师信息管理、课程信息管理、开课管理、学生成绩管理 ...注:选择不同的用户类型,可看到的系统功能不同(如admin可...Java + SpringBoot + MySQL + Mybatis + Maven + Vue
Maven+SpringBoot+Mybatis+MybatisPlus+MySQL的web项目,执行SpringbootMybatisDemoApplication.java文件的main方法即可把项目跑起来了,数据库相关sql放在了resources的sql文件夹里,记得执行