【中级篇】详细讲解使用SpringBoot + Jooq实现CURD(二)

介绍完Jooq,再来讲解一下Jooq的一些用法:


1.查询的用法:

package com.demo.main.service.impl;

import java.util.List;

import org.jooq.Condition;
import org.jooq.DSLContext;
import org.jooq.impl.DSL;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.demo.main.jooq.Tables;
import com.demo.main.jooq.tables.pojos.Student;
import com.demo.main.jooq.tables.pojos.StudentVo;

@Service
@Transactional
public class ServiceImpl implements com.demo.main.service.Service{

	@Autowired
	private DSLContext context;
	/**
	 * 查询的一些方法
	 */
	@Override
	public void select() {
		//这个是查询所有   into(对象.class)转换指定对象
		List list=context.select().from(Tables.STUDENT).fetch().into(Student.class);
		System.out.println("==========查询所有============");
		for (Student student : list) {
			System.out.println(student.toString());
		}
		//查询sum和avg//定义一个Vo对象
		StudentVo listfuction=context.select(Tables.STUDENT.AGE.avg(),Tables.STUDENT.AGE.sum()).from(Tables.STUDENT).fetchOne().into(StudentVo.class);
		System.out.println(listfuction.toString());
				
		//这个是查询指定字段
		List list1=context.select(Tables.STUDENT.NAME).from(Tables.STUDENT).fetch().into(Student.class);
		System.out.println("==========查询指定字段============");
		for (Student student : list1) {
			System.out.println(student.toString());
		}
		//根据条件查询
		List list2=context.select().from(Tables.STUDENT).where(Tables.STUDENT.ID.eq(1)).fetch().into(Student.class);
		System.out.println("==========根据条件查询============");
		for (Student student : list2) {
			System.out.println(student.toString());
		}
		//查询后年龄排序
		List list3=context.select().from(Tables.STUDENT).orderBy(Tables.STUDENT.AGE.desc()).fetch().into(Student.class);
		System.out.println("==========查询后排序============");
		for (Student student : list3) {
			System.out.println(student.toString());
		}
		//查询后分组
		List list5=context.select().from(Tables.STUDENT).groupBy(Tables.STUDENT.AGE).fetch().into(Student.class);
		System.out.println("==========查询后分组============");
		for (Student student : list5) {
			System.out.println(student.toString());
		}
		//分页查询
		List list6=context.select().from(Tables.STUDENT).limit(0, 3).fetch().into(Student.class);
		System.out.println("==========分页查询============");
		for (Student student : list6) {
			System.out.println(student.toString());
		}
		//连接查询 VO对象,顺序一致
		List list4=context.select(Tables.STUDENT.ID,Tables.STUDENT.NAME,Tables.STUDENT.AGE,Tables.S_CLASS.CLASSNAME).from(Tables.S_CLASS).innerJoin(Tables.STUDENT).on(Tables.S_CLASS.ID.eq(Tables.STUDENT.ID)).fetch().into(StudentVo.class);
		System.out.println("==========内联查询============");
		for (StudentVo student : list4) {
			System.out.println(student.toString());
		}
		//条件查询对象 .fetchOne()返回单条结果
		Student list7=context.select().from(Tables.STUDENT).where(Tables.STUDENT.ID.eq(3)).fetchOne().into(Student.class);
		System.out.println("==========条件查询对象============");
		System.out.println(list7.toString());

		}
	
}

结果:

【中级篇】详细讲解使用SpringBoot + Jooq实现CURD(二)_第1张图片

获取总数的两种方法:

		//查询总数方法1
		int count=context.selectCount().from(Tables.STUDENT).fetchOne().into(Integer.class);
		System.out.println("==========条件总数方法1============");
		System.out.println(count);
		//查询总数方法2
		int count2=context.fetchCount(Tables.STUDENT);
		System.out.println("==========条件总数方法2============");
		System.out.println(count2);

 动态条件查询:Condition进行条件拼接

	public void query(String name,String age) {
		Condition condition=DSL.trueCondition();//真实条件
		if(name==null) {
			condition=condition.and(Tables.STUDENT.NAME.eq(name));
		}
		if(age==null) {
			condition=condition.and(Tables.STUDENT.AGE.eq(Integer.parseInt(age)));
		}
		List list=context.select().from(Tables.STUDENT).where(condition).fetch().into(Student.class);
	}

 2.删除用法:

public void del(Integer id) {
		int del=context.delete(Tables.STUDENT).where(Tables.STUDENT.ID.eq(3)).execute();
	}

 3.修改用法

	public void up(Student student) {
        //两种方式:1.StudentRecord传值 2.Map传值
		StudentRecord studentRecord=new StudentRecord();
		studentRecord.setName(student.getName());
		student.setAge(student.getAge());
    int up=context.update(Tables.STUDENT).set(studentRecord).where(Tables.STUDENT.ID.eq(3)).execute();
	}

 4.新增用法(两种不同的用法)

	public void insert() {
		//1.当字段比较少的时候可以使用列对值的这种方式
         context.insertInto(Tables.STUDENT).
         columns(Tables.STUDENT.NAME,Tables.STUDENT.AGE).values("小七", 16).execute();//成功返回1,失败返回0

		//2.当字段多时,推荐使用第二种方式,通过set()将字段对应值进行了新增
        StudentRecored studentRecored=new StudentRecored();
        studentRecored.setName("小七")
        studentRecored.setAge(16)
        context.insertInto(Tables.STUDENT).set(StudentRecored).execute();//成功返回1,失败返回0

	}

以上就差不多对Jooq的一些常用方法进行了讲解,看完本篇以后,大家是不是发现这东西一点也不难,只要有sql语法基础的都基本上会写。

你可能感兴趣的:(Jooq从入门到精通)