package com.badao.test;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.sql.DataSource;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.badao.beans.Employee;
import com.badao.mapper.EmployeeMapper;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
public class TestMp {
private ApplicationContext ioc = new ClassPathXmlApplicationContext("applicationContext.xml");
private EmployeeMapper employeeMapper =ioc.getBean("employeeMapper",EmployeeMapper.class);
@Test
public void testDataSource() throws Exception{
DataSource ds = ioc.getBean("dataSource",DataSource.class);
System.out.println("******************************************"+ds);
Connection connection = ds.getConnection();
System.out.println("******************************************"+connection);
}
/***
* 测试通用插入操作
*/
@Test
public void testCommonInsert() {
Employee employee = new Employee();
employee.setName("霸道插入测试");
employee.setAge(23);
employee.setEmail("123@163.com");
employee.setGender(1);
int result = employeeMapper.insert(employee);
System.out.println("************************"+result);
}
/***
* 测试插入数据获取主键
*/
@Test
public void testInsertReturnId() {
Employee employee = new Employee();
employee.setName("霸道获取主键");
employee.setAge(23);
employee.setEmail("123@163.com");
employee.setGender(1);
int result = employeeMapper.insert(employee);
System.out.println("************************"+result);
Integer id = employee.getId();
System.out.println("*********************"+id);
}
/***
* 测试insert
*/
@Test
public void testInsert() {
Employee employee = new Employee();
employee.setName("insert测试");
employee.setAge(23);
int result = employeeMapper.insert(employee);
System.out.println("************************"+result);
Integer id = employee.getId();
System.out.println("*********************"+id);
}
/***
* 测试insertAllColumn
*/
@Test
public void testInsertAllColumn() {
Employee employee = new Employee();
employee.setName("insertAllColumn测试");
employee.setAge(23);
int result = employeeMapper.insertAllColumn(employee);
System.out.println("************************"+result);
Integer id = employee.getId();
System.out.println("*********************"+id);
}
/***
* 通用更新操作
*/
@Test
public void testCommomUpdate() {
//
Employee employee = new Employee();
employee.setId(1);
employee.setName("更新测试成功");
int result=employeeMapper.updateById(employee);
System.out.println("*******************"+result);
}
/***
* updateAllColumnById操作
*/
@Test
public void testCommomUpdateAllColumnById() {
Employee employee = new Employee();
employee.setId(2);
employee.setName("更新测试成功");
int result=employeeMapper.updateAllColumnById(employee);
System.out.println("*******************"+result);
}
/***
* 通用查询操作 通过ID查询
*/
@Test
public void testCommomSelectById() {
Employee employee=employeeMapper.selectById(1);
System.out.println("*******************"+employee);
}
/***
* 通用查询操作 selectOne 最多只能查到一个
*/
@Test
public void testCommomSelectOne() {
Employee employee = new Employee();
employee.setId(3);
employee.setName("气质");
Employee employeeresult=employeeMapper.selectOne(employee);
System.out.println("*******************"+employeeresult);
}
/***
* 通用查询操作 selectBatchIds 通过多个ID进行查询
*/
@Test
public void testCommomSelectBatchIds() {
List<Integer> idList = new ArrayList<Integer>();
idList.add(1);
idList.add(2);
idList.add(3);
List<Employee>employeeList=employeeMapper.selectBatchIds(idList);
System.out.println("*******************"+employeeList);
for (Employee employee : employeeList) {
System.out.println(employee.getName());
}
}
/***
* 通用查询操作 selectByMap map要写列名条件 不能是实体属性名
*/
@Test
public void testCommomSelectByMap() {
Map<String, Object> columnMap = new HashMap<String, Object>();
columnMap.put("name", "气质");
columnMap.put("gender", "0");
List<Employee> employeeList=employeeMapper.selectByMap(columnMap);
System.out.println("*******************"+employeeList);
for (Employee employee : employeeList) {
System.out.println(employee.getName());
}
}
/***
* 通用查询操作 selectByPage
*/
@Test
public void testCommomSelectByPage() {
List<Employee> employeeList=employeeMapper.selectPage(new Page<Object>(2, 2), null);
System.out.println("*******************"+employeeList);
for (Employee employee : employeeList) {
System.out.println(employee.getName());
}
}
/***
* 通用删除操作 通过ID删除
*/
@Test
public void testCommomDeleteById() {
int result=employeeMapper.deleteById(8);
System.out.println("*******************"+result);
}
/***
* 通用删除操作 deleteByMap map要写列名条件 不能是实体属性名
*/
@Test
public void testCommomDeleteByMap() {
Map<String, Object> columnMap = new HashMap<String, Object>();
columnMap.put("name", "更新测试成功");
columnMap.put("gender", "1");
int result=employeeMapper.deleteByMap(columnMap);
System.out.println("*******************"+result);
}
/***
* 通用查询操作 deleteBatchIds 通过多个ID进行删除
*/
@Test
public void testCommomDeleteBatchIds() {
List<Integer> idList = new ArrayList<Integer>();
idList.add(5);
idList.add(6);
int result=employeeMapper.deleteBatchIds(idList);
System.out.println("*******************"+result);
}
/***
*条件构造器 查询操作selectPage
*/
@Test
public void testEntitymapperSelect() {
//分页查询数据库,年龄字段在某个区间内,并且性别为男(1),并且名字为霸道的记录
List<Employee> employeeList=employeeMapper.selectPage(new Page<Object>(1, 2), new EntityWrapper<Employee>()
.between("age", 20, 30)
.eq("gender",1)
.eq("name", "霸道")
);
System.out.println("*******************"+employeeList);
for (Employee employee : employeeList) {
System.out.println(employee.getName());
}
}
/***
*条件构造器 查询操作SelectList
*/
@Test
public void testEntitymapperSelectList() {
//查询数据库,性别为男(1),并且名字中带有霸的记录或者email中带有123的记录。
List<Employee> employeeList=employeeMapper.selectList(new EntityWrapper<Employee>()
.eq("gender",1)
.like("name", "霸")
//.or()//SELECT id AS id,`name`,email,gender,age FROM employee WHERE (gender = ? AND name LIKE ? OR email LIKE ?)
.orNew()//SELECT id AS id,`name`,email,gender,age FROM employee WHERE (gender = ? AND name LIKE ?) OR (email LIKE ?)
.like("email", "123")
);
System.out.println("*******************"+employeeList);
for (Employee employee : employeeList) {
System.out.println(employee.getName());
}
}
/***
*条件构造器 更新操作
*/
@Test
public void testEntitymapperUpdate() {
Employee employee =new Employee();
employee.setEmail("456@163.com");
employeeMapper.update(employee,new EntityWrapper<Employee>()
.eq("gender",1)
.like("name", "霸")
);
}
/***
*条件构造器 删除操作
*/
@Test
public void testEntitymapperDelete() {
employeeMapper.delete(new EntityWrapper<Employee>()
.
MyBatisPlus条件构造器带条件排序方法orderBy、orderByDesc、orderByAsc使用示例代码



MyBatisPlus是一款基于MyBatis的扩展框架,它提供了许多便利的功能,简化了数据库操作。在实际开发中,我们经常需要对查询结果进行排序,MyBatisPlus为此提供了`orderBy`、`orderByDesc`和`orderByAsc`三个方法,方便我们实现条件排序。下面将详细介绍这三个方法的使用及原理。 `orderBy`方法是MyBatisPlus中的基础排序功能,它允许我们根据指定的字段进行升序排序。例如,如果我们有一个User实体类,包含id、name、age等字段,我们可以这样使用: ```java List<User> users = userMapper.selectList(new QueryWrapper<User>() .orderBy("id")); ``` 这段代码会返回一个按id字段升序排列的User对象列表。`QueryWrapper`是MyBatisPlus提供的条件构造器,用于构建SQL查询语句。 `orderByDesc`方法则用于降序排序。如果我们要按age字段降序排序,可以这样做: ```java List<User> users = userMapper.selectList(new QueryWrapper<User>() .orderByDesc("age")); ``` 而`orderByAsc`方法与`orderBy`类似,也是用于升序排序,但它的存在是为了与`orderByDesc`保持一致,提高代码可读性。如果你习惯于使用`orderByAsc`,可以这样写: ```java List<User> users = userMapper.selectList(new QueryWrapper<User>() .orderByAsc("name")); ``` 这三个方法在内部都是通过动态SQL生成相应的ORDER BY子句,例如`ORDER BY id ASC`或`ORDER BY age DESC`。MyBatisPlus会自动将这些条件添加到生成的SQL语句中,从而在执行数据库查询时实现排序。 在使用过程中,需要注意以下几点: 1. 排序字段必须是实体类中存在的属性,否则编译时会报错。 2. 如果多个字段需要排序,可以链式调用这些方法,例如:`.orderBy("id").orderByDesc("age")`,这将先按id升序,再按age降序排序。 3. 这些方法并不影响原始数据表的结构,它们只是在查询时改变了返回结果的顺序。 4. 如果需要根据业务逻辑动态决定排序字段和方式,可以利用Java的条件判断来决定调用哪个方法。 MyBatisPlus的`orderBy`、`orderByDesc`和`orderByAsc`方法极大地方便了我们在Java代码中对数据库查询结果进行排序,提高了开发效率。通过灵活运用这些方法,我们可以轻松地创建出符合需求的查询逻辑,让数据处理变得更加便捷。



































































- 1

- #完美解决问题
- #运行顺畅
- #内容详尽
- #全网独家
- #注释完整
- T~E2019-09-24不值得 50 积分/c币霸道流氓气质2019-09-24现在积分都是CSDN自己修改的 ,自己控制不了,原来只有5积分

- 粉丝: 1w+
- 资源: 602
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- Linux提权技术详解:从信息收集到多种提权手法的应用
- Fongmi影视(OkTV)TVbox
- 微风+IM3.3+数据库文件
- window10系统 H265(HEVC)编码驱动
- 硬核、零基础了解AIGC运转原理 附带脑图
- 巴中市乡镇边界,矢量边界,shp格式
- 抚顺市乡镇边界,矢量边界,shp格式
- 鞍山市乡镇边界,矢量边界,shp格式
- soybean-admin soybean-admin
- 孙亚飞-C语言程序设计实验
- 青少年Visual Basic游戏编程入门
- Python网页文本爬虫:基于小说网站的基础爬虫实现与解析
- 树莓派与Openmv模块通信测试程序
- minio(分布式文件系统)
- jdk-8u201-windows-x64
- 微风IM源码压缩包文件


