实体类:Emp.java
01 |
package com.lixing.scm.entity;
|
02 |
03 |
public class Emp {
|
04 |
private String id;
|
05 |
private String name;
|
06 |
private String sex;
|
07 |
private int age;
|
08 |
private String phone;
|
09 |
public String getId() {
|
10 |
return id;
|
11 |
}
|
12 |
public void setId(String id) {
|
13 |
this .id = id;
|
14 |
}
|
15 |
public String getName() {
|
16 |
return name;
|
17 |
}
|
18 |
public void setName(String name) {
|
19 |
this .name = name;
|
20 |
}
|
21 |
public String getSex() {
|
22 |
return sex;
|
23 |
}
|
24 |
public void setSex(String sex) {
|
25 |
this .sex = sex;
|
26 |
}
|
27 |
public int getAge() {
|
28 |
return age;
|
29 |
}
|
30 |
public void setAge( int age) {
|
31 |
this .age = age;
|
32 |
}
|
33 |
public String getPhone() {
|
34 |
return phone;
|
35 |
}
|
36 |
public void setPhone(String phone) {
|
37 |
this .phone = phone;
|
38 |
}
|
39 |
} |
定义实体内操作接口:EmpMapper.java
01 |
package com.lixing.scm.test.mapper;
|
02 |
03 |
import java.util.List;
|
04 |
import java.util.Map;
|
05 |
06 |
import com.lixing.scm.entity.Emp;
|
07 |
08 |
public interface EmpMapper {
|
09 |
void insertEmp(Emp emp);
|
10 |
List<Emp> getAllEmp();
|
11 |
Emp getById(String id);
|
12 |
void deleteEmp(String id);
|
13 |
void updateEmp(Map<String,Object> map);
|
14 |
} |
[代码] 定义实体类操作接口的映射文件:EmpMapper.xml
01 |
<? xml version = "1.0" encoding = "UTF-8" ?>
|
02 |
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
03 |
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
04 |
< mapper namespace = "com.lixing.scm.test.mapper.EmpMapper" >
|
05 |
< parameterMap type = "com.lixing.scm.entity.Emp" id = "parameterMapEmp" >
|
06 |
< parameter property = "id" />
|
07 |
08 |
< parameter property = "name" />
|
09 |
< parameter property = "sex" />
|
10 |
< parameter property = "age" />
|
11 |
< parameter property = "phone" />
|
12 |
</ parameterMap >
|
13 |
|
14 |
< resultMap type = "com.lixing.scm.entity.Emp" id = "resultMapEmp" >
|
15 |
16 |
< result property = "id" column = "id" />
|
17 |
< result property = "name" column = "name" />
|
18 |
< result property = "sex" column = "sex" />
|
19 |
< result property = "age" column = "age" />
|
20 |
< result property = "phone" column = "phone" />
|
21 |
</ resultMap >
|
22 |
23 |
|
24 |
< insert id = "insertEmp" parameterMap = "parameterMapEmp" >
|
25 |
INSERT INTO emp(id,name,sex,age,phone)
|
26 |
VALUES(?,?,?,?,?)
|
27 |
</ insert >
|
28 |
< select id = "getAllEmp" resultMap = "resultMapEmp" >
|
29 |
SELECT * FROM emp
|
30 |
</ select >
|
31 |
< select id = "getById" parameterType = "String" resultMap = "resultMapEmp" >
|
32 |
33 |
SELECT * FROM emp
|
34 |
WHERE id=#{value}
|
35 |
</ select >
|
36 |
< delete id = "deleteEmp" parameterType = "String" >
|
37 |
DELETE FROM emp
|
38 |
WHERE id=#{value}
|
39 |
</ delete >
|
40 |
< update id = "updateEmp" parameterType = "java.util.Map" >
|
41 |
UPDATE emp
|
42 |
SET name=#{name},sex=#{sex},age=#{age},phone=#{phone}
|
43 |
WHERE id=#{id}
|
44 |
</ update >
|
45 |
46 |
</ mapper >
|
Spring3.0.6定义:applicationContext.xml
01 |
<? xml version = "1.0" encoding = "UTF-8" ?>
|
02 |
< beans xmlns = "http://www.springframework.org/schema/beans"
|
03 |
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
|
04 |
xmlns:context = "http://www.springframework.org/schema/context"
|
05 |
xmlns:aop = "http://www.springframework.org/schema/aop"
|
06 |
xmlns:tx = "http://www.springframework.org/schema/tx"
|
07 |
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
08 |
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
|
09 |
http://www.springframework.org/schema/context
|
10 |
http://www.springframework.org/schema/context/spring-context-3.0.xsd
|
11 |
http://www.springframework.org/schema/tx
|
12 |
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
|
13 |
http://www.springframework.org/schema/aop
|
14 |
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
|
15 |
16 |
<!-- -->
|
17 |
18 |
< context:annotation-config />
|
19 |
< context:component-scan base-package = "com.lixing.scm.test.*" />
|
20 |
21 |
22 |
<!-- jdbc.propertis Directory -->
|
23 |
< bean
|
24 |
class = "org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" >
|
25 |
< property name = "locations" value = "classpath:jdbc.properties" />
|
26 |
27 |
</ bean >
|
28 |
29 |
< bean id = "MyDataSource" destroy-method = "close"
|
30 |
class = "org.apache.commons.dbcp.BasicDataSource" >
|
31 |
< property name = "driverClassName" value = "${jdbc.driverClassName}" />
|
32 |
< property name = "url" value = "${jdbc.url}" />
|
33 |
< property name = "username" value = "${jdbc.username}" />
|
34 |
< property name = "password" value = "${jdbc.password}" />
|
35 |
36 |
</ bean >
|
37 |
38 |
<!-- SqlSessionFactory -->
|
39 |
< bean id = "sqlSessionFactory" class = "org.mybatis.spring.SqlSessionFactoryBean" >
|
40 |
< property name = "dataSource" ref = "MyDataSource" />
|
41 |
</ bean >
|
42 |
<!-- ScanMapperFiles -->
|
43 |
44 |
< bean class = "org.mybatis.spring.mapper.MapperScannerConfigurer" >
|
45 |
< property name = "basePackage" value = "com.lixing.scm.test.mapper" />
|
46 |
</ bean >
|
47 |
48 |
49 |
50 |
|
51 |
|
52 |
< property name = "dataSource" ref = "MyDataSource" ></ property >
|
53 |
54 |
</ bean >
|
55 |
|
56 |
< tx:advice id = "userTxAdvice" transaction-manager = "transactionManager" >
|
57 |
< tx:attributes >
|
58 |
< tx:method name = "delete*" propagation = "REQUIRED" read-only = "false"
|
59 |
|
60 |
< tx:method name = "insert*" propagation = "REQUIRED" read-only = "false"
|
61 |
rollback-for = "java.lang.RuntimeException" />
|
62 |
< tx:method name = "update*" propagation = "REQUIRED" read-only = "false"
|
63 |
rollback-for = "java.lang.Exception" />
|
64 |
65 |
|
66 |
< tx:method name = "find*" propagation = "SUPPORTS" />
|
67 |
< tx:method name = "get*" propagation = "SUPPORTS" />
|
68 |
< tx:method name = "select*" propagation = "SUPPORTS" />
|
69 |
</ tx:attributes >
|
70 |
</ tx:advice >
|
71 |
|
72 |
< aop:config >
|
73 |
|
74 |
75 |
< aop:advisor pointcut-ref = "pc" advice-ref = "userTxAdvice" />
|
76 |
</ aop:config >
|
77 |
|
78 |
|
79 |
<!-- 以下为自定义Bean-->
|
80 |
< bean id = "empDao" class = "com.lixing.scm.test.dao.impl.EmpDaoImpl"
|
81 |
autowire = "byName" />
|
82 |
|
83 |
</ beans >
|
DAO接口:EmpDAO.java
01 |
package com.lixing.scm.test.dao;
|
02 |
03 |
import java.util.List;
|
04 |
import java.util.Map;
|
05 |
06 |
import com.lixing.scm.entity.Emp;
|
07 |
08 |
public interface EmpDao {
|
09 |
void insertEmp(Emp emp);
|
10 |
List<Emp> getAllEmp();
|
11 |
Emp getById(String id);
|
12 |
void deleteEmp(String id);
|
13 |
void updateEmp(Map<String, Object> map);
|
14 |
} |
DAO接口实现类:EmpDaoImpl.java
01 |
package com.lixing.scm.test.dao.impl;
|
02 |
03 |
import java.util.List;
|
04 |
import java.util.Map;
|
05 |
06 |
import com.lixing.scm.entity.Emp;
|
07 |
import com.lixing.scm.test.dao.EmpDao;
|
08 |
import com.lixing.scm.test.mapper.EmpMapper;
|
09 |
10 |
public class EmpDaoImpl implements EmpDao {
|
11 |
private EmpMapper empMapper; //在此处注入一个empMapper
|
12 |
|
13 |
@Override
|
14 |
public void insertEmp(Emp emp) {
|
15 |
this .empMapper.insertEmp(emp);
|
16 |
throw new RuntimeException( "Error" ); //测试抛出RuntimeException //异常查看数据库是否存在记录
|
17 |
}
|
18 |
19 |
@Override
|
20 |
public void deleteEmp(String id) {
|
21 |
this .empMapper.deleteEmp(id);
|
22 |
}
|
23 |
24 |
@Override
|
25 |
public List<Emp> getAllEmp() {
|
26 |
return this .empMapper.getAllEmp();
|
27 |
}
|
28 |
29 |
@Override
|
30 |
public Emp getById(String id) {
|
31 |
return this .empMapper.getById(id);
|
32 |
}
|
33 |
34 |
@Override
|
35 |
public void updateEmp(Map<String, Object> map) {
|
36 |
this .empMapper.updateEmp(map);
|
37 |
}
|
38 |
39 |
|
40 |
public EmpMapper getEmpMapper() {
|
41 |
return empMapper;
|
42 |
}
|
43 |
44 |
public void setEmpMapper(EmpMapper empMapper) {
|
45 |
this .empMapper = empMapper;
|
46 |
}
|
47 |
} |
Service层接口:EmpService.java
1 |
package com.lixing.scm.test.service;
|
2 |
3 |
import com.lixing.scm.entity.Emp;
|
4 |
5 |
public interface EmpService {
|
6 |
void insertEmp(Emp emp);
|
7 |
} |
Service层接口实现类:EmpServiceImpl.java
01 |
package com.lixing.scm.test.service.impl;
|
02 |
03 |
import com.lixing.scm.entity.Emp;
|
04 |
import com.lixing.scm.test.dao.EmpDao;
|
05 |
import com.lixing.scm.test.service.EmpService;
|
06 |
07 |
public class EmpServiceImpl implements EmpService {
|
08 |
private EmpDao empDao;
|
09 |
10 |
@Override
|
11 |
public void insertEmp(Emp emp) {
|
12 |
empDao.insertEmp(emp);
|
13 |
14 |
}
|
15 |
16 |
public EmpDao getEmpDao() {
|
17 |
return empDao;
|
18 |
}
|
19 |
20 |
public void setEmpDao(EmpDao empDao) {
|
21 |
this .empDao = empDao;
|
22 |
}
|
23 |
} |
测试类:TestEmpService.java
01 |
import org.junit.Test;
|
02 |
import org.springframework.context.ApplicationContext;
|
03 |
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
04 |
05 |
import com.lixing.scm.entity.Emp;
|
06 |
import com.lixing.scm.test.service.EmpService;
|
07 |
08 |
09 |
public class TestEmpService {
|
10 |
@Test
|
11 |
public void testTrasaction(){
|
12 |
Emp emp= new Emp();
|
13 |
emp.setId( "00000003" );
|
14 |
emp.setName( "某某某" );
|
15 |
emp.setAge( 50 );
|
16 |
emp.setSex( "男" );
|
17 |
emp.setPhone( "566666" );
|
18 |
|
19 |
|
20 |
EmpService service=ctx.getBean(EmpService. class );
|
21 |
service.insertEmp(emp);
|
22 |
}
|
23 |
} |
相关推荐
5、测试Spring+mybatis的框架搭建,写单元测试JUnit,测试事务配置等:model-->dao(mapper)-->service-->test 6、映入SpringMVC:配置SpringMVC配置信息。-->配置文件:spring-mvc.xml(扫描controller) 7...
spring +springboot+mybatis+maven 读写分离,数据库采用mysql, 采用springboot 采用项目框架搭建,继承spring 中的AbstractRoutingDataSource,实现 determineCurrentLookupKey 进行数据源的动态切换,采用Spring ...
spring+springmvc+mybatis+log4j+springtest的demo,并且配置了多环境的配置文件,xml文件在源码中,配置了service层的事务处理,
MyBatis+Spring的增、删、查、改以及分页和事务管理.
maven spring mybatis mysql 事务管理 企业级开发
花了一晚上时间终于搞出来了Spring整合Mybatis事务回滚(Mysql数据库),控制Service层中的多次插入操作,多次操作整体是一个事务。 里面有缘嘛和jar包,资源为war包,导入即可。运行Test类中的测试代码即可。 建表...
Spring+Mybatis+MySql+Maven 简单的事务管理案例.rar
该项目未使用spring框架,实现了用户登录,权限控制,数据统计,以及市场活动、线索、客户、联系人、合同的CRUD,使用Proxy实现Service层的动态代理,实现DAO层事务控制,有助于深入理解web项目 运行环境 jdk8+...
基于maven构建,采用注解方式,对项目要求不高的可以使用
采用easyui+shiro+springmvc+spring+mybatis+mysql easyui作视图层 shiro作权限控制 springmvc作控制层 spring作容器与事务管理 mybatis作数据访问层 mysql作数据存储
jsf是j2ee规范,spring是目前流行的管理依赖,控制事务的框架,mybatis是流行的sql映射框架,三者集成起来应用,形成完善的web框架
这是一个springmvc+mybatis+声明式事务管理的工程,此工程使用jdk1.8,mysql8.0,tomcat8.0进行开发
Spring+mybatis的源码,同时还配置了事务管理
该项目应用Springboot框架,MyBatis持久层与Sqlsession映射进行数据查询
Spring+Mybatis+Atomikos实现JAVA初始化并控制多个数据源+分布式事务的一个DEMO,内涵源代码,以及一篇关于该内容的博客
Spring Batch可以提供大量的,可重复的数据处理功能,包括日志记录/跟踪,事务管理,作业处理统计工作重新启动、跳过,和资源管理等重要功能。 业务方案: 1、批处理定期提交。 2、并行批处理:并行处理工作。 3、...
多数据源,实现分布式事务管理,基于Spring+SpringMVC+MyBatis+Atomikos框架
基于若依项目改造的多模块分布式事务,使用了atomikos进行分布式事务的管理。
资源名字:基于Spring+SpringMVC+MyBatis+mysql的班级事务管理系统设计与实现(源码).zip 资源内容:项目全套源码+完整文档 源码说明: 全部项目源码都是经过测试校正后百分百成功运行。 开发语言:Java JDK版本...
整合mybatis,实现事务控制