首页 > 其他分享 >SpringBoot学习笔记(3)

SpringBoot学习笔记(3)

时间:2024-10-24 18:45:49浏览次数:3  
标签:return SpringBoot int 笔记 public 学习 user id delete

一. ORM基本介绍

         1.    ORM(Object Relational Mapping,对象关系映射)是为了解决面向对象与关系数据库存在的互不匹配现象的一种技术。ORM通过使用描述对象和数据库之间映射的元数据讲程序中的对象自动持久化到关系数据库中,即ORM能帮助我们完成对象到数据库表的映射,既完成存储,也完成读取。  

        2.Mybatis-Plus是一款优秀的数据持久层ORM框架,目前被广泛地使用于应用系统。Mybatis能够非常灵活地实现动态SQL,可以使用XML或注解来配置喝映射原生信息,能够轻松地讲Java的POJO(Plain Ordinary Java Object,普通的Java对象)与数据库中的表和字段进行映射关联。Mybatis—Plus是一个Mybatis增强工具,在Mybaits基础上做了增强,简化了开发。

二. MyBatis Plus简单上手

        1.使用前配置

        (1)添加依赖。使用前需要在maven中添加依赖,在pom.xml中添加如下依赖:

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.0</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.15</version>
        </dependency>

        (2)在application.properties中配置好数据库设置:

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=false
spring.datasource.username=root
spring.datasource.password=root
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

       (3)在启动类中添加@MapperScan注解,使得程序可以直接识别到所有的Mapper,不用依次添加Mapper注解。

@SpringBootApplication
@MapperScan("com.adored.my_test_springboot_project.mapper")
public class MyTestSpringbootProjectApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyTestSpringbootProjectApplication.class, args);
    }

}

      2.使用Mybatis编写数据库CRUD功能

        1.数据库建表。对于想实现CRUD功能的数据库进行建表(这里以User表为例),建立好字段名id,username,password(id为主键)。

          2.建立实体类。在项目的entity包中写好对应的实体类 ,方便后续映射。

@Data
public class User {
    private int id;
    private String username;
    private String password;
}

         3.编写mapper层。在项目的mapper包中编写用来映射实体类和数据库表的mapper接口,这里只需写出mapper接口就可以,后续的对应映射以及相关操作mybatis会帮助我们完成。

            tip:我们在mapper层中写的interface的mapper类是不能被实例化的,但在程序运行过程中mybatis会利用动态代理机制自动帮我们完成接口的实例化,如果没有使用mybatis框架,仍需自己手动编写实现类来进行实例化。

@Mapper
public interface UserMapper {
    //查询所有用户
    @Select("select * from user")
    public List<User> findAll();

    @Insert("insert  into user values (#{id},#{username},#{password})")
    public int insert(User user);

    @Delete("delete from user where id=#{id}")
    public int delete(int id);
}

        如上述代码,在UserMapper接口中编写了对于数据库表的查询,增添,删除等操作。

        4.编写service层。在项目的service包中,编写对应功能的具体实现方法。

  @GetMapping("user")
    public List query(){
        List<User> list = userMapper.findAll();
        System.out.println(list);
        return list;
    }

    @PostMapping("user/add")
    public String save(User user){
       int i= userMapper.insert(user);
       if(i>0){
           return "success";
       }
       else {
           return "fail";
       }
    }

    @PostMapping("user/delete")
    public String delete(int id){
        int i= userMapper.delete(id);
        if(i>0){
            return "success";
        }
        else {
            return "fail";
        }
    }
}

        上述代码只是为了方便,将具体实现的方法都一起写在controller层中了,实际开发时需分开编写。

        5.编写controller层。在项目中的controller包中编写项目所需的前后端交互的post,get等请求。

@RestController
public class UserController {

    @Autowired
    private UserMapper userMapper;

    @GetMapping("user")
    public List query(){
        List<User> list = userMapper.findAll();
        System.out.println(list);
        return list;
    }

    @PostMapping("user/add")
    public String save(User user){
       int i= userMapper.insert(user);
       if(i>0){
           return "success";
       }
       else {
           return "fail";
       }
    }

    @PostMapping("user/delete")
    public String delete(int id){
        int i= userMapper.delete(id);
        if(i>0){
            return "success";
        }
        else {
            return "fail";
        }
    }
}

        tip:这里的@Autowired注解是用来自动对UserMapper接口生成实现类的

标签:return,SpringBoot,int,笔记,public,学习,user,id,delete
From: https://blog.csdn.net/m0_47801459/article/details/143192368

相关文章

  • CDQ 分治学习笔记
    鲜花开新坑。早该卷卷了。集训队论文自认为写的很清晰。感觉对于一道自己进集训队时的国赛题能发明一种新做法很牛啊!简述CDQ分治是一种离线分治做法。CDQ分治并没有很固定的模板,这是一种分治思想的延伸。对于一道带修的数据结构问题,我们可以将每个查询视作其之前修改对......
  • 2024-10-24 学习人工智能的Day14 pandas(1)
    一、基础1、概述Pandas是一个开源的第三方Python库,从Numpy和Matplotlib的基础上构建而来Pandas名字衍生自术语“paneldata”(面板数据)和“Pythondataanalysis”(Python数据分析)Pandas已经成为Python数据分析的必备高级工具,它的目标是成为强大、灵活、可以......
  • Redis学习:十大数据类型、RDB持久化
    Redis学习文章目录Redis学习1.Redis-10大数据类型2.Redis持久化1.Redis-10大数据类型数据类型是value的类型,key的类型都是String数据类型是value的类型,key的类型都是String数据类型是value的类型,key的类型都是String命令不区分大小写,但key是区分大小写的命......
  • C++学习路线(二十二)
    构造函数构造函数作用在创建一个新的对象时,自动调用的函数,用来进行“初始化”工作:对这个对象内部的数据成员进行初始化。构造函数特点1.自动调用(在创建新对象时,自动调用)2.构造函数的函数名,和类名相同3.构造函数没有返回类型4.可以有多个构造函数(即函数重载形式)构......
  • 【WOA-CNN-LSTM】基于鲸鱼算法优化深度学习预测模型的超参数研究(Matlab代码实现)
     ......
  • SpringBoot集成Jedis
    SpringBoot集成JedisJedis/Redis/JDK版本关系JedisversionSupportedRedisversionsJDKCompatibility3.9+5.0to6.2Familyofreleases8,11>=4.0Version5.0to7.2Familyofreleases8,11,17>=5.0Version6.0tocurrent8,11,17,21&......
  • springboot-实现excle文件导出的单元格相同内容合并
    导出excle文件中的单元格有些需要合并如何操作例如:左边的表格想合并单元格成右边的表格更加便于观看        一、依赖文件<!--excle操作--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId>......
  • 机器学习中验证两个算法之间是否存在显著差距的t-test检验
    同一主题的简单分析版本,建议查看:机器学习领域中假设检验的使用本文内容为在上文基础上进一步分析版本。相关:t检验t检验应用条件t检验(t-test)t-test终极指南一文详解t检验t检验,亦称studentt检验(Student'sttest),主要用于样本含量较小(例如n<30),总体标准差σ未知的正......
  • 机器学习之 AdaBoost(Adaptive Boosting)
    机器学习之AdaBoost(AdaptiveBoosting)AdaBoost(AdaptiveBoosting)是一种集成学习方法,主要用于提升弱分类器的性能,通过组合多个弱分类器(例如决策树)来构建一个强分类器。AdaBoost在1995年由YoavFreund和RobertSchapire提出,并且在机器学习领域得到了广泛的应用。基本介绍......
  • SpringBoot入门到精通(十三)日志:别小看它,否则吃亏的是自己!学会你也可以设计架构
    别小看他,当你面对的时候,就会知道,多么痛的领悟!如何在SpringBoot中使用Logback记录详细的日志?整合LogBack,Log4J...等,是不是很多方法!但需要注意,我讲的可能和你是一样的,但也是不一样的。常见日志级别:高---低排列TRACE:描述:最详细的日志级别,通常用于开发和调试阶段......