事务管理

  • spring-boot-starter-jdbc会自动默认注入DataSourceTransactionManager
  • spring-boot-starter-data-jpa会自动默认注入JpaTransactionManager
@Service
@Transactional
public class UseDao {
@Autowired
private JdbcTemplate jdbcTemplate; public int updatePhoneByIDOne(String phone,Long id){
String sql = "update ADMIN_USER set phone=? where ID = ?";
int i = jdbcTemplate.update(sql, new Object[]{phone, id});
int a = 1/0;
return i;
}
}

整合jpa

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.username=
spring.datasource.password=
spring.datasource.url= spring.jackson.serialization.indent-output=true
#spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.hibernate.dialect=org.hibernate.dialect.Oracle12cDialect

import javax.persistence.*;
import java.util.Date; @Entity
@Table(name = "ADMIN_USER")
public class AdminUser {
@Id
@GeneratedValue(strategy = GenerationType.TABLE,generator = "pk_gen_admin_user")
@TableGenerator(name = "pk_gen_admin_user",table = "sys_id_gen",pkColumnName = "gen_name",pkColumnValue = "user_admin_user",valueColumnName = "gen_value",allocationSize = 1)
private Long id;
private String name;
private String phone;
private String province;
private String city;
private String district;
// private Date createData;
private String company;
private String remark; public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPhone() {
return phone;
} public void setPhone(String phone) {
this.phone = phone;
} public String getProvince() {
return province;
} public void setProvince(String province) {
this.province = province;
} public String getCity() {
return city;
} public void setCity(String city) {
this.city = city;
} public String getDistrict() {
return district;
} public void setDistrict(String district) {
this.district = district;
} // public Date getCreateData() {
// return createData;
// } // public void setCreateData(Date createData) {
// this.createData = createData;
// } public String getCompany() {
return company;
} public void setCompany(String company) {
this.company = company;
} public String getRemark() {
return remark;
} public void setRemark(String remark) {
this.remark = remark;
}
}

import com.fly.entity.AdminUser;
import org.springframework.data.jpa.repository.JpaRepository; public interface AdminUserDao extends JpaRepository<AdminUser,Long> {
}

import com.fly.dao.AdminUserDao;
import com.fly.entity.AdminUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; @Service
public class AdminUserServiceImpl {
@Autowired
private AdminUserDao adminUserDao;
public AdminUser findOne(Long id){
return adminUserDao.findOne(id);
} public AdminUser save(AdminUser adminUser){
return adminUserDao.save(adminUser);
}
}

整合mybatis

      <dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>12.1.0.1-atlassian-hosted</version>
<scope>runtime</scope>
</dependency> <dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<!--分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.1.2</version>
</dependency>
spring:
datasource:
driver-class-name: oracle.jdbc.OracleDriver
url:
username:
password:
type: com.alibaba.druid.pool.DruidDataSource
druid:
filters: stat
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
validation-query: select 'x' FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
max-open-prepared-statements: 20
mybatis:
mapper-locations: classpath:mapper/AdminUserMapper.xml
# config-location: classpath:mybatis/mybatis-config.xml pagehelper:
helper-dialect: oracle
reasonable: true
support-methods-arguments: true
params: count=countSql
import com.fly.pojo.AdminUser;
import org.apache.ibatis.annotations.Mapper; import java.util.List; @Mapper
public interface AdminUserMapper {
List<AdminUser> findAll();
}

mybatis/mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> </configuration>

mapper/AdminUserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fly.Mapper.AdminUserMapper">
<resultMap id="BaseResultMap" type="com.fly.pojo.AdminUser">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="phone" property="phone"/>
<result column="province" property="province"/>
<result column="city" property="city"/>
<result column="district" property="district"/>
<result column="company" property="company"/>
<result column="remark" property="remark"/>
<result column="create_date" property="createDate"/>
</resultMap>
<select id="findAll" resultMap="BaseResultMap">
select id,name,phone,province,city,district,company,remark,create_date from ADMIN_USER
</select>
</mapper>
@MapperScan("com.fly.Mapper")
public class SpringDemoApp{

测试

import com.app.SpringDemoApp;
import com.fly.Mapper.AdminUserMapper;
import com.fly.pojo.AdminUser;
import com.github.pagehelper.PageHelper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.List; @SpringBootTest(classes = SpringDemoApp.class)
@RunWith(SpringJUnit4ClassRunner.class)
public class AdminUserMapperTest {
@Autowired
private AdminUserMapper adminUserMapper; @Test
public void test1(){
PageHelper.startPage(1,10);
List<AdminUser> adminUsers = adminUserMapper.findAll();
for (AdminUser adminUser : adminUsers) {
System.out.println(adminUser);
}
}
}
import com.fly.pojo.AdminUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import java.util.List; @Mapper
public interface AdminUser2Mapper {
@Select("select o.id,o.name,o.phone,o.province,o.city,o.district,o.company,o.remark,o.create_date createDate from Admin_User o")
List<AdminUser> findAll();
@Select("select o.id,o.name,o.phone,o.province,o.city,o.district,o.company,o.remark,o.create_date createDate from Admin_User o where o.id=#{id}")
AdminUser findOne(@Param("id") Long id);
}

09.事务管理、整合jpa、整合mybatis的更多相关文章

  1. springboot整合jpa和mybatis实现主从复制

    百度多方参考终于配出我自己的了,以下仅供参考 参考https://www.cnblogs.com/cjsblog/p/9712457.html 代码 首先数据源配置 spring.datasource ...

  2. Spring 与 mybatis整合---事务管理

    MyBatis与Spring整合前后事务管理有所区别 整合前:通过 session = sessionFactory.openSession(true); //或者是false 设置事务是否自动提交: ...

  3. spring和mybatis整合进行事务管理

    1.声明式实现事务管理 XML命名空间定义,定义用于事务支持的tx命名空间和AOP支持的aop命名空间: <beans xmlns="http://www.springframewor ...

  4. 零基础学习java------39---------json格式交互,Restful(不懂),静态资源映射,SSM整合(ssm整合思想,application.xml文件详解(声明式事务管理),)

    一. json格式交互(知道) 1 . 回顾ajax基本语法 $.ajax({ url:"", // 请求的后台路径 data:{"":"" ...

  5. Spring 整合 JPA

    spring 整合 jpa 客户的基本CRUD 依赖 <properties> <spring.version>4.2.4.RELEASE</spring.version ...

  6. Spring注入JPA+JPA事务管理

    本例实现的是Spring注入JPA 和 使用JPA事务管理.JPA是sun公司开发的一项新的规范标准.在本质上来说,JPA可以看作是Hibernate的一个子集:然而从功能上来说,Hibernate是 ...

  7. Spring3 (事务管理)

    简介: 1.事务管理.2.整合Junit.3.整和Web 1       事务管理 1.1   回顾事务 l  事务:一组业务操作ABCD,要么全部成功,要么全部不成功. l  特性:ACID 原子性 ...

  8. spring 配置事务管理器

    在Spring中数据库事务是通过PlatformTransactionManager进行管理的,jdbcTemplate是不能支持事务的,而能够支持事务的是org.springframework.tr ...

  9. Mybatis整合Spring实现事务管理的源码分析

    一:前言 没有完整看完,但是看到了一些关键的地方,这里做个记录,过程会有点乱,以后逐渐补充最终归档为完整流程:相信看过框架源码的都知道过程中无法完全确定是怎样的流程,毕竟不可能全部都去测试一遍 ,但是 ...

随机推荐

  1. Nginx 禁止IP访问 只允许域名访问

    今天要在Nginx上设置禁止通过IP访问服务器,只能通过域名访问,这样做是为了避免别人把未备案的域名解析到自己的服务器IP而导致服务器被断网,从网络上搜到以下解决方案: Nginx的默认虚拟主机在用户 ...

  2. pytest相关问题解析

    1. 如果你想查询在你的环境下有哪些pytest的active plugin可以使用: py.test --traceconfig 会得到一个扩展的头文件名显示激活的插件和他们的名字.同时也会打印出当 ...

  3. python比C程序相比非常慢

    w http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001374738136930 ...

  4. 凉经-乐糖游戏-PHP开发实习生

    收到面试通知当天因为学校出事要求我明天必须回去,所以就买当晚的火车票,然后跟公司说学校有事明天没法去面试了,公司人事比较好给我安排到当天下午面试.公司规模不是很大,但位置好下了地铁到,可能因为招的是实 ...

  5. WebApi系列~基于RESTful标准的Web Api 转载 https://www.cnblogs.com/lori/p/3555737.html

    微软的web api是在vs2012上的mvc4项目绑定发行的,它提出的web api是完全基于RESTful标准的,完全不同于之前的(同是SOAP协议的)wcf和webService,它是简单,代码 ...

  6. python实现操作mysql数据库

    实现代码如下: #mysql数据库的查询等 import pymysql from xctest_tools.xc_ReadFile.get_ReadTxt import * class mysql: ...

  7. JQ获取当前根目录

    function getRootPath_web() {            //获取当前网址,如: http://localhost:8083/uimcardprj/share/meun.jsp  ...

  8. 图解Http阅读笔记(一)

    1.网络基础 TCP/IP 1.1TCP /IP 协议族   计算机与网络设备要相互通信,双方就必须基于相同的方法.比如,如何探测到通信目标.由哪一边先发起通信.使用哪种语言进行通信.怎样结束通信等规 ...

  9. Java相关面试题总结+答案(四)

    [反射] 57. 什么是反射? 反射是在运行状态中,对于任意一个类,都能够知道该类的所有属性和方法,对于任意一个对象,都能够获得该对象的任一属性和方法:这种动态获取信息以及动态调用对象的方法的功能称之 ...

  10. Codeforces 1162D Chladni Figure(枚举因子)

    这个题好像可以直接暴力过.我是先用num[len]统计所有每个长度的数量有多少,假如在长度为len下,如果要考虑旋转后和原来图案保持一致,我们用a表示在一个旋转单位中有几个长度为len的线段,b表示有 ...