MyBatisPlus学习笔记

目录

1.Employee

2.EmployeeMapper

3.MyBatisUtils

4.testMybatis


1.Employee

package com.weng.bean;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

//实体类和数据库中表建立对应关系
@TableName("employee")
public class Employee {

  //id是表中的主键,主键的生成策略为自增类型
  @TableId(type = IdType.AUTO)
  private long id;
  //该属性非主键属性,解决属性名与字段名不匹配问题、属性是否是数据表中字段、
  // insert、update生成策略等
  @TableField(value = "last_name")
  private String lastName;
  private String email;
  private String gender;
  private long age;

  //@TableField(exist=false)代表:注解的属性不与表中的字段匹配,在新增、修改时,不用去匹配

  public Employee(long id, String lastName, String email, String gender, long age) {
    this.id = id;
    this.lastName = lastName;
    this.email = email;
    this.gender = gender;
    this.age = age;
  }

  public long getId() {
    return id;
  }

  public void setId(long id) {
    this.id = id;
  }


  public String getLastName() {
    return lastName;
  }

  public void setLastName(String lastName) {
    this.lastName = lastName;
  }


  public String getEmail() {
    return email;
  }

  public void setEmail(String email) {
    this.email = email;
  }


  public String getGender() {
    return gender;
  }

  public void setGender(String gender) {
    this.gender = gender;
  }


  public long getAge() {
    return age;
  }

  public void setAge(long age) {
    this.age = age;
  }

  @Override
  public String toString() {
    return "Employee{" + "id=" + id + ", lastName='" + lastName + '\'' + ", email='" + email + '\'' + ", gender='" + gender + '\'' + ", age=" + age + '}';
  }
}

2.EmployeeMapper

package com.weng.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.weng.bean.Employee;

//建议继承一个父接口,这个父接口里面有很多特别好用的方法,插件已经写好了,直接调用就可以,BaseMapper要传入一个对象
public interface EmployeeMapper extends BaseMapper<Employee> {

}

3.MyBatisUtils

//使用MyBatisPlus的session工厂
SqlSessionFactory sqlSessionFactory = new MybatisSqlSessionFactoryBuilder().build(inputStream);

package com.weng.utils;

