1.学习mybatispuls
springboot+mybatispuls
1.导入mybatisplus依赖 druid数据源
2.使用druid数据源要在application.yml文件里配置type属性,其他数据源相关属性也要配置
3.使用lombok依赖加速domain类开发,注意@Data不包含无参构造器需要加上
4.使用MyBatis-Plus开发,dao层接口只需加Mapper注解,继承BaseMapper接口加上泛型就行
分页查询
条件查询
查询投影
@Test
void testSelectPage() {
/**
* 分页查询selectPage
* IPage接口用Page类实现
* 还要有MP拦截器配置类
* getRecords() 该页记录
*/
IPage<Book> page = new Page<>(2,5);
bookDao.selectPage(page,null);
System.out.println("当页记录:" + page.getRecords());
System.out.println("当前页数:" + page.getCurrent());
System.out.println("每页的记录数:" + page.getSize());
System.out.println("总页数:" + page.getPages());
System.out.println("总记录数:" + page.getTotal());
System.out.println("该page的全类名" + page.getClass());
}
@Test
void testSelect() {
/**
* 条件查询
*/
//方式一
/*QueryWrapper<Book> wp = new QueryWrapper();
wp.le("id",10);
System.out.println(bookDao.selectList(wp));*/
//方式二lambda表达式
/*QueryWrapper<Book> wp = new QueryWrapper();
wp.lambda().le(Book::getId,5);
System.out.println(bookDao.selectList(wp));*/
//方式三lambda表达式
LambdaQueryWrapper<Book> qw = new LambdaQueryWrapper<>();
//(3,4]
// qw.le(Book::getId,4).gt(Book::getId,3);
//(-无穷,3]&(4,+无穷)
qw.gt(Book::getId,4).or().le(Book::getId,3);
System.out.println(bookDao.selectList(qw));
}
@Test
void testSelect2() {
/**
* 条件查询(有条件为null时处理)
*/
//模拟用户传入条件查询参数
QueryBook queryBook = new QueryBook();
queryBook.setId(3);
//queryBook.setId2(10);
LambdaQueryWrapper<Book> qw = new LambdaQueryWrapper<>();
qw.gt(null != queryBook.getId(),Book::getId,queryBook.getId());
qw.le(null != queryBook.getId2(),Book::getId,queryBook.getId2());
System.out.println(bookDao.selectList(qw));
}
@Test
void testSelect3() {
/**
* 查询投影
* 只查询部分字段
*/
/*QueryWrapper<Book> qw = new QueryWrapper<>();
qw.select("id","Description");*/
LambdaQueryWrapper<Book> qw = new LambdaQueryWrapper<>();
qw.select(Book::getName,Book::getDescription);
System.out.println(bookDao.selectList(qw));
}
复习SE
2.字符串常用API
• int compareTo(String other) 按照字典顺序,如果字符串位于 other 之前, 返回一个负数;如果字符串位于 other 之 后,返回一个正数;如果两个字符串相等,返回 0。
•boolean equalsIgnoreCase(String other ) 如果字符串与 other 相等 (忽略大小写) 。
•boolean startsWith(String prefix )
•boolean endsWith(String suffix ) 如果字符串以 suffix 开头或结尾, 则返回 true。
•int indexOf(String str)
•int indexOf(String str, int fromlndex )
返回与字符串 str 或代码点 cp 匹配的第一个子串的开始位置。这个位置从索引 0 或 fromlndex 开始计算。 如果在原始串中不存在 str, 返回 -1。
•int lastIndexOf(String str)
返回与字符串 str最后一个子串的开始位置。这个位置从原始串尾 端或 fromlndex 开始计算。
•int length( ) 返回字符串的长度。
• String substring(int beginlndex ) 參 String substring(int beginlndex, int endlndex ) 返回一个新字符串。这个字符串包含原始字符串中从 beginlndex 到串尾或 endlndex-l 的所有代码单元。
• String toLowerCase( ) 參 String toUpperCase( ) 返回一个新字符串。 这个字符串将原始字符串中的大写字母改为小写,或者将原始字 符串中的所有小写字母改成了大写字母。
• String trim( ) 返回一个新字符串。这个字符串将删除了原始字符串头部和尾部的空格。
3.StringBuilder
每次连接字符串, 都会构建一个新的 String 对象, 既耗时, 又浪费空间。使用 StringBuilder类就可以避免这个问题的发生。
这个类的前身是 StringBuffer, 其效率低,线程安全.
• StringBuilder append(String str) 追加一个字符串并返回 this。
• StringBuilder append(char c) 追加一个代码单元并返回 this。
• void setCharAt(int i ,char c) 将第 i 个代码单元设置为 c。
• StringBuilder insert(int offset,String str) 在 offset 位置插入一个字符串并返回 this。
• StringBuilder insert(int offset,Char c) 在 offset 位置插入一个代码单元并返回 this。
• StringBuilder delete(int startindex,int endlndex) 删除偏移量从 startindex 到 -endlndex-1 的代码单元并返回 this。
• String toString()
4.Array数组
Arrays类中的静态方法,Arrays.sort(array)对array数组进行排序(快排).
Array.binarySearch(array,4)二分查找算法查找元素所在索引
5.Date等日期类
Date date = new Date();
创建一个日期对象,输出得到Tue Nov 01 18:54:37 CST 2022
LocalDate.now();
LocalDate类的静态方法now()