SpringBoot整合Mybatis及分页插件pageHelper和事务

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36594703/article/details/81301310

spring事务分类:
1.声明事务
2.编程事务
spring事务原理:AOP技术 环绕通知进行拦截
使用spring事务的注意事项:不要Try。因为要将异常抛出给外层
Springboot默认集成事务,只要在方法上加上@Transactional注解

pom.xml配置文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>cn.e3mall</groupId>
  <artifactId>springboot-pageHelper</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <parent>
 	<groupId>org.springframework.boot</groupId>
 	<artifactId>spring-boot-starter-parent</artifactId>
 	<version>2.0.0.RELEASE</version>
 </parent>
 <dependencies>
 	<dependency>
 		<groupId>org.springframework.boot</groupId>
 		<artifactId>spring-boot-starter</artifactId>
 	</dependency>
 	<!-- 测试 -->
 	<dependency>
 		<groupId>org.springframework.boot</groupId>
 		<artifactId>spring-boot-starter-test</artifactId>
 		<scope>test</scope>
 	</dependency>
 	<dependency>
 		<groupId>org.mybatis.spring.boot</groupId>
 		<artifactId>mybatis-spring-boot-starter</artifactId>
 		<version>1.1.1</version>
 	</dependency>
 	<!-- MySQL依赖 -->
 	<dependency>
 		<groupId>mysql</groupId>
 		<artifactId>mysql-connector-java</artifactId>
 	</dependency>
 	<!-- springboot web组件 -->
 	<dependency>
 		<groupId>org.springframework.boot</groupId>
 		<artifactId>spring-boot-starter-web</artifactId>
 	</dependency>
 	<!-- jta+atomikos解决传统分布式事务 -->
 	<dependency>
 		<groupId>org.springframework.boot</groupId>
 		<artifactId>spring-boot-starter-jta-atomikos</artifactId>
 	</dependency>
 	<!-- pagehelper一个mybtis分页插件 -->
 	<dependency>
 		<groupId>com.github.pagehelper</groupId>
 		<artifactId>pagehelper-spring-boot-starter</artifactId>
 		<version>1.2.5</version>
 	</dependency>
 	<dependency>
 		<groupId>org.apache.commons</groupId>
 		<artifactId>commons-lang3</artifactId>
 	</dependency>
 </dependencies>
</project>

在application.properties配置文件中配置数据源:

spring.datasource.url=jdbc:mysql://localhost:3306/springboot
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
logging.level.com.example.demo.dao=DEBUG
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
pagehelper.page-size-zero=true
​

Dao层UserMapper.java:

//@Mapper
public interface UserMapper {
	@Select("select * from user where name=#{name}")
	User findByName(@Param("name")String name);
	@Insert("insert into user(name,age) values(#{name},#{age})")
	int insert(@Param("name")String name,@Param("age")Integer age);
}

Service层UserService.java:

@Service
public class UserService {
	@Autowired
	private UserMapper userMapper;
	@Transactional
	//@Datasource(ref="datasource1")
	public int insertUser(String name,Integer age) {
		int insertUserResult=userMapper.insert(name, age);
		int i=1/age;
		System.out.println(insertUserResult);		
		//怎么验证事务开启成功
		return insertUserResult;
	}
}

web层UserController.java:

@RestController
public class UserController {
	@Autowired
	private UserService userService;
	@RequestMapping("/insertUser")
	public Integer insertUser(String name,Integer age) {
		return userService.insertUser(name, age);
	}
}

启动类:

@SpringBootApplication
@MapperScan(basePackages= {"com.itmayiedu.mapper"})
public class MyBatisApp01 {
	public static void main(String[] args) {
		SpringApplication.run(MyBatisApp01.class,args);
	}

}

实体类在这里就省略了。

下面是集成mybatis的pagehelper分页插件

IndexController.java:

@RestController
public class IndexController {
	@Autowired
	private UserService userService;
	@RequestMapping("/index")
	public PageInfo<User> findUserList(int page,int pageSize){
		return userService.findUserList(page, pageSize);		
	}

UserService.java:

@Service
public class UserService {
	@Autowired 
	private UserMapper userMapper;
	//page当前页,pagesize表示当前展示多少个
	public PageInfo<User> findUserList(int page,int pageSize){
		//mysql查询 limit,oracle 伪列 sqlserver top
		//pagehelper帮我们生成分页语句
		PageHelper.startPage(page,pageSize);//底层实现原理是改写sql语句
		List<User>listUser=userMapper.findUserList();
		//返回个客户端封装一些page对象
		PageInfo<User> pageInfoUserList=new PageInfo<User>(listUser);
		return pageInfoUserList;		
	}
}

UserMapper.java:

public interface UserMapper {
	@Select("select * from user")
	List<User>findUserList();
}

猜你喜欢

转载自blog.csdn.net/qq_36594703/article/details/81301310