Springboot学习笔记

111
Springboot学习笔记
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

配置

在这里插入图片描述
在这里插入图片描述
springBoot整合mybatis
1.依赖

 <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

2.application.yaml

#配置数据源信息
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource #数据源类型
    driver-class-name: com.mysql.cj.jdbc.Driver #驱动名称
    url: jdbc:mysql://localhost:3306/mysql02?serverTimezone=UTC&&useSSL=false #URL链接
    username: root
    password: 585858

  mvc: #配置jsp映射路径 return "index" /index.jsp
    view:
      prefix: /
      suffix: .jsp
    interceptors:
      mapping:
        path: "/**"
      handler:
        bean: "loginInter"

mybatis:
  type-aliases-package: com.galls.springbootandmybatis.pojo #配置mybatis别名映射
  mapper-locations: classpath:/mapper/*Mapper.xml #配置mapper映射文件路径

logging:  #指定mapper 包的日志级别 可以方便的看到sql 语句的输出
  level:
    com.galls.springbootandmybatis.mapper: debug

springboot分页
1.
在这里插入图片描述
2在这里插入图片描述

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        
        
<!--                mybatis-plus-->
                <dependency>
                    <groupId>com.baomidou</groupId>
                    <artifactId>mybatis-plus-boot-starter</artifactId>
                    <version>3.4.1</version>
                </dependency>
        
        <!--        mybatis-plus代码生成器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.3.2</version>
        </dependency>
        
        <!--        模板 代码生成需要使用模板进行生成-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>1.7</version>
        </dependency>
        
        <!--        mybatis-plus 扩展插件 比如 分页插件依赖-->
                <dependency>
                    <groupId>com.baomidou</groupId>
                    <artifactId>mybatis-plus-extension</artifactId>
                    <version>3.4.2</version>
                </dependency>

mybatis-plus方法注释

/**
 * Mapper 继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能
 * 这个 Mapper 支持 id 泛型*/
public interface BaseMapper<T> {
 
    /**
     * 插入一条记录
     * @param entity
     * 实体对象
     * @return int
     */
    Integer insert(T entity);
 
    /**
     * 根据 ID 删除
     * @param id
     * 主键ID
     * @return int
     */
    Integer deleteById(Serializable id);
 
    /**
     * 根据 columnMap 条件,删除记录
     * @param columnMap
     * 表字段 map 对象
     * @return int
     */
    Integer deleteByMap(@Param("cm") Map<String, Object> columnMap);
 
    /**
     * 根据 entity 条件,删除记录
     * @param wrapper
     * 实体对象封装操作类(可以为 null)
     * @return int
     */
    Integer delete(@Param("ew") Wrapper<T> wrapper);
 
    /**
     * 删除(根据ID 批量删除)
     * @param idList
     * 主键ID列表
     * @return int
     */
    Integer deleteBatchIds(List<? extends Serializable> idList);
 
    /**
     * 根据 ID 修改
     * @param entity
     * 实体对象
     * @return int
     */
    Integer updateById(T entity);
 
    /**
     * 根据 whereEntity 条件,更新记录
     * @param entity
     * 实体对象
     * @param wrapper
     * 实体对象封装操作类(可以为 null)
     * @return
     */
    Integer update(@Param("et") T entity, @Param("ew") Wrapper<T> wrapper);
 
    /**
     * 根据 ID 查询
     * @param id
     * 主键ID
     * @return T
     */
    T selectById(Serializable id);
 
    /**
     * 查询(根据ID 批量查询)
     * @param idList
     * 主键ID列表
     * @return List<T>
     */
    List<T> selectBatchIds(List<? extends Serializable> idList);
 
    /**
     * 查询(根据 columnMap 条件)
     * @param columnMap
     * 表字段 map 对象
     * @return List<T>
     */
    List<T> selectByMap(@Param("cm") Map<String, Object> columnMap);
 
    /**
     * 根据 entity 条件,查询一条记录
     * @param entity
     * 实体对象
     * @return T
     */
    T selectOne(@Param("ew") T entity);
 
    /**
     * 根据 Wrapper 条件,查询总记录数
     * @param wrapper
     * 实体对象
     * @return int
     */
    Integer selectCount(@Param("ew") Wrapper<T> wrapper);
 
    /**
     * 根据 entity 条件,查询全部记录
     * @param wrapper
     * 实体对象封装操作类(可以为 null)
     * @return List<T>
     */
    List<T> selectList(@Param("ew") Wrapper<T> wrapper);
 
    /**
     * 根据 Wrapper 条件,查询全部记录
     * @param wrapper
     * 实体对象封装操作类(可以为 null)
     * @return List<T>
     */
    List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> wrapper);
 
    /**
     * 根据 Wrapper 条件,查询全部记录
     * @param wrapper
     * 实体对象封装操作类(可以为 null)
     * @return List<Object>
     */
    List<Object> selectObjs(@Param("ew") Wrapper<T> wrapper);
 
    /** 
     * 用法:(new RowBounds(offset, limit), ew);
     * 根据 entity 条件,查询全部记录(并翻页)
     * @param rowBounds
     * 分页查询条件(可以为 RowBounds.DEFAULT)
     * @param wrapper
     * 实体对象封装操作类(可以为 null)
     * @return List<T>
     */
    List<T> selectPage(RowBounds rowBounds, @Param("ew") Wrapper<T> wrapper);
 
    /** -- 不常用,
     * 根据 Wrapper 条件,查询全部记录(并翻页)
     * @param rowBounds
     * 分页查询条件(可以为 RowBounds.DEFAULT)
     * @param wrapper
     * 实体对象封装操作类
     * @return List<Map<String, Object>>
     */
    List<Map<String, Object>> selectMapsPage(RowBounds rowBounds, @Param("ew") Wrapper<T> wrapper);
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

修改操作

在这里插入图片描述

自动填充

在这里插入图片描述

import java.util.Date;
//实现元对象处理器接口
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    //添加的时候 填充
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime",new Date(),metaObject);
        this.setFieldValByName("updateTime",new Date(),metaObject);
    }
//修改的时候 填充
    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime",new Date(),metaObject);
    }
}

在这里插入图片描述
测试类

@SpringBootTest
class UserMapperTest {
    @Autowired
    private UserMapper userMapper;
    @Test
    public void testSelectList(){
        List<User> users = userMapper.selectList(null);
        System.out.println("users = " + users);
    }
    @Test
    public void insert(){
        User user = new User();
        user.setUsername("zhangsan");
        user.setPassword("123456");
        int insert = userMapper.insert(user);
        System.out.println(insert);
        System.out.println("user"+ user);
        }
    @Test
    public void update(){
        User user = new User();
        user.setId(62);
        user.setUsername("zhangsan");
       userMapper.updateById(user);
    }

}

乐观锁

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
简单的查询(根据主键)
在这里插入图片描述
根据主键多个id查询,sql语句用in
在这里插入图片描述
简单查询用map(条件查询根据某一个条件或多个条件查询)

   @Test
    public void testSelectByMap(){
        HashMap<String, Object> map = new HashMap<>();
        map.put("username","root");
        List<User> users = userMapper.selectByMap(map);
        users.forEach(System.out::println);
    }
查询结果
User{id=47, username='root', password='111', phone='15896734124', createTime=Sun Oct 22 00:00:00 CST 2023, money=22.0, sex=1, updateTime=null}
User{id=48, username='root', password='11', phone='15896734124', createTime=Mon Oct 30 00:00:00 CST 2023, money=1.1111111E7, sex=1, updateTime=null}
User{id=49, username='root', password='111', phone='15896734124', createTime=Sun Oct 22 00:00:00 CST 2023, money=22.0, sex=1, updateTime=null}
User{id=53, username='root', password='11', phone='15896734124', createTime=Thu Oct 26 00:00:00 CST 2023, money=1.1111111E7, sex=1, updateTime=null}
User{id=55, username='root', password='11', phone='15896734124', createTime=Sun Oct 29 00:00:00 CST 2023, money=22.0, sex=1, updateTime=null}
User{id=58, username='root', password='11', phone='15896734124', createTime=Sun Oct 29 00:00:00 CST 2023, money=22.0, sex=1, updateTime=null}
User{id=60, username='root', password='1', phone='15896734124', createTime=Mon Oct 23 00:00:00 CST 2023, money=111.0, sex=2, updateTime=null}

在这里插入图片描述

package com.example.mybatisplus2.handler;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@EnableTransactionManagement
@Configuration
//@MapperScan("com.example.mybatisplus2.mapper") mapper 的扫描 写在一个的放就行
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor optimistcLockerIntercepor(){
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
        interceptor.addInnerInterceptor(paginationInnerInterceptor);//添加分页拦截器--分页插件
        OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor = new OptimisticLockerInnerInterceptor();
        interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor);//添加乐观锁拦截去--乐观锁插件
        return interceptor;
    }
}

在这里插入图片描述
在这里插入图片描述

  @Test
    public void testSelectPage(){
        //MyBatis Puls自带分页插件,只要简单的配置即可实现
        Page<User> page = new Page<>(1, 5);
			//模糊查询
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("username","t");//名字中有含t的个数

        Page<User> userPage = userMapper.selectPage(page, queryWrapper);
        userPage.getRecords().forEach(System.out::println);

        System.out.println(page.getCurrent());
        System.out.println(page.getPages());//总页
        System.out.println(page.getSize());
        System.out.println(page.getTotal());//总记录数
        System.out.println(page.hasNext());//是否有下一页
        System.out.println(page.hasPrevious());//是否有上一页
    }

在这里插入图片描述

删除
在这里插入图片描述
在这里插入图片描述

逻辑删除

在这里插入图片描述

在这里插入图片描述

abstractWrapper

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想要入门的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值