实体类: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 | } |