springboot 2.0 springboottest 事物自动回滚,事物不自动回滚 @Transactional @Rollback[通俗易懂]

springboot 2.0 springboottest 事物自动回滚,事物不自动回滚 @Transactional @Rollback[通俗易懂]@Transactional//支持事物,@SpringBootTest事物默认自动回滚@Rollback//事务自动回滚,不自动回滚@Rollback(false)packagecom.urthink.upfs.springbootmybatis;importcom.github.pagehelper.PageHelper;importcom.github.pageh…

大家好,又见面了,我是你们的朋友全栈君。

@Transactional //支持事物,@SpringBootTest 事物默认自动回滚
@Rollback // 事务自动回滚,不自动回滚@Rollback(false)

package com.urthink.upfs.springbootmybatis;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.urthink.upfs.springbootmybatis.entity.User;
import com.urthink.upfs.springbootmybatis.mapper.UserMapper;
import com.urthink.upfs.springbootmybatis.servcie.UserService;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.session.RowBounds;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * mybatis测试类
 * https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md
 * @author zhao
 * @date 2019.1.21
 *
 */
@RunWith(SpringRunner.class)
@SpringBootTest
@Transactional //支持事物,@SpringBootTest 事物默认自动回滚
@Rollback // 事务自动回滚,不自动回滚@Rollback(false)
public class MybatisTest {

	@Autowired
	private SqlSessionTemplate sqlSessionTemplate;
	@Autowired
	private UserService userService;
	@Autowired
	private UserMapper userMapper;

	@Test
	public void sqlSessionTemplateTest() {
		User user = sqlSessionTemplate.selectOne("com.urthink.upfs.springbootmybatis.mapper.UserMapper.selectByPrimaryKey",1000);
		System.out.println(user.getUserName());
	}

	@Test
	public void selectTest() {
		User user = userService.selectByPrimaryKey(1000);
		System.out.println(user.getUserName());
	}


	@Test
	public void insertTest() {
		User user = new User();
		user.setUserName("test");
		user.setPassword("test"); //需加密
		user.setEnable("1");
		user.setCreateBy(1);
		user.setCreateTime(new Date());
		int r = userService.insert(user);
		System.out.println(r);
	}
	
	
	@Test
	public void pageTest1() {
		//第一种,RowBounds方式的调用,需要把rowBoundsWithCount设置为true
		List<User> userList = sqlSessionTemplate.selectList("com.urthink.upfs.springbootmybatis.mapper.UserMapper.getPageList", null, new RowBounds(0, 10));
		//用PageInfo对结果进行包装
		PageInfo pageInfo = new PageInfo(userList);
		//PageInfo包含了非常全面的分页属性
		System.out.println("当前页:" + pageInfo.getPageNum());
		System.out.println("每页的数量:" + pageInfo.getPageSize());
		System.out.println("总记录数:" + pageInfo.getTotal());
		System.out.println("结果集:" + pageInfo.getList());
	}

	@Test
	public void pageTest2() {
		//第二种,Mapper接口方式的调用,推荐这种使用方式。
		PageHelper.startPage(1, 10);
		//排序
		PageHelper.orderBy("create_time asc, id asc");
		List<User> list = userMapper.getPageList(null);
		//用PageInfo对结果进行包装
		PageInfo pageInfo = new PageInfo(list);

		//测试PageInfo全部属性
		//PageInfo包含了非常全面的分页属性
		System.out.println("当前页:" + pageInfo.getPageNum());
		System.out.println("每页的数量:" + pageInfo.getPageSize());
		System.out.println("当前页的数量:" + pageInfo.getSize());
		System.out.println("当前页面第一个元素在数据库中的行号:" + pageInfo.getStartRow());
		System.out.println("当前页面最后一个元素在数据库中的行号:" + pageInfo.getEndRow());
		System.out.println("总页数:" + pageInfo.getPages());
		System.out.println("前一页:" + pageInfo.getPrePage());
		System.out.println("下一页:" + pageInfo.getNextPage());
		System.out.println("是否为第一页:" + pageInfo.isIsFirstPage());
		System.out.println("是否为最后一页:" + pageInfo.isIsLastPage());
		System.out.println("是否有前一页:" + pageInfo.isHasPreviousPage());
		System.out.println("是否有下一页:" + pageInfo.isHasNextPage());
		System.out.println("导航页码数:" + pageInfo.getNavigatePages());
		System.out.println("所有导航页号:" + pageInfo.getNavigatepageNums());
		System.out.println("导航条上的第一页:" + pageInfo.getNavigateFirstPage());
		System.out.println("导航条上的最后一页:" + pageInfo.getNavigateLastPage());

		System.out.println("总记录数:" + pageInfo.getTotal());
		System.out.println("结果集:" + pageInfo.getList());

		System.out.println(list.size());

	}

