SpringBoot框架整合SSM實現簡單資料庫增刪改查
首先建立一個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父類依賴 -->
<parent>
<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" onclick="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" onclick="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" onclick="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>
看到下面這個頁面表示啟動成功
訪問頁面資料顯示成功
這樣一個基本的整合就完成了,剛學的有不少瑕疵,大家有什麼意見可以留言。