boot spring 插入一条数据_小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查

Mybatis Plus官方文档已经很完善了,为什么还要写一个这样的文档?

官方文档注重知识结构的整理,没有注重学习者的学习顺序

官方文档中的案例注重API描述,比较适合学会mybatis plus之后,遇到问题再去翻阅。对于第一次使用Mybatis的初学者进行学习不是非常友好。

官方文档考虑的是全面完整的介绍Mybatis Plus, 我考虑的角度是:“最佳实践”。

世界上很多东西都符合2/8原则,本文档的目的是将:最重要最常用的那20%帮你提炼出来、快速上手应用!。另外的那80%都是不常用的,有空自己再去官方文档里面学吧!

我会将此文档写成一个系列的内容,记得关注我!zimug.com

我会将此文档写成一个系列的内容,记得关注我!zimug.com

我会将此文档写成一个系列的内容,记得关注我!zimug.com

一、Spring Boot整合Mybatis Plus

通过maven坐标引入依赖

com.baomidou

mybatis-plus-boot-starter

3.1.2

mysql

mysql-connector-java

runtime

org.projectlombok

lombok

true

application配置数据源及日志输出级别

# 配置数据源

spring:

datasource:

driver-class-name: com.mysql.cj.jdbc.Driver

url: jdbc:mysql://localhost:3306/mp?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai

username: test

password:

# 配置日志

logging:

level:

root: warn

com.zimug.boot.launch.mapper: trace

第三步:配置Mybatis的Mapper类文件的包扫描路径

@SpringBootApplication

@MapperScan(basePackages = {"com.zimug.boot.launch.mapper"})

public class BootLaunchApplication {

public static void main(String[] args) {

SpringApplication.run(BootLaunchApplication.class, args);

}

}

二、编码构建实体和Mapper

编写实体类User.java,对应的数据库表创建SQL在文末。

@Data //lombok注解

public class User {

private Long id;

private String name;

private Integer age;

private String email;

}

编写Mapper类UserMapper.java

public interface UserMapper extends BaseMapper {

}

三、CRUD基础使用案例

3.1.增加一条记录

User user = new User();

user.setName("字母哥");

user.setAge(18);

int row = userMapper.insert(user);

System.out.println("影响记录数:"+row);

System.out.println("雪花算法id: "+user.getId());

写了上面的java代码,MP将会自动的根据java代码构造下面的SQL去数据库执行。注意:主键默认采用雪花算法

# 主键自动填充了雪花算法

INSERT INTO user ( id, name, age)

VALUES ( ?, ?, ? )

3.2.根据主键删除一条记录

int rows = userMapper.deleteById(1170243901535006722L);

System.out.println("影响记录数:" + rows);

1170243901535006722L是数据插入的时候根据雪花算法生成的id

DELETE FROM user

WHERE id=?

3.3.根据条件删除记录

//构造条件

Map map = new HashMap<>();

map.put("name","字母哥");

map.put("age",18);

//执行删除

int rows = userMapper.deleteByMap(map);

System.out.println("影响记录数:" + rows);

DELETE FROM user

WHERE name = ?

AND age = ?

3.4.根据主键查询一条数据

User user = userMapper.selectById(1089911557332887553L);

System.out.println(user);

SELECT id,name,age,email

FROM user

WHERE id=?

3.5.根据ids批量查找数据

List ids = Arrays.asList(

1087982257332887553L,

1094590409767661570L,

1094592041087729666L

);

List list = userMapper.selectBatchIds(ids);

list.forEach(System.out::println);

SELECT id,name,age,email

FROM user

WHERE id IN ( ? , ? , ? )

3.6.根据指定参数查询

Map map = new HashMap<>();

//map的key指代的是mysql表中的列名,并非java实体的属性名

map.put("name", "Jone");

List list = userMapper.selectByMap(map);

list.forEach(System.out::println);

SELECT id,name,age,email

FROM user

WHERE name = ?

3.7.指定查询结果字段

QueryWrapper query = new QueryWrapper<>();

query.select("name", "age") //指定查询结果字段

.in("age", Arrays.asList(30, 31, 34, 35))

.last("limit 1");

List list = userMapper.selectList(query);

list.forEach(System.out::println);

SELECT name,age

FROM user

WHERE age IN (?,?,?,?)

LIMIT 1

QueryWrapper query = new QueryWrapper<>();

query.like("name", "J%") //like是MP的条件构造器,表示"模糊查询"

.lt("age", 40) //lt是MP的条件构造器,表示"小于"关系

.select("name", "age");

List> maps = userMapper.selectMaps(query);

maps.forEach(System.out::println);

SELECT name,age

FROM user

WHERE name LIKE ?

AND age < ?

3.8.通过主键id修改数据

User user = new User();

user.setId(1088248199570832385L);

user.setAge(18);

user.setEmail("hadoopcn2@163.com");

int rows = userMapper.updateById(user);

System.out.println("影响记录数:" + rows);

UPDATE user

SET age=?, email=?

WHERE id=?

3.9.根据UpdateWrapper自定义条件修改数据

UpdateWrapper update = new UpdateWrapper<>();

update.eq("name", "Jack").eq("age", 28); //eq是MP的条件构造器,表示"等于"关系

User user = new User();

user.setAge(29);

user.setEmail("hadoopcn2@163.com");

int rows = userMapper.update(user, update);

System.out.println("影响记录数:" + rows);

UPDATE user

SET age=?, email=?

WHERE name = ?

AND age = ?

附录---测试SQL:

DROP TABLE IF EXISTS user;

CREATE TABLE user

(

id BIGINT(20) NOT NULL COMMENT '主键ID',

name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',

age INT(11) NULL DEFAULT NULL COMMENT '年龄',

email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',

PRIMARY KEY (id)

);

其对应的数据库 Data 脚本如下:

DELETE FROM user;

INSERT INTO user (id, name, age, email) VALUES

(1, 'Jone', 18, 'test1@baomidou.com'),

(2, 'Jack', 20, 'test2@baomidou.com'),

(3, 'Tom', 28, 'test3@baomidou.com'),

(4, 'Sandy', 21, 'test4@baomidou.com'),

(5, 'Billie', 24, 'test5@baomidou.com');

欢迎关注我的博客,里面有很多精品合集

本文转载注明出处(必须带连接,不能只转文字):字母哥博客。

觉得对您有帮助的话,帮我点赞、分享!您的支持是我不竭的创作动力! 。另外,笔者最近一段时间输出了如下的精品内容,期待您的关注。

好的,关于在 Spring Boot插入一条数据,我们可以按照以下步骤进行操作: 1. 首先,我们需要在 pom.xml 中引入 Spring Boot 的相关依赖,包括 Spring Boot Starter 和 Spring Boot Starter Data JPA,如下所示: ```xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> </dependencies> ``` 2. 在 application.properties 或 application.yml 配置文件中,配置数据库连接信息,例如: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` 3. 创建一个实体类,用于映射数据库中的表结构,例如: ```java @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private Integer age; // 省略 getter 和 setter 方法 } ``` 4. 创建一个 Repository 接口,用于操作数据库,例如: ```java @Repository public interface UserRepository extends JpaRepository<User, Long> { } ``` 5. 在业务逻辑中调用 UserRepository 的 save() 方法即可插入一条数据,例如: ```java @Service public class UserService { @Autowired private UserRepository userRepository; public void addUser() { User user = new User(); user.setName("张三"); user.setAge(20); userRepository.save(user); } } ``` 以上就是在 Spring Boot插入一条数据的详细步骤。需要注意的是,在实际开发中,我们需要根据具体的业务需求进行适当的调整,例如增加数据校验、事务管理等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值