由于IDEA还不能熟练操作,此篇增删改简单实现用eclipse实现
springboot的搭建过程省略(springboot基础结构下载路径)
一、架构集成
官网下载的springboot基础结构不包含热部署,log4j,mybatis因此需要先架构集成
SpringBoot热部署开启
只需要在pom.xml中加入相关配置即可
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
SpringBoot中使用log4j
在pom.xml中加入log4j相关配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
uresources中加入log4j.properties
log4j.rootLogger=info,error,CONSOLE,DEBUG
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.logger.info=info
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.info.datePattern='.'yyyy-MM-dd
log4j.appender.info.Threshold = info
log4j.appender.info.append=true
log4j.appender.info.File=d://springboot3/logs/api_services_info.log
log4j.logger.error=error
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.error.datePattern='.'yyyy-MM-dd
log4j.appender.error.Threshold = error
log4j.appender.error.append=true
log4j.appender.error.File=d://springboot3/logs/error/api_services_error.log
log4j.logger.DEBUG=DEBUG
log4j.appender.DEBUG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DEBUG.layout=org.apache.log4j.PatternLayout
log4j.appender.DEBUG.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.DEBUG.datePattern='.'yyyy-MM-dd
log4j.appender.DEBUG.Threshold = DEBUG
log4j.appender.DEBUG.append=true
log4j.appender.DEBUG.File=d://springboot3/logs/debug/api_services_debug.log
SpringBoot中使用mybatis
在pom.xml中加入数据库连接及mybatis相关依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
在application.properties加入mybatis和数据源配置
jdbc:mysql://localhost:3306/###?useUnicode=true&characterEncoding=utf-8&useLegacyDatetimeCode=false&serverTimezone=UTC 时间区间
spring.application.name=spring-boot-config
server.port=8080
server.context-path=/
#mybatis mapper文件的位置
mybatis.mapper-locations=classpath*:mapper/**/*.xml
#扫描pojo类的位置,在此处指明扫描实体类的包,在mapper中就可以不用写pojo类的全路径名了
mybatis.type-aliases-package=com.example.model
jdbc.type=mysql
spring.datasource.url=jdbc:mysql://localhost:3306/demo //数据库
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
架构集成完毕,项目结构目录如下
pom.xml报错不影响项目
二、代码实现
tb_user.sql
INSERT INTO `tb_user` VALUES ('1', 'Howie');
INSERT INTO `tb_user` VALUES ('3', 'ls');
INSERT INTO `tb_user` VALUES ('4', 'ww');
INSERT INTO `tb_user` VALUES ('4594', 'aaa');
DemoApplication启动类配置
package com.example;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
//@SpringBootApplication = (默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan
@SpringBootApplication
//指定要扫描的Mapper类的包的路径
@MapperScan("com.example.mapper")
//定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中
@ComponentScan(basePackages="com.example")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
UserModel实体类
package com.example.model;
public class UserModel {
public String id;
public String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
UserService接口
package com.example.service;
import java.util.List;
import com.example.model.UserModel;
public interface UserService {
//查询用户列表
public List<UserModel> queryUserList();
//删除
public void deleteUserById(UserModel userModel);
//添加
public void addUser(UserModel userModel);
//查询用户id
public UserModel queryUserById(String id);
//修改
public void updateUser(UserModel userModel);
}
UserServiceImpl实现类
package com.example.service.impl;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.example.mapper.UserMapper;
import com.example.model.UserModel;
import com.example.service.UserService;
@Service("userService")
public class UserServiceImpl implements UserService {
@Resource
private UserMapper userMapper;
//用户列表
@Override
public List<UserModel> queryUserList() {
return userMapper.queryUserList();
}
//删除
@Override
public void deleteUserById(UserModel userModel) {
userMapper.deleteUserById(userModel);
}
//添加
@Override
public void addUser(UserModel userModel) {
userMapper.addUser(userModel);
}
//获取id
@Override
public UserModel queryUserById(String id) {
return userMapper.queryUserById(id);
}
//修改
@Override
public void updateUser(UserModel userModel) {
userMapper.updateUser(userModel);
}
}
Mapper接口
package com.example.mapper;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.example.model.UserModel;
@Repository
public interface UserMapper {
//查询用户列表
public List<UserModel> queryUserList();
//删除
public void deleteUserById(UserModel userModel);
//添加
public void addUser(UserModel userModel);
//查询用户id
public UserModel queryUserById(String id);
//修改
public void updateUser(UserModel userModel);
}
UserController控制器
删除和修改操作写在一起通过判断来执行删除或修改操作
id通过生成随机数set到usermodel内,无需数据库自动加一
package com.example.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.thymeleaf.util.StringUtils;
import com.example.model.UserModel;
import com.example.service.UserService;
@Controller
public class UserController {
@Autowired
private UserService userService;
//查询用户列表
@RequestMapping("/userList")
public ModelAndView queryUserList(){
List<UserModel> users = userService.queryUserList();
return new ModelAndView("userList","users",users);
}
//删除
@RequestMapping("/delete")
public ModelAndView delete(UserModel userModel){
userService.deleteUserById(userModel);
return queryUserList();
}
//添加 修改
@RequestMapping("/bfAddOrUpdate")
public ModelAndView bfAddOrUpdate(String id){
UserModel userModel = new UserModel();
if (!StringUtils.isEmpty(id)) {
userModel = userService.queryUserById(id);
}
return new ModelAndView("userAdd","user",userModel);
}
@RequestMapping("/AddOrUpdate")
public ModelAndView AddOrUpdate(UserModel userModel){
String id = userModel.getId();
if (StringUtils.isEmpty(id)) {
double random = Math.random();
String newid = String .valueOf(random).substring(2, 6);
userModel.setId(newid);
userService.addUser(userModel);
}else {
userService.updateUser(userModel);
}
return queryUserList();
}
}
UserMapper.xml
<?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.example.mapper.UserMapper" >
<!-- Result Map-->
<resultMap id="BaseResultMap" type="com.example.model.UserModel" >
<result column="id" property="id"/>
<result column="name" property="name"/>
</resultMap>
<sql id="Base_Column_List" >
id,name
</sql>
<!-- 新闻列表 -->
<select id="queryUserList" resultMap="BaseResultMap" >
select *
from tb_user
</select>
<!-- 删除 -->
<select id="deleteUserById" resultMap="BaseResultMap">
delete from tb_user where id = #{id}
</select>
<!-- 获取id -->
<select id="queryUserById" resultMap="BaseResultMap">
select *
from tb_user where id =#{id}
</select>
<!-- 添加 -->
<insert id="addUser">
insert into tb_user(id,name)values(#{id},#{name})
</insert>
<!-- 修改 -->
<update id="updateUser">
update tb_user
<trim suffixOverrides="," prefix="SET">
<if test="name !=null and name !=''"> name = #{name},</if>
</trim>
where id=#{id}
</update>
</mapper>
userList页面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户列表</title>
</head>
<body>
<table border="1px">
<tr>
<th>ID</th>
<th>姓名</th>
<th>操作</th>
<th><a th:href="@{/bfAddOrUpdate}">添加</a></th>
</tr>
<tr th:each="user: ${users}">
<td><span th:text="${user.id}"></span></td>
<td><span th:text="${user.name}"></span></td>
<td>
<a th:href="@{/delete(id=${user.id})}">删除</a>
<a th:href="@{/bfAddOrUpdate(id=${user.id})}">修改</a>
</td>
</tr>
</table>
</body>
</html>
userAdd页面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form th:action="@{/AddOrUpdate}" method="post">
<input type="hidden" th:value=${user.id} name="id">
姓名:<input type="text" th:value=${user.name} name="name">
<input type="submit" value="提交">
</form>
</body>
</html>
运行启动类效果展示
http://localhost:8080/userList
个人总结:还是用着SpringMVC的思路来完成的增删改,除了部分配置不同