import com.baomidou.mybatisplus.core.MybatisSqlSessionFactoryBuilder;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class MyBatisUtils {
    //获取session
    public static SqlSession getSession(){
        SqlSession session = null;
        //加载配置文件,得到一个输入流
        InputStream inputStream = null;
        try {
            //配置文件的路径
            String resource = "mybatis-config.xml";
            inputStream = Resources.getResourceAsStream(resource);
            //获取myBatis的session工厂
            //SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            //通过session工厂获取一个session(此session非servlet中session
            // 这个session表示myBatis框架和数据库的会话信息)


            //使用MyBatisPlus的session工厂
            SqlSessionFactory sqlSessionFactory = new MybatisSqlSessionFactoryBuilder().build(inputStream);

            //获取到session就表示myBatis连接到数据库了,类似JDBC中connection对象
            session = sqlSessionFactory.openSession();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return session;
    }

    //关闭session
    public static void closeSession(SqlSession session){
        if(session!=null){
            session.close();
        }
    }
}

4.testMybatis

package com.weng.test;

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.weng.bean.Employee;
import com.weng.mapper.EmployeeMapper;
import com.weng.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.util.*;
//myBatisPlus不支持多表联查
//要么查2遍,要么
public class testMybatis {
    SqlSession session = null;
    EmployeeMapper em = null;

    //@Before表示每次调用测试方法之前先调用@Before注解的方法init
    @Before
    public void init(){
        //UserMapperImpl um = new UserMapperImpl();
        //myBatis在底层使用动态代理(反射)自动生成Mapper实现类,不需要人工写
        session = MyBatisUtils.getSession();
        em = session.getMapper(EmployeeMapper.class);
        //em就是自动生成的实现类

    }

    @Test
    public void testAdd(){
        Employee e = new Employee(5,"haha","111@qq.com","男",35);
        int count = em.insert(e);
        System.out.println(count>0?"成功":"失败");
    }

    @Test
    public  void testDelete(){
        int count = em.deleteById(6);
        System.out.println(count>0?"成功":"失败");
    }
    //多条件删除,删除名字为haha,年龄为35的记录
    @Test
    public void testDeleteByMap(){
        Map<String,Object> map = new HashMap<String, Object>();
        map.put("last_name","haha");
        map.put("age","35");
        int count = em.deleteByMap(map);
    }

    //批量删除
    @Test
    public void testDeleSome(){
        List<Integer> ids = new ArrayList<Integer>();
        ids.add(1);
        ids.add(2);
        int count = em.deleteBatchIds(ids);
        System.out.println(count);
    }

    //
    @Test
    public void testUpdateById(){
        Employee employee = em.selectById(7);
        employee.setLastName("wawa");
        employee.setAge(20);
        em.updateById(employee);
    }
    @Test
    public void testGetById(){
        Employee employee = em.selectById(1);
        System.out.println(employee);
    }

    @Test
    public void testFindAll(){
        //不传参表示全查
        List<Employee> employees = em.selectList(null);
        for (Employee employee : employees) {
            System.out.println(employee);
        }
    }

    @Test
    public void testSelectByMap(){
        Map<String,Object> map = new HashMap<String, Object>();
        map.put("last_name","wawa");
        List<Employee> employees = em.selectByMap(map);
        for (Employee employee : employees) {
            System.out.println(employee);
        }
    }

    //select * from employee where age>=18 and gender='女'
    //wrapper条件构造器
    @Test
    public void testWrapper(){
        QueryWrapper<Employee> qw = new QueryWrapper<Employee>();
        qw.ge("id",1);
        qw.ge("age",18);//age>=18
        qw.or();//默认是and,加个or就会变成or,拼接条件
        qw.eq("gender","男");//gender=‘男’
        List<Employee> employees = em.selectList(qw);
        for (Employee employee : employees) {
            System.out.println(employee);
        }
    }
    @Test
    public void testKuoHao(){
        QueryWrapper<Employee> qw = new QueryWrapper<Employee>();
        qw.and(wp -> wp.ge("id",1).or().ge("age",18));
    }

    @Test
    public void testBetweenAnd(){
        List<Employee> employees = em.selectList(new QueryWrapper<Employee>().
                between("age",18,30).lt("id",4));
        for (Employee employee : employees) {
            System.out.println(employee);
        }
    }
    @Test
    public void testOrder(){
        List<Employee> employees = em.selectList(new QueryWrapper<Employee>().
                between("age",18,30).orderByAsc("id").orderByAsc("age"));
        for (Employee employee : employees) {
            System.out.println(employee);
        }
    }

    @Test
    public void testLike(){
        List<Employee> employees = em.selectList(new QueryWrapper<Employee>().likeRight("last_name", "T"));
        for (Employee employee : employees) {
            System.out.println(employee);
        }
    }

    @Test
    public void testCount(){
        Integer integer = em.selectCount(new QueryWrapper<Employee>().likeRight("last_name", "m"));
        System.out.println(integer);
    }

    //聚合查询
    //聚合函数和属性一起查需要分组,mysql不报错
    @Test
    public void testMaxMin(){
        List<Map<String, Object>> maps = em.selectMaps(new QueryWrapper<Employee>().select("max(age),min(id)"));
        for (Map<String, Object> map : maps) {
            System.out.println(map);
        }
    }
    @Test
    public void testin(){
        List<Integer> ids = new ArrayList<>();
        ids.add(1);
        ids.add(2);
        ids.add(3);
        List<Employee> employees = em.selectList(new QueryWrapper<Employee>().in("id", ids));
        for (Employee employee : employees) {
            System.out.println(employee);
        }
    }

    //分页
    @Test
    public void testQueryPage(){
        List<Integer> ids = new ArrayList<>();
        ids.add(1);
        ids.add(2);
        ids.add(3);

        int pageIndex=2;
        int pageSize=3;
        //返回分页的对象
        IPage<Employee> page = em.selectPage(new Page<Employee>(pageIndex, pageSize),
                new QueryWrapper<Employee>().in("id", ids));
        List<Employee> emps = page.getRecords();//获取查询的集合数据
        for (Employee emp : emps) {
            System.out.println(emp);
        }
        long total = page.getTotal();//总数
        System.out.println("总数"+total);
        long current = page.getCurrent();
        System.out.println("当前页码"+current);
        long size = page.getSize();
        System.out.println("页码大小"+size);
        long pages = page.getPages();
        System.out.println("总页数"+pages);
    }

    //@After表示每次调用测试方法之后都会调用@After注解的方法destory
    @After
    public void destory(){
        session.commit();
        MyBatisUtils.closeSession(session);
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值