SpringBoot入门——整合mybatis的增删改简单实现

由于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的思路来完成的增删改,除了部分配置不同

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值