1、新建一个Maven项目,在pom.xml中添加依赖包如下:
4.0.0
com.etc
springboot2
0.0.1-SNAPSHOT
jar
springboot2
http://maven.apache.org
org.springframework.boot
spring-boot-starter-parent
1.4.7.RELEASE
UTF-8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-freemarker
org.springframework.boot
spring-boot-starter-jdbc
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.0
mysql
mysql-connector-java
5.1.35
com.alibaba
druid-spring-boot-starter
1.1.0
junit
junit
3.8.1
test
2、在com.etc.springboot2包下面新建一个SpringBootBaseApplication.java启动类:
package com.etc.springboot2;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
/**
* @Description:启动类,启动整个项目
* @author zoey
* @date:2018年3月7日
*/
@SpringBootApplication
@ComponentScan(basePackages="com.etc.*")//如果不写,默认扫描这个包下的所有类还有子包下的所有类
@MapperScan(value = "com.etc.mapper")//这样才能找到mapper文件
public class SpringBootBaseApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootBaseApplication.class, args);
System.out.println("启动完成。。。。。。。。。。。");
}
}
3、在数据库中新建一个表 t_user,添加一些简单的数据,如下:
4、新建src/main/resource源文件夹,在该文件夹下新建application.properties文件,配置一些参数如下:
###############################数据库配置###############################
spring.datasource.name=test
spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driverClassName=com.mysql.jdbc.Driver
###########################mybatis配置###############################
#全局映射器启用缓存
mybatis.configuration.cache-enabled=true
#查询时,关闭关联对象及时加载以提高性能
mybatis.configuration.lazy-loading-enabled=false
#按需加载字段(加载字段由SQL指定),不会加载关联表的所有字段,以提高性能
mybatis.configuration.aggressive-lazy-loading=false
#允许返回不同的结果集以达到通用的效果
mybatis.configuration.multiple-result-sets-enabled=true
#对于批量更新操作缓存SQL以提高性能
mybatis.configuration.default-executor-type=REUSE
#数据库执行超时时间
mybatis.configuration.default-statement-timeout=25000
mybatis.mapper-locations=classpath:mapping/*.xml
mybatis.type-aliases-package=com.etc.vo
5、在com.etc.vo包下新建一个User.java类:
package com.etc.vo;
/**
* @Description:用户实体类:包含用户的基本信息
* 表中的字段:user_id、user_name、user_age、user_sex
* @author zoey
* @date:2018年3月7日
*/
public class User {
private int userId;
private String userName;
private int userAge;
private String userSex;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getUserAge() {
return userAge;
}
public void setUserAge(int userAge) {
this.userAge = userAge;
}
public String getUserSex() {
return userSex;
}
public void setUserSex(String userSex) {
this.userSex = userSex;
}
public User(String userName, int userAge, String userSex) {
super();
this.userName = userName;
this.userAge = userAge;
this.userSex = userSex;
}
public User() {
super();
}
@Override
public String toString() {
return "User [userId=" + userId + ", userName=" + userName + ", userAge=" + userAge + ", userSex=" + userSex
+ "]";
}
}
6、在src/main/resources下新建一个mapping文件夹,然后新建UserMapper.xml文件如下:
insert into
t_user(user_name,user_age,user_sex)
values
(#{userName},#{userAge},#{userSex})
7、在com.etc.mapper包下新建UserMapper.xml文件如下:
package com.etc.mapper;
import java.util.List;
import com.etc.vo.User;
/**
* @Description:用户映射类,执行UserMapper.xml中的语句,方法名称与其中的id一致
* @author zoey
* @date:2018年3月7日
*/
public interface UserMapper {
List findAll();
User findById(int userId);
int insertUser(User user);
}
8、在com.etc.service包下新建UserService.java类如下:
package com.etc.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.etc.mapper.UserMapper;
import com.etc.vo.User;
@Service(value="userService")
public class UserService {
@Autowired
private UserMapper userMapper;
public List findAll() {
return userMapper.findAll();
}
public User findById(int userId) {
return userMapper.findById(userId);
}
public int insertUser(User user) {
return userMapper.insertUser(user);
}
}
9、在com.etc.controller包下新建UserController.java类如下:
package com.etc.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.etc.service.UserService;
import com.etc.vo.User;
/**
* @Description:对用户进行增删查改操作
* @author zoey
* @date:2018年3月7日
*/
@Controller
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
/**
* @Description:查询用户的所有信息
* 访问地址:http://localhost:8080/users/findAll
* @param request 请求参数,保存查询到的用户信息,在前台(freemarker页面)直接获取
* @return 返回用户列表页面
* @author:zoey
* @date:2018年3月7日
*/
@RequestMapping("/findAll")
public String findAll(HttpServletRequest request) {
System.out.println("进入查询方法");
List userList = userService.findAll();
for(User user:userList) {
System.out.println("用户:"+user);
}
request.setAttribute("userList", userList);
return "list";
}
/**
* @Description:根据用户ID查询用户信息
* 访问地址:http://localhost:8080/users/findById/1
* @param request
* @param id 使用url传递的参数
* @return 返回用户详细信息页面
* @author:zoey
* @date:2018年3月7日
*/
@RequestMapping("/findById/{id}")
public String findById(HttpServletRequest request,@PathVariable("id") int id) {
System.out.println("根据用户ID查询用户信息");
User user = userService.findById(id);
System.out.println("用户信息:"+user);
request.setAttribute("user", user);
return "details";
}
/**
* @Description:根据用户ID查询用户信息
* 访问地址:http://localhost:8080/users/findById2?user_id=1
* @param request
* @param id
* @return 返回用户详细信息页面
* @author:zoey
* @date:2018年3月7日
*/
@RequestMapping("/findById2")
public String findById2(HttpServletRequest request,@RequestParam("userId") int userId) {
System.out.println("根据用户ID查询用户信息");
User user = userService.findById(userId);
System.out.println("用户信息:"+user);
request.setAttribute("user", user);
return "details";
}
/**
* @Description:根据用户ID查询用户信息
* 访问地址:http://localhost:8080/users/findById/1
* @param request
* @param id
* @return 返回一个json对象(User的信息)
* @author:zoey
* @date:2018年3月7日
*/
@RequestMapping("/findById3/{id}")
@ResponseBody
public User findById3(HttpServletRequest request,@PathVariable("id") int id) {
System.out.println("根据用户ID查询用户信息333333333");
User user = userService.findById(id);
System.out.println("用户信息:"+user);
request.setAttribute("user", user);
return user;
}
@RequestMapping("/insert")
public String insert() {
return "insert";
}
/**
* @Description:新增用户:在页面填写用户信息,然后进行添加
* @param request
* @param user 页面传递的用户信息(传递的参数是一个用户对象)
* @return 返回成功或者失败页面
* @author:zoey
* @date:2018年3月7日
*/
@RequestMapping("/insertUser")
public String insertUser(HttpServletRequest request,User user) {
System.out.println("新增用户");
int result = userService.insertUser(user);
if(result == 1) {
System.out.println("新增用户成功!");
request.setAttribute("userName", user.getUserName());
return "success";
}else {
System.out.println("新增用户失败!");
return "error";
}
}
}
10、在src/main/resources下面新建一个templates文件夹,新建list.ftl页面如下:
列表页面
用户列表
用户ID
用户名
年龄
性别
<#list userList as item>
${item.userId}
${item.userName}
${item.userAge}
${item.userSex}
#list>
11、insert.ftl页面如下:
详情页面
新增用户
12、details.ftl页面如下:
详情页面
${user.userId}
${user.userName}
${user.userAge}
${user.userSex}
13、success.ftl页面如下:
详情页面
欢迎${userName}!
14、error.ftl页面如下:
详情页面
不好意思,报错了!
14、项目结构图如下:
查看全部信息:
访问方式:http://localhost:8080/users/findAll,页面效果如下:
查看详情:
访问方式:http://localhost:8080/users/findById/1,返回User对象,页面效果如下:
查看详情:
访问方式:http://localhost:8080/users/findById2?user_id=2,返回User对象,页面效果如下:
查看详情:
访问方式:http://localhost:8080/users/findById3?user_id=3,返回json数据,页面效果如下:
新增用户:
访问方式:http://localhost:8080/users/insert,页面效果如下:
返回成功页面: