首先创建一个Maven工程
第一步:选择Maven项目创建结构
第二步:配置项目属性
点击finish即可完成创建
再来看一下项目的目录
然后配置pom.xml依赖文件
<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.znkj</groupId>
<artifactId>springbootest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springbootest</name>
<description>Demo project for Spring Boot</description>
<!-- 引入SpringBoot父类依赖 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- SpringBoot-web组件 springmvc+spring+mybatis --><dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
<exclusions><exclusion>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId>
<version>5.2.4.Final</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin><groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.properties(数据源配置)
server.port=8080
#springboot mybatis
#jiazai mybatis peizhiwenjian
mybatis.mapper-locations = classpath:mapper/*Mapper.xml
mybatis.type-aliases-package = com.znkj.demo.entity
#shujuyuan
spring.datasource.driver-class-name= com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username = root
spring.datasource.password = ****
spring.mybatis.database = mysql
entity(实体类)
package com.znkj.demo.entity;
import org.springframework.stereotype.Component;
@Component("user")
public class User{
private int id;//用户ID
private String username;//用户名
private int age;//用户年龄
/**
* @return the id
*/
public int getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(int id) {
this.id = id;
}
/**
* @return the username
*/
public String getUsername() {
return username;
}
/**
* @param username the username to set
*/
public void setUsername(String username) {
this.username = username;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
/* (非 Javadoc)
* <p>Title: toString</p>
* <p>Description: </p>
* @return
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", age=" + age + "]";
}
}
dao(接口)
package com.znkj.demo.dao;
import java.util.List;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.stereotype.Repository;
import com.znkj.demo.entity.User;
/**
*
* @描述:用户接口层
* @方法名:
* @param
* @return
* @返回类型
* @创建人
* @创建时间
* @修改人
* @修改时间
* @修改备注
* @since
* @throws
*/
@MapperScan//扫描dao接口
@Repository//提供异常转译
public interface UserDao {
/**
*
* @Title: findUserInfo
* @Description: 查询(这里用一句话描述这个方法的作用)
* @param @return 设定文件
* @return List<User> 返回类型
* @throws
*/
public List<User> findUser();
/**
*
* @Title: addUserInfo
* @Description: 添加(这里用一句话描述这个方法的作用)
* @param @param user
* @param @return 设定文件
* @return int 返回类型
* @throws
*/
public boolean addUser(User user);
/**
*
* @Title: delUserInfo
* @Description: 删除(这里用一句话描述这个方法的作用)
* @param @param id
* @param @return 设定文件
* @return int 返回类型
* @throws
*/
public boolean delUser(User user);
/**
*
* @Title: updateUser
* @Description: 修改(这里用一句话描述这个方法的作用)
* @param @param user
* @param @return 设定文件
* @return int 返回类型
* @throws
*/
public boolean updateUser(User user);
}
mapper(dao实现类)
<?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.znkj.demo.dao.UserDao">
<!-- 查询 -->
<select id="findUser" resultType="com.znkj.demo.entity.User">
select * from users
</select>
<!-- 添加 -->
<insert id="addUser" parameterType="com.znkj.demo.entity.User">
insert into users (username,age)
values (#{username},#{age})
</insert>
<!-- 删除 -->
<delete id="delUser" parameterType="com.znkj.demo.entity.User">
delete from users where id=#{id}
</delete>
<!-- 修改 -->
<update id="updateUser" parameterType="com.znkj.demo.entity.User">
update users set username=#{username},age=#{age} where id =#{id}
</update>
</mapper>
controller(控制层)
package com.znkj.demo.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.znkj.demo.entity.User;
import com.znkj.demo.service.UserService;
/**
*
* @描述:用户模块控制层
* @方法名:
* @param
* @return
* @返回类型
* @创建人
* @创建时间
* @修改人
* @修改时间
* @修改备注
* @since
* @throws
*/
@RestController//注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器。
@RequestMapping("user")//请求地址
public class UserController {
@Autowired
UserService userService;
@Autowired
List<User> list=new ArrayList<User>();
/* (非 Javadoc)
* <p>Title: findUserInfo</p>
* <p>Description: 查询</p>
* @return
* @see com.znkj.demo.service.UserService#findUserInfo()
*/
@RequestMapping(value="findUser")
public List<User> findUser() {
System.out.println(userService.findUser());
list = userService.findUser();
return list;
}
/* (非 Javadoc)
* <p>Title: addUserInfo</p>
* <p>Description: 添加</p>
* @param user
* @return
* @see com.znkj.demo.service.UserService#addUserInfo(com.znkj.demo.entity.User)
*/
@RequestMapping(value="addUser")
public boolean addUser(User user) {
System.out.println(user);
return userService.addUser(user);
}
/* (非 Javadoc)
* <p>Title: delUserInfo</p>
* <p>Description: 删除</p>
* @param id
* @return
* @see com.znkj.demo.service.UserService#delUserInfo(int)
*/
@RequestMapping(value="delUser")
public boolean delUser(User user) {
System.out.println(user);
return userService.delUser(user);
}
/**
*
* @Title: updateUser
* @Description: 修改(这里用一句话描述这个方法的作用)
* @param @param user
* @param @return 设定文件
* @return int 返回类型
* @throws
*/
@RequestMapping(value="updateUser")
public boolean updateUser(User user){
System.out.println(user);
return userService.updateUser(user);
}
}
service(业务层接口)
package com.znkj.demo.service;
import java.util.List;
import com.znkj.demo.entity.User;
/**
*
* @描述:用户业务层接口
* @方法名:
* @param
* @return
* @返回类型
* @创建人
* @创建时间
* @修改人
* @修改时间
* @修改备注
* @since
* @throws
*/
public interface UserService {
/**
*
* @Title: findUserInfo
* @Description: 查询(这里用一句话描述这个方法的作用)
* @param @return 设定文件
* @return List<User> 返回类型
* @throws
*/
public List<User> findUser();
/**
*
* @Title: addUserInfo
* @Description: 添加(这里用一句话描述这个方法的作用)
* @param @param user
* @param @return 设定文件
* @return int 返回类型
* @throws
*/
public boolean addUser(User user);
/**
*
* @Title: delUserInfo
* @Description: 删除(这里用一句话描述这个方法的作用)
* @param @param id
* @param @return 设定文件
* @return int 返回类型
* @throws
*/
public boolean delUser(User user);
/**
*
* @Title: updateUser
* @Description: 修改(这里用一句话描述这个方法的作用)
* @param @param user
* @param @return 设定文件
* @return int 返回类型
* @throws
*/
public boolean updateUser(User user);
}
serviceimpl(业务层实现类)
package com.znkj.demo.service.impl;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.znkj.demo.dao.UserDao;
import com.znkj.demo.entity.User;
import com.znkj.demo.service.UserService;
/**
*
* @描述:用户业务实现层
* @方法名:
* @param
* @return
* @返回类型
* @创建人
* @创建时间
* @修改人
* @修改时间
* @修改备注
* @since
* @throws
*/
@Service("userService")//用于修饰service层的组件
public class UserServiceImpl implements UserService {
@Autowired
UserDao userDao;
@Autowired
List<User> list=new ArrayList<User>();
/* (非 Javadoc)
* <p>Title: findUserInfo</p>
* <p>Description: 查询</p>
* @return
* @see com.znkj.demo.service.UserService#findUserInfo()
*/
@Override
public List<User> findUser() {
list = userDao.findUser();
return list;
}
/* (非 Javadoc)
* <p>Title: addUserInfo</p>
* <p>Description: 添加</p>
* @param user
* @return
* @see com.znkj.demo.service.UserService#addUserInfo(com.znkj.demo.entity.User)
*/
@Override
public boolean addUser(User user) {
return userDao.addUser(user);
}
/* (非 Javadoc)
* <p>Title: delUserInfo</p>
* <p>Description: 删除</p>
* @param id
* @return
* @see com.znkj.demo.service.UserService#delUserInfo(int)
*/
@Override
public boolean delUser(User user) {
return userDao.delUser(user);
}
/* (非 Javadoc)
* <p>Title: updateUser</p>
* <p>Description: 修改</p>
* @param user
* @return
* @see com.znkj.demo.service.UserService#updateUser(com.znkj.demo.entity.User)
*/
@Override
public boolean updateUser(User user) {
return userDao.updateUser(user);
}
}
在webapp下面新建js文件夹
js(存放jquery文件)
jquery2.0.3.min.js
在webapp下面新建html页面
add.html(添加)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>添加</title>
<script src="js/jquery2.0.3.min.js"></script><!-- 引用jquery -->
</head>
<body>
用户名:<input type="text" name="username" id="username"/><br/>
年龄:<input type="text" name="age" id="age"/><br/>
<button type="button" οnclick="addUser()">添加</button>
<script type="text/javascript">
/**
* 添加
*/
function addUser(){
var username=document.getElementById("username").value;
if(username.length==0){
alert('用户名不能为空');
return false;
}
var age=document.getElementById("age").value;
if(age.length==0){
alert('年龄不能为空');
return false;
}
$.ajax({
url:'/user/addUser?username='+username+'&age='+age,
type:'post',
dataType:'json',
contenType:'application/json',
error:function(){
alert('输入错误');
}
}),
function success(data){
if(data!=null){
alert('添加成功');
}
}
}
</script>
</body>
</html>
delete.html(删除)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>删除</title>
<script src="js/jquery2.0.3.min.js"></script><!-- 引用jquery -->
</head>
<body>
ID:<input type="text" name="id" id="id"/><br/>
<button type="button" οnclick="deleteone()">删除</button>
<script type="text/javascript">
/**
* 删除
*/
function deleteone(){
var id=document.getElementById("id").value;
if(id.length==0){
alert('ID不能为空');
return false;
}
$.ajax({
url:'/user/delUser?id='+id,
type:'post',
dataType:'json',
contenType:'application/json',
error:function(){
alert('输入错误');
}
}),
function success(data){
if(data!=null){
alert('删除成功');
}
}
}
</script>
</body>
</html>
update.html(修改)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>修改</title>
<script src="js/jquery2.0.3.min.js"></script><!-- 引用jquery -->
</head>
<body>
ID:<input type="text" name="id" id="id"/><br/>
用户名:<input type="text" name="username" id="username"/><br/>
年龄:<input type="text" name="age" id="age"/><br/>
<button type="button" οnclick="updateone()">修改</button>
<script type="text/javascript">
/**
* 修改
*/
function updateone(){
var id=document.getElementById("id").value;
if(id.length==0){
alert('用户ID不能为空');
return false;
}
var username=document.getElementById("username").value;
if(username.length==0){
alert('用户名不能为空');
return false;
}
var age=document.getElementById("age").value;
if(age.length==0){
alert('年龄不能为空');
return false;
}
$.ajax({
url:'/user/updateUser?id='+id+'&username='+username+'&age='+age,
type:'post',
dataType:'json',
contenType:'application/json',
error:function(){
alert('输入错误');
}
}),
function success(data){
if(data!=null){
alert('修改成功');
}
}
}
</script>
</body>
</html>
select.html(查询)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>查询</title>
<script src="js/jquery2.0.3.min.js"></script><!-- 引用jquery -->
</head>
<body>
<table>
<thead>
<tr>
<td>ID</td>
<td>用户名</td>
<td>年龄</td>
</tr>
</thead>
<tbody id="thead">
</tbody>
</table>
<script type="text/javascript">
/**
* 查询
*/
$(document).ready(function(){
select();
});
function select(){
$.ajax({
url:'/user/findUser',
type:'post',
dataType:'json',
contenType:'application/json',
success:success
})
function success(data){
var htm='';
for(var i=0;i<data.length;i++){
htm+="<tr>";
htm+="<td>"+data[i].id+"</td>";
htm+="<td>"+data[i].username+"</td>";
htm+="<td>"+data[i].age+"</td>";
htm+="</tr>";
}
$("#thead").html(htm);
}
$("#select").click(function() {
});
}
</script>
</body>
</html>
index.html(首页)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>首页</title>
<style>
.a{
text-decoration: none;
color:red;
}
</style>
</head>
<body>
<div class="a">
<a href="add.html">添加</a><br/>
<a href="delete.html">删除</a><br/>
<a href="update.html">修改</a><br/>
<a href="select.html">查询</a><br/>
</div>
</body>
</html>
看到下面这个页面表示启动成功
访问页面数据显示成功