	@Test
	public void pageTest3() {
		Map map = new HashMap<String, Object>();
		map.put("pageNum", 1);
		map.put("pageSize", 10);
		map.put("orderBy", "create_time asc, id asc");
		map.put("userName", "test");	//XML里要的查询条件

		PageInfo pageInfo = userService.getPageInfo(map);
		//PageInfo包含了非常全面的分页属性
		System.out.println("当前页:" + pageInfo.getPageNum());
		System.out.println("每页的数量:" + pageInfo.getPageSize());
		System.out.println("总记录数:" + pageInfo.getTotal());
		System.out.println("结果集:" + pageInfo.getList());
	}

	@Test
	public void pageTest4() {
		Map map = new HashMap<String, Object>();
		map.put("pageNum", 1);
		map.put("pageSize", 10);
		map.put("orderBy", "create_time asc, id asc");
		map.put("userName", "test");	//XML里要的查询条件

		Example example = new Example(User.class);
		Example.Criteria criteria = example.createCriteria();
		if(StringUtils.isNotEmpty((String)map.get("id"))) {
			criteria.andEqualTo("id", map.get("id"));
		}
		if(StringUtils.isNotEmpty((String)map.get("userName"))) {
			criteria.andLike("userName", "%"+(String)map.get("userName")+"%");
		}
		map.put("example", example);

		PageInfo pageInfo = userService.selectPageInfo(map);
		//PageInfo包含了非常全面的分页属性
		System.out.println("当前页:" + pageInfo.getPageNum());
		System.out.println("每页的数量:" + pageInfo.getPageSize());
		System.out.println("总记录数:" + pageInfo.getTotal());
		System.out.println("结果集:" + pageInfo.getList());
	}
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145080.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • BeanUtils.copyProperties的用法「建议收藏」

    BeanUtils.copyProperties的用法「建议收藏」参考一what?BeanUtils它提供了对java反射和自省API的包装。它里面还有很多工具类,这里我们介绍一下copyProperties。why?我们如果有两个具有很多相同属性的Java

    2022年7月3日
    45
  • 如何使用Reaver破解Wi-Fi网络的WPA密码

    如何使用Reaver破解Wi-Fi网络的WPA密码现在有一款自由开源新工具——Reaver,已经挖掘出了无线路由器的一个漏洞,由此能够破解绝大多数路由器上的密码。今天,我就来一步步介绍,如何使用Reaver破解WPA/WPA2密码。最后我会给出相应的防范对策。

    2022年5月30日
    53
  • elf格式分析

    elf格式分析

    2021年12月10日
    40
  • BP算法详解_bp算法的基本思想

    BP算法详解_bp算法的基本思想说到神经网络,大家看到这个图应该不陌生:这是典型的三层神经网络的基本构成,LayerL1是输入层,LayerL2是隐含层,LayerL3是隐含层,我们现在手里有一堆数据{x1,x2,x3,…,

    2022年8月2日
    3
  • int对应的jdbctype_java clob类型

    int对应的jdbctype_java clob类型在Oracle中有些字段不是必填时在用户使用的时候会出现数据null的情况。这个时候在Oracle中是无法进行插入的。JDBCTypeJavaTypeCHARStringVARCHARStringLONGVARCHARStringNUMERICjava.math.BigD…

    2022年10月20日
    0
  • python的数据处理_基于python的数据处理

    python的数据处理_基于python的数据处理源起:1.我要做交叉验证,需要每个训练集和测试集都保持相同的样本分布比例,直接用sklearn提供的KFold并不能满足这个需求。2.将生成的交叉验证数据集保存成CSV文件,而不是直接用sklearn训练分类模型。3.在编码过程中有一的误区需要注意:这个sklearn官方给出的文档>>>importnumpyasnp>>>fromsklearn.mo…

    2022年9月14日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号