赞
踩
需求分析:通过使用 SpringBoot+SpringMVC+MyBatis 整合实现一 个对数据库中的 users 表的 CRUD 的操作
整个项目目录如下
在pom文件中添加以下代码,然后clean project, 就可以看到项目中的Maven Dependencies目录
<dependencies>
<!-- springBoot 的启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <!-- web 启动器 -->
</dependencies>
pom文件中的需要导入:
spring-boot的启动器
web启动器
Mybatis启动器
mysql是数据库驱动
druid数据库连接池
<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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
</parent>
<groupId>com.myspringboot</groupId>
<artifactId>MySpringBoot02</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<java.version>1.8</java.version>
<thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>
</properties>
<dependencies>
<!-- springBoot 的启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- web 启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</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>
</dependency>
<!-- druid 数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.9</version>
</dependency>
</dependencies>
</project>
全局配置文件,改文件必须放在路径src/main/resources下
spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/ssm
spring.datasource.username=root
spring.datasource.password=123456789
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
mybatis.type-aliases-package=com.bjsxt.pojo
spring.datasource.type 的class如下图所示:
注意:
在application.properties文件中“=”后面的字符串最后不能有空格,否则会报错
CREATE TABLE `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;
package com.myspringboot.pojo;
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;
}
}
package com.myspringboot.mapper;
import java.util.List;
import com.myspringboot.pojo.Users;
public interface UsersMapper {
void insertUser(Users users);
List<Users> selectUsersAll();
//方法名必须和xml文件中的id相同,如果不相同会有以下的异常
//org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.myspringboot.mapper.UsersMapper.selectUsersAll
}
<?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.myspringboot.mapper.UsersMapper">
<insert id="insertUser" parameterType="users">
insert into users(name,age) values(#{name},#{age})
</insert>
<select id="selectUsersAll" resultType="users">
select id,name,age from users
</select>
</mapper>
package com.myspringboot.service;
import java.util.List;
import com.myspringboot.pojo.Users;
public interface UsersServices {
void addUser(Users users);
List<Users> findUserAll();
}
package com.myspringboot.service.imp;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.myspringboot.mapper.UsersMapper;
import com.myspringboot.pojo.Users;
import com.myspringboot.service.UsersServices;
@Service
@Transactional //表示所有方法受事务控制
public class UsersServicesImpl implements UsersServices{
@Autowired
private UsersMapper usersMapper;
@Override
public void addUser(Users users) {
this.usersMapper.insertUser(users);
}
@Override
public List<Users> findUserAll() {
//这里把service和mapper联系起来
return this.usersMapper.selectUsersAll();
}
}
package com.myspringboot.controller;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import com.myspringboot.pojo.Users;
import com.myspringboot.service.UsersServices;
@Controller
@RequestMapping("/users")
public class UserController {
@Resource
private UsersServices usersServices;
/**
* @param page
* @return
*/
@RequestMapping("/{page}") //页面跳转
public String showPage(@PathVariable String page) {
System.out.println("page: "+page);
return page;
}
@RequestMapping("/addUser") //添加用户
public String showPage(Users users) {
this.usersServices.addUser(users);
return "ok";
}
@RequestMapping("/find") //查询用户
public String findUsers(Model model) {
List<Users> list= this.usersServices.findUserAll();
model.addAttribute("list",list);
return "showUsers";
}
}
9.编写页面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<title>Insert title here</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 ="确定"/>
</form>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<title>操作提示页面</title>
</head>
<body>
操作成功。。。。。。
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<title>Insert title here</title>
</head>
<body>
<table border="1" style="width: 300px">
<tr>
<th>id</th>
<th>name</th>
<th>age</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>
10.编写启动类
package com.myspringboot;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.myspringboot.mapper") //@MapperScan 用户扫描MyBatis的Mapper接口
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
/**
* 启动应用app
* 1.controller定义page并调用service的方法
* 2.service实例化mapper对象,并调用mapper的方法
* 3.mapper调用mapper.xml中的sql语句
*
*/
}
11.启动
App.class右键 Run as>Java Application启动
在网页输入地址:http://localhost:8080/users/find
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。