当前位置:   article > 正文

在SPringBoot中整合Mybatis-plus以及mybatis-puls的基本使用_mybatisplus boot

mybatisplus boot

创建SPringBoot项目

        1.选择创建项目

         2.创建SPringBoot项目

         3.选择SPringBoot的版本和依赖

        4.导入mysql,druid,mybatis-plus和lombok的依赖,导入后记得更新依赖

  1. <dependency>
  2. <groupId>com.mysql</groupId>
  3. <artifactId>mysql-connector-j</artifactId>
  4. <scope>runtime</scope>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.alibaba</groupId>
  8. <artifactId>druid-spring-boot-starter</artifactId>
  9. <version>1.1.17</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>com.baomidou</groupId>
  13. <artifactId>mybatis-plus-boot-starter</artifactId>
  14. <version>3.5.2</version>
  15. </dependency>
  16. <dependency>
  17. <groupId>org.projectlombok</groupId>
  18. <artifactId>lombok</artifactId>
  19. <version>1.18.22</version>
  20. <scope>compile</scope>
  21. </dependency>

        5.编写配置文件

  1. # MySQL数据库连接配置,SpringBoot默认使用的连接池是Hikari 连接速度最快的 被SpringBoot默认整合的
  2. # 手动改成alibaba的连接池
  3. spring.datasource.url=jdbc:mysql://localhost:3306/leq_pro?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
  4. spring.datasource.username=root
  5. spring.datasource.password=0216
  6. #添加并配置第三方数据源Druid
  7. #数据源类型
  8. spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
  9. #初始化连接数
  10. spring.datasource.initialSize=20
  11. #最小空闲数
  12. spring.datasource.minIdle=10
  13. #最大连接数
  14. spring.datasource.maxActive=100
  15. #配置MyBatis-Plus的xml配置文件的位置
  16. mybatis-plus.mapper-locations=classpath:mapper/*.xml
  17. mybatis-plus.type-aliases-package=com.example.mybatisplus.pojo
  18. # 显示sql语句
  19. mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

         6.提前准备数据,在navcat中运行下面的代码

  1. create database leq_pro;
  2. create table my(
  3. mid int primary key auto_increment,
  4. mname varchar(255),
  5. mage varchar(255),
  6. msex varchar(255),
  7. mbirthday varchar(255)
  8. );
  9. insert into my values(0,'小满','18','女','2023-5-10');

       

        7.创建该表的实体类,mybatis-plus需要指定表名和主键id字段

 

  1. import com.baomidou.mybatisplus.annotation.IdType;
  2. import com.baomidou.mybatisplus.annotation.TableField;
  3. import com.baomidou.mybatisplus.annotation.TableId;
  4. import com.baomidou.mybatisplus.annotation.TableName;
  5. import lombok.AllArgsConstructor;
  6. import lombok.Data;
  7. import lombok.NoArgsConstructor;
  8. @Data
  9. @AllArgsConstructor
  10. @NoArgsConstructor
  11. @TableName("my")
  12. public class My {
  13. @TableId(type = IdType.AUTO)
  14. private Integer mid;
  15. private String mname;
  16. private String mage;
  17. @TableField("msex")
  18. private String sex;
  19. private String mbirthday;
  20. }

         

        8.如果要使用druid连接池,可以使用这个配置类来连接

  1. import com.alibaba.druid.pool.DruidDataSource;
  2. import org.springframework.boot.context.properties.ConfigurationProperties;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. import javax.sql.DataSource;
  6. @Configuration
  7. public class DataSourceConfig {
  8. //获取druid的连接数据源信息
  9. @Bean
  10. @ConfigurationProperties(prefix = "spring.datasource")
  11. public DataSource getDruid(){
  12. return new DruidDataSource();
  13. }
  14. }

 

        9.创建mapper层,继承BaseMapper,BaseMapper中封装了对sql的基本操作

  1. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  2. import com.example.springmybatisplus.pojo.My;
  3. public interface MyMaper extends BaseMapper<My> {
  4. }

        10.在启动类上加上注解或者在MyMapper上加上@Mapper注解,有一个即可

@MapperScan("com.example.springmybatisplus.mapper")
  1. import org.mybatis.spring.annotation.MapperScan;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. @MapperScan("com.example.springmybatisplus.mapper")
  5. @SpringBootApplication
  6. public class SpringMybatisPlusApplication {
  7. public static void main(String[] args) {
  8. SpringApplication.run(SpringMybatisPlusApplication.class, args);
  9. }
  10. }

       

        11.在test目录下创建MyTests来对表进行crud的操作

  1. import com.example.springmybatisplus.pojo.My;
  2. import org.junit.jupiter.api.Test;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.boot.test.context.SpringBootTest;
  5. import java.util.List;
  6. @SpringBootTest
  7. public class MyTests {
  8. @Autowired
  9. private MyMaper myMaper;
  10. }

 

 

        这是我们初始的表        

     

        1.新增数据,因为id设置了自增,所以我们不需要给id设置值

  1. @Test
  2. public void test01(){
  3. My my = new My();
  4. my.setMname("小元");
  5. my.setMage("20");
  6. my.setSex("男");
  7. my.setMbirthday("2018-5-1");
  8. int insert = myMaper.insert(my);
  9. System.out.println(insert>0);
  10. }

         运行该方法后查询表,就可以看到新增的数据

         2.删除数据

  1. @Test
  2. public void test02(){
  3. int insert = myMaper.deleteById(2);
  4. }

        3.批量删除

        随便添加的数据 

 

  1. @Test
  2. public void test03(){
  3. int insert = myMaper.deleteBatchIds(Arrays.asList(4,5,6));
  4. }

        4.条件删除

  1. @Test
  2. public void test04(){
  3. UpdateWrapper<My> w = new UpdateWrapper<>();
  4. // gt() 大于 eq() 等于 or() 或者
  5. // and() 并且 like()模糊 ge()大于等于
  6. w.gt("mid",1);//删除id大于1的
  7. myMaper.delete(w);
  8. }

 

        5.通过集合的条件删除

        添加数据

 

  1. @Test
  2. public void test05(){
  3. HashMap<String, Object> col = new HashMap<String, Object>(){
  4. {put("mname","小元");put("mid","7");}//and的关系
  5. };
  6. myMaper.deleteByMap(col);
  7. }

        6.更新

  1. @Test//更新
  2. public void test06(){
  3. My my = new My();
  4. my.setMid(8);
  5. my.setMname("小元");
  6. my.setMage("18");
  7. myMaper.updateById(my);
  8. }

        7.条件更新

  1. @Test//更新
  2. public void test07(){
  3. My gtypes = new My();
  4. gtypes.setMid(8);//执行要更新的id
  5. UpdateWrapper<My> wrapper = new UpdateWrapper<>();//更新的条件
  6. wrapper.eq("mid",8).set("mname","小李").set(false,"msex",null);
  7. myMaper.update(gtypes,wrapper);
  8. }

         8.查询

  1. @Test//查询
  2. public void test08(){
  3. System.err.println(myMaper.selectById(1));
  4. }

         9.批量查询

  1. @Test//批量查询
  2. public void test09(){
  3. ArrayList<Integer> col =new ArrayList<Integer>(){
  4. {add(1);add(8);}
  5. };
  6. List<My> gtypes = myMaper.selectBatchIds( col);
  7. gtypes.forEach(System.err::println);
  8. }

        10条件查询

 

  1. @Test//条件查询
  2. public void test10(){
  3. QueryWrapper<My> wrapper = new QueryWrapper<>();
  4. wrapper.select("mname","mage");//要查询的字段
  5. wrapper.eq("mid","1");//查询的条件
  6. List<My> mies = myMaper.selectList(wrapper);
  7. mies.forEach(System.err::println);
  8. }

        12.分页查询

  1. @Test//分页查询
  2. public void test11(){
  3. Page<My> page = new Page<>(1, 5);
  4. QueryWrapper<My> wrapper = new QueryWrapper<>();//不加条件就是查询所有
  5. wrapper.like("mname","小");
  6. IPage<My> iPage = myMaper.selectPage(page, wrapper);
  7. List<My> records = iPage.getRecords();//获取查询到的所有记录
  8. records.forEach(System.out::println);//soutc
  9. }

    13.高级操作(插入)

        在实体类中定义需要更改的字段

        定义配置类

  1. import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
  2. import org.apache.ibatis.reflection.MetaObject;
  3. import org.springframework.stereotype.Component;
  4. //自动填充数据
  5. // @TableField(fill = FieldFill.INSERT) 插入
  6. // @TableField(fill = FieldFill.UPDATE) 更新
  7. // @TableField(fill = FieldFill.DEFAULT) 删除
  8. // @TableField(fill = FieldFill.INSERT_UPDATE) 插入更新
  9. @Component
  10. public class MyDataObjectHandler implements MetaObjectHandler {
  11. @Override//插入数据时调用
  12. public void insertFill(MetaObject metaObject) {
  13. // 源对象 字段属性 取值类型 具体值
  14. this.strictInsertFill(metaObject,"mbirthday",String.class,"2000-0-0");
  15. }
  16. @Override//更新数据时调用
  17. public void updateFill(MetaObject metaObject) {
  18. this.strictInsertFill(metaObject,"mbirthday",String.class,"2000-1-1");
  19. }
  20. }

        进行测试

  1. @Test
  2. public void test12(){
  3. My my = new My();
  4. my.setMname("小元");
  5. my.setMage("18");
  6. myMaper.insert(my);//插入数据,没有设置日期
  7. }

接口中可以定义什么成员?
    dk1.7之前:
        1.静态常量  public static final int a=10;
        2.抽象方法public abstract String  a();
   jdk1.8以及之后的版本
        3.静态方法  public static
        4.默认方法  被default修饰的方法  public  default
  1. public interface Myinterfae {
  2. public static final int a=10;
  3. public abstract String a();
  4. public static void aa(){
  5. System.out.println("静态方法");
  6. }
  7. public default void aaa(){
  8. System.out.println("静态方法");
  9. }
  10. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/420806
推荐阅读
相关标签
  

闽ICP备14008679号