一.项目功能描述
springboot项目,通过mybaits实现crud操作。新建项目:04-spt-mvc-persistence-crud
1.1 pom文件
<!-- springBoot的启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
<!-- web启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
<!-- Mybatis启动器 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<!-- mysql数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.3</version>
</dependency>
<!-- druid数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.9</version>
</dependency>
1.2 controller
package com.ljf.spring.boot.demo.persistence.controller;
import com.ljf.spring.boot.demo.persistence.model.Users;
import com.ljf.spring.boot.demo.persistence.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
/**
* @ClassName: UserController
* @Description: TODO
* @Author: liujianfu
* @Date: 2020/07/29 15:45:36
* @Version: V1.0
**/
@Controller
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService usersService;
/**
* 页面跳转
*/
@RequestMapping("/{page}")
public String showPage(@PathVariable String page){
System.out.println("进来了!!!"+page);
return page;
}
/**
* 添加用户
*/
@RequestMapping("/addUser")
public String addUser(Users users){
System.out.println("users:"+users.getName());
this.usersService.addUser(users);
return "ok";
}
/**
* 查询全部用户
*/
@RequestMapping("/findUserAll")
public String findUserAll(Model model){
List<Users> list = this.usersService.findUserAll();
model.addAttribute("list", list);
return "showUsers";
}
/**
* 根据用户id查询用户
*/
@RequestMapping("/findUserById")
public String findUserById(Integer id,Model model){
Users user = this.usersService.findUserById(id);
model.addAttribute("user", user);
System.out.println("update:"+user);
return "updateUser";
}
/**
* 更新用户
*/
@RequestMapping("/editUser")
public String editUser(Users users){
this.usersService.updateUser(users);
return "ok";
}
/**
* 删除用户
*/
@RequestMapping("/delUser")
public String delUser(Integer id){
this.usersService.deleteUserById(id);
return "redirect:/users/findUserAll"; //重定向页面
}
}
1.3 service
package com.ljf.spring.boot.demo.persistence.service;
import com.ljf.spring.boot.demo.persistence.model.Users;
import java.util.List;
public interface UserService {
void addUser(Users users);
List<Users> findUserAll();
Users findUserById(Integer id);
void updateUser(Users users);
void deleteUserById(Integer id);
}
package com.ljf.spring.boot.demo.persistence.service.impl;
import com.ljf.spring.boot.demo.persistence.dao.UsersMapper;
import com.ljf.spring.boot.demo.persistence.model.Users;
import com.ljf.spring.boot.demo.persistence.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @ClassName: UserServiceImpl
* @Description: TODO
* @Author: liujianfu
* @Date: 2020/07/29 17:16:59
* @Version: V1.0
**/
@Service
@Transactional
public class UserServiceImpl implements UserService {
@Autowired
private UsersMapper usersMapper;
@Override
public void addUser(Users users) {
usersMapper.insertUser(users);
}
@Override
public List<Users> findUserAll() {
return this.usersMapper.selectUsersAll();
}
@Override
public Users findUserById(Integer id) {
return this.usersMapper.selectUsersById(id);
}
@Override
public void updateUser(Users users) {
this.usersMapper.updateUser(users);
}
@Override
public void deleteUserById(Integer id) {
this.usersMapper.deleteUserById(id);
}
}
1.4 dao
package com.ljf.spring.boot.demo.persistence.dao;
import com.ljf.spring.boot.demo.persistence.model.Users;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface UsersMapper {
void insertUser(Users users);
List<Users> selectUsersAll();
Users selectUsersById(Integer id);
void updateUser(Users users);
void deleteUserById(Integer id);
}
1.5 model
package com.ljf.spring.boot.demo.persistence.model;
/**
* @ClassName: Users
* @Description: TODO
* @Author: liujianfu
* @Date: 2020/07/29 15:54:01
* @Version: V1.0
**/
public class Users
{
private Integer id;
private String name;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
1.6 启动类
package com.ljf.spring.boot.demo.persistence;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* Hello world!
*
*/
@SpringBootApplication
@MapperScan("com.ljf.spring.boot.demo.persistence.dao") //@MapperScan 用户扫描MyBatis的Mapper
public class App
{
public static void main( String[] args )
{
SpringApplication.run(App.class, args);
System.out.println("启动完成!!!");
}
}
1.7 资源配置文件
1.usersMpaper的内容:
<?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.ljf.spring.boot.demo.persistence.dao.UsersMapper" >
<!-- 添加信息 -->
<insert id="insertUser" parameterType="com.ljf.spring.boot.demo.persistence.model.Users">
insert into tb_users(name,age) values(#{name,jdbcType=VARCHAR},#{age,jdbcType=BIGINT})
</insert>
<!-- 查询用户信息 -->
<select id="selectUsersAll" resultType="com.ljf.spring.boot.demo.persistence.model.Users">
select id,name,age from tb_users
</select>
<!--通过id查询信息 -->
<select id="selectUsersById" resultType="com.ljf.spring.boot.demo.persistence.model.Users">
select id,name,age from tb_users where id = #{value}
</select>
<!-- 通过id修改 -->
<update id="updateUser" parameterType="com.ljf.spring.boot.demo.persistence.model.Users">
update tb_users set name=#{name} ,age=#{age} where id=#{id}
</update>
<!-- 删除数据 -->
<delete id="deleteUserById">
delete from tb_users where id = #{value}
</delete>
</mapper>
2.applicaton:
server:
port: 8081
spring:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test_db
username: root
password: root
type: com.alibaba.druid.pool.DruidDataSource
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.ljf.spring.boot.demo.persistence.model
logging:
level:
com.ljf.spring.boot.demo.persistence.dao: debug
3.sql文件:
CREATE TABLE `tb_users` (
`id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
4.input.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>添加用户</title>
</head>
<body>
<form th:action="@{/users/addUser}" method="post">
用户姓名:<input type="text" name="name"/><br/>
用户年龄:<input type="text" name="age"/><br/>
<input type="submit" value="确定"/><br/>
</form>
</body>
</html>
5.showpage.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>展示用户数据</title>
</head>
<body>
<table border="1" style="width:300px;">
<tr>
<th>用户ID</th>
<th>用户姓名</th>
<th>用户年龄</th>
</tr>
<tr th:each="user : ${list}">
<td th:text="${user.id}"></td>
<td th:text="${user.name}"></td>
<td th:text="${user.age}"></td>
</tr>
</table>
</body>
</html>
6.updateUser.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form th:action="@{/users/editUser}" method="post">
<input type="hidden" name="id" th:field="${user.id}"/>
用户姓名:<input type="text" name="name" th:field="${user.name}"/><br/>
用户年龄:<input type="text" name="age" th:field="${user.age}"/><br/>
<input type="submit" value="确定"/><br/>
</form>
</body>
</html>
7.ok.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>操作提示页面</title>
</head>
<body>
操作成功!!!
</body>
</html>