赞
踩
①创建springboot项目,勾选spring Web模板+MySQL Driver驱动
②在pom.xml文件中手动添加MyBatis-Plus 、Druid (插件的左边可以去官网查询)、lombok(具体左右在下文会介绍)
- <!-- 手动添加mybatis-plus-->
- <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
- <dependency>
- <groupId>com.baomidou</groupId>
- <artifactId>mybatis-plus-boot-starter</artifactId>
- <version>3.5.1</version>
- </dependency>
- <!--手动添加德鲁伊-->
- <!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>druid-spring-boot-starter</artifactId>
- <version>1.2.8</version>
- </dependency>
- <!--手动加入Lombook-->
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- </dependency>
③将application.properties文件修改为 application.yml文件
①application.yml配置文件:
- #第二种方法:Druid专用配置 推荐
- spring:
- datasource:
- druid:
- driver-class-name: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://localhost:3306/user_db?serverTimezone=GMT
- username: root
- password: admin
-
- #开启MP运行日志
- mybatis-plus:
- configuration:
- # 标准输出 打印到控制台上 以后我们就不用sout输出了, 这个东西会帮我们输出
- log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-
②实体类:
其中@Data的注释来源于lombok,一个java的类库,提供了一组注解,简化了POJO实体类开发
但是需要在配置文件中导入坐标
- import com.baomidou.mybatisplus.annotation.IdType;
- import com.baomidou.mybatisplus.annotation.TableField;
- import com.baomidou.mybatisplus.annotation.TableId;
- import com.baomidou.mybatisplus.annotation.TableName;
- import lombok.*;
-
- //@Getter所有的get方法
- //@Setter所有的set方法
- //@NoArgsConstructor 无参构造
- //@AllArgsConstructor//全部的构造
-
- @Data //get+set+toString+hashcode+equals 但是没有构造方法
- @TableName(value = "t_book")
- public class Book {
- // 这里的属性名 要和数据库表中的属性名一致,要不然最终的查询结果是null
- // 将数据库中的结果对此变量名进行注入
- @TableId(value="id",type = IdType.AUTO) //代表自增算法
- @TableField(value = "id")
- private int id;
- @TableField(value = "bookName")
- private String bookName;
- @TableField(value = "statue")
- private String statue;
-
- }
③数据库SQL映射需添加@Mapper被容器识别
定义数据层接口与映射配置
- @Mapper
- public interface BookDao extends BaseMapper<Book> {//指定泛型才能知道操作谁
-
- }
④定义拦截器 (在下文的代码中会使用到),可以在一个类中加入多个拦截器,我们这里加入的是分页的拦截器,只有加入分页的拦截器之后,我们的分页才能最终成功
- import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
- import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
-
- //拦截器
- @Configuration //第一步:配置类 交给Spring管理 确保在启动类的包或子包下,才能被扫描到
- public class NPCConfig {
- // 第二步:做对应Bean
- @Bean
- public MybatisPlusInterceptor mybatisPlusInterceptor(){
- // 第三步:创建拦截器(这只是一个壳子)
- MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
- // 第四步:添加内部拦截器 (分页的)
- interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
- // 可以添加多个内部拦截器
- return interceptor;
- }
- }
⑤测试代码:
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.company.dao.BookDao;
- import com.company.domain.Book;
- import org.junit.jupiter.api.Test;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.test.context.SpringBootTest;
-
- import javax.management.Query;
-
- @SpringBootTest
- class Springboot08SsmpApplicationTests {
-
- @Autowired
- private BookDao bookDao;
-
- @Test
- void contextLoads() {
- // System.out.println(bookDao.selectById(10086));
- bookDao.selectById(10086);//这个能在控制台输出是因为我们开启了MP运行日志
- }
-
- @Test
- void testSave(){
- Book book = new Book();
- // 这里采用的是主键自增,我们不用手动给主键赋值(数据库默认的是雪花算法)
- // book.setId(10092);
- book.setBookName("信息技术");
- book.setStatue("优秀");
-
- bookDao.insert(book);
- }
-
- @Test
- void testUpdate(){
- Book book = new Book();
- book.setId(10086);
- book.setBookName("zhanghangzhang");
-
- bookDao.updateById(book);
- }
-
- @Test
- void testDelete(){
- bookDao.deleteById(10093);//通过id删除
- }
-
- @Test
- void testGetAll(){
- System.out.println( bookDao.selectList(null)); //给null查全部
- }
-
- @Test //分页 单纯运行这个是不行的,需要写一个配置类(拦截器)
- void testGetPage(){
- // 接口不能new 只能new实现类
- IPage page = new Page(1,5); //获取第一页的数据,显示五条
- // IPage对象中封装了分页操作中的所有数据:
- // 数据/当前页码值/每页数据总量/最大页码值/数据总量
- // IPage page = new Page(2,5); 获取第二页的数据,显示五条
- bookDao.selectPage(page,null);
- }
-
- @Test //按条件查询
- void testGetBy(){
- QueryWrapper<Book> qw = new QueryWrapper<>();//如果不传泛型,它会自己从查询的那个地方取
- qw.like("bookName","zhang"); //模糊查询 对bookName进行模糊查询 %zhang%
-
- bookDao.selectList(qw);
- }
-
- @Test
- void testGetBy2(){
- String val="zhangzhang";
- //上面testGetBy()方法中,查询的字段名很容易写错,但是我们采用lambda表达式之后,如果写错了就会报错(有语法检查)
- LambdaQueryWrapper<Book> qw = new LambdaQueryWrapper<>();
- qw.like(val!=null,Book::getBookName,val); //我们要判定val不是空,才能进行查询,要不回来查询的结果和我们要的结果不一致
- // 在like方法中就可以判断,加个参数 val!=null 就不用写if了
- bookDao.selectList(qw);
-
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。