Spring Boot集成MyBatis实现增查删操作
1、创建maven工程
创建项目参考:https://www.cnblogs.com/sunnyyangwang/p/10399689.html
整个目录结构如下,
2、数据库设计
创建表
CREATE TABLE `Userdemo` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`updateTime` datetime DEFAULT NULL,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
插入数据
INSERT INTO `Userdemo` VALUES ('20', '2019-02-19 16:28:51', 'sunny', 'sunny12345');
INSERT INTO `Userdemo` VALUES ('21', '2019-02-19 16:29:14', 'test', 'hang123');
INSERT INTO `Userdemo` VALUES ('22', '2019-01-01 16:30:16', '胡思', 'test123');
INSERT INTO `Userdemo` VALUES ('23', '2019-01-01 16:38:14', 'test', 'test');
INSERT INTO `Userdemo` VALUES ('24', '2019-02-19 16:38:27', 'test1', 'tesswv');
3、配置项目
3.1 配置数据库连接
先创建src/main/resources/目录,编辑application.properties文件。
spring.datasource.url = jdbc:mysql://172.16.16.71:3306/test
spring.datasource.username = aaa
spring.datasource.password = aaa123
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.max-active=20
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.initial-size=10
3.2 pom.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<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>
<groupId>com.sunny</groupId>
<artifactId>hello</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- Spring boot 父引用-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
</parent>
<dependencies>
<!-- Spring boot 核心web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mysql 数据库驱动. -->
<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.1.1</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3.3 创建项目启动类Application.java
package com.sunny;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.sunny.*")
public class Application {
public static void main(String[] args){
//Spring应用启动起来
SpringApplication.run(Application.class,args);
}
}
3.4 创建测试类Demo.java
public class Demo {
private long id;
private String name;
private String password;
private Date updateTime;
//省略getter and setter….
3.4 创建接口DemoMapper
public interface DemoMapper {
@Select("select id,name from Userdemo where name = #{name}")
public List<Demo> likeName(String name);
@Select("select * from Userdemo where id = #{id}")
public Demo getById(long id);
@Select("select name from Userdemo where id = #{id}")
public int getNameById(long id);
//插入并保存数据
// @Insert("insert into Userdemo(name) values(#{name})")
@Insert("insert into Userdemo(name,password,updateTime) values(#{name},#{password},#{updateTime})")
@Options(useGeneratedKeys = true,keyProperty = "id",keyColumn = "id")
public void save(Demo demo);
//删除并保存数据
// @Insert("insert into Userdemo(name) values(#{name})")
@Delete("delete from Userdemo where name = #{name}")
public void deleteDemo(Demo demo);
}
3.5 创建服务类DemoService
@Service
public class DemoService {
@Autowired
private DemoMapper demoMapper;
//注入过程会出现红色XXX,跟IDEA编辑器相关,不是代码报错。参考:https://www.oschina.net/question/202626_181237
public List<Demo> likeName(String name){
return demoMapper.likeName(name);
}
public Demo getById(long id){
return demoMapper.getById(id);
}
@Transactional //添加事务
public void save(Demo demo){
demoMapper.save(demo);
}
public void deleteDemo(Demo demo){
demoMapper.deleteDemo(demo);
}
}
3.5 创建访问类DemoController
加入分页PageHelper类,由于多条记录对应同一个用户名,涉及到的条目较多,需要对页面条目显示限制。
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.0</version>
</dependency>
创建分页类MybatisConfig.java
package com.sunny.config;
import com.github.pagehelper.PageHelper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;
@Configuration
public class MybatisConfig {
@Bean
public PageHelper pageHelper(){
System.out.println("MybatisConfiguration.pageHelper()");
PageHelper pageHelper = new PageHelper();
Properties p = new Properties();
p.setProperty("OffsetAsPageNum","true");
p.setProperty("rowBoundsWithCount","true");
p.setProperty("reasonable","true");
pageHelper.setProperties(p);
return pageHelper;
}
}
配置controller服务
@RestController
public class DemoController {
@Autowired
private DemoService demoService;
@RequestMapping("/likeName")
public List<Demo> likeName(String name){
//startPage(1,3)表示第一页,每页展示3条记录
PageHelper.startPage(1,3);
return demoService.likeName(name);
//页面插入
@RequestMapping("/save")
public Demo save(){
Demo demo = new Demo();
demo.setName("test222");
demo.setPassword("222");
Date now = new Date();
demo.setUpdateTime(now);
demoService.save(demo);
return demo;
}
//页面删除
@RequestMapping("/del")
public Demo deleteDemo(){
Demo demo = new Demo();
//demo.getName();
demo.setName("test");
demoService.deleteDemo(demo);
return demo;
}
}
4、启动服务
入口文件启动访问,
5、访问测试
浏览器访问地址:http://localhost:8080/likeName?name=test1
依次操作:插入—查询—删除—查询
插入语句
查询语句
删除语句,
删除之后,数据为空。
自此,完成了springboot项目部署启动过程,可以实现增、删,查语句实现。
总结:操作步骤如下,
主配置文件:pom.xml
配置启动入口:App.java,
配置demo:数据持久化字段,
配置mapper:数据操作接口,
配置sevice:配置事务类,
配置controller:配置访问接口。
配置通用类configure:通用插件类。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