代码片段(9)[全屏查看所有代码]
1. [代码]实体类:Emp.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
package
com.lixing.scm.entity;
public
class
Emp {
private
String id;
private
String name;
private
String sex;
private
int
age;
private
String phone;
public
String getId() {
return
id;
}
public
void
setId(String id) {
this
.id = id;
}
public
String getName() {
return
name;
}
public
void
setName(String name) {
this
.name = name;
}
public
String getSex() {
return
sex;
}
public
void
setSex(String sex) {
this
.sex = sex;
}
public
int
getAge() {
return
age;
}
public
void
setAge(
int
age) {
this
.age = age;
}
public
String getPhone() {
return
phone;
}
public
void
setPhone(String phone) {
this
.phone = phone;
}
}
|
2. [代码]定义实体内操作接口:EmpMapper.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
package
com.lixing.scm.test.mapper;
import
java.util.List;
import
java.util.Map;
import
com.lixing.scm.entity.Emp;
public
interface
EmpMapper {
void
insertEmp(Emp emp);
List<Emp> getAllEmp();
Emp getById(String id);
void
deleteEmp(String id);
void
updateEmp(Map<String,Object> map);
}
|
3. [代码]定义实体类操作接口的映射文件:EmpMapper.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
<?
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.lixing.scm.test.mapper.EmpMapper"
>
<
parameterMap
type
=
"com.lixing.scm.entity.Emp"
id
=
"parameterMapEmp"
>
<
parameter
property
=
"id"
/>
<
parameter
property
=
"name"
/>
<
parameter
property
=
"sex"
/>
<
parameter
property
=
"age"
/>
<
parameter
property
=
"phone"
/>
</
parameterMap
>
<
resultMap
type
=
"com.lixing.scm.entity.Emp"
id
=
"resultMapEmp"
>
<
result
property
=
"id"
column
=
"id"
/>
<
result
property
=
"name"
column
=
"name"
/>
<
result
property
=
"sex"
column
=
"sex"
/>
<
result
property
=
"age"
column
=
"age"
/>
<
result
property
=
"phone"
column
=
"phone"
/>
</
resultMap
>
<
insert
id
=
"insertEmp"
parameterMap
=
"parameterMapEmp"
>
INSERT INTO emp(id,name,sex,age,phone)
VALUES(?,?,?,?,?)
</
insert
>
<
select
id
=
"getAllEmp"
resultMap
=
"resultMapEmp"
>
SELECT * FROM emp
</
select
>
<
select
id
=
"getById"
parameterType
=
"String"
resultMap
=
"resultMapEmp"
>
SELECT * FROM emp
WHERE id=#{value}
</
select
>
<
delete
id
=
"deleteEmp"
parameterType
=
"String"
>
DELETE FROM emp
WHERE id=#{value}
</
delete
>
<
update
id
=
"updateEmp"
parameterType
=
"java.util.Map"
>
UPDATE emp
SET name=#{name},sex=#{sex},age=#{age},phone=#{phone}
WHERE id=#{id}
</
update
>
</
mapper
>
|
4. [代码]Spring3.0.6定义:applicationContext.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
beans
xmlns
=
"http://www.springframework.org/schema/beans"
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:context
=
"http://www.springframework.org/schema/context"
xmlns:aop
=
"http://www.springframework.org/schema/aop"
xmlns:tx
=
"http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<!-- -->
<
context:annotation-config
/>
<
context:component-scan
base-package
=
"com.lixing.scm.test.*"
/>
<!-- jdbc.propertis Directory -->
<
bean
class
=
"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
>
<
property
name
=
"locations"
value
=
"classpath:jdbc.properties"
/>
</
bean
>
<
bean
id
=
"MyDataSource"
destroy-method
=
"close"
class
=
"org.apache.commons.dbcp.BasicDataSource"
>
<
property
name
=
"driverClassName"
value
=
"${jdbc.driverClassName}"
/>
<
property
name
=
"url"
value
=
"${jdbc.url}"
/>
<
property
name
=
"username"
value
=
"${jdbc.username}"
/>
<
property
name
=
"password"
value
=
"${jdbc.password}"
/>
</
bean
>
<!-- SqlSessionFactory -->
<
bean
id
=
"sqlSessionFactory"
class
=
"org.mybatis.spring.SqlSessionFactoryBean"
>
<
property
name
=
"dataSource"
ref
=
"MyDataSource"
/>
</
bean
>
<!-- ScanMapperFiles -->
<
bean
class
=
"org.mybatis.spring.mapper.MapperScannerConfigurer"
>
<
property
name
=
"basePackage"
value
=
"com.lixing.scm.test.mapper"
/>
</
bean
>
<!-- ================================事务相关控制================================================= -->
<
bean
name
=
"transactionManager"
class
=
"org.springframework.jdbc.datasource.DataSourceTransactionManager"
>
<
property
name
=
"dataSource"
ref
=
"MyDataSource"
></
property
>
</
bean
>
<
tx:advice
id
=
"userTxAdvice"
transaction-manager
=
"transactionManager"
>
<
tx:attributes
>
<
tx:method
name
=
"delete*"
propagation
=
"REQUIRED"
read-only
=
"false"
rollback-for
=
"java.lang.Exception"
no-rollback-for
=
"java.lang.RuntimeException"
/>
<
tx:method
name
=
"insert*"
propagation
=
"REQUIRED"
read-only
=
"false"
rollback-for
=
"java.lang.RuntimeException"
/>
<
tx:method
name
=
"update*"
propagation
=
"REQUIRED"
read-only
=
"false"
rollback-for
=
"java.lang.Exception"
/>
<
tx:method
name
=
"find*"
propagation
=
"SUPPORTS"
/>
<
tx:method
name
=
"get*"
propagation
=
"SUPPORTS"
/>
<
tx:method
name
=
"select*"
propagation
=
"SUPPORTS"
/>
</
tx:attributes
>
</
tx:advice
>
<
aop:config
>
<
aop:pointcut
id
=
"pc"
expression
=
"execution(public * com.lixing.scm.test.service.*.*(..))"
/>
<!--把事务控制在Service层-->
<
aop:advisor
pointcut-ref
=
"pc"
advice-ref
=
"userTxAdvice"
/>
</
aop:config
>
<!-- 以下为自定义Bean-->
<
bean
id
=
"empDao"
class
=
"com.lixing.scm.test.dao.impl.EmpDaoImpl"
autowire
=
"byName"
/>
<
bean
id
=
"empService"
class
=
"com.lixing.scm.test.service.impl.EmpServiceImpl"
autowire
=
"byName"
/>
</
beans
>
|
5. [代码]DAO接口:EmpDAO.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
package
com.lixing.scm.test.dao;
import
java.util.List;
import
java.util.Map;
import
com.lixing.scm.entity.Emp;
public
interface
EmpDao {
void
insertEmp(Emp emp);
List<Emp> getAllEmp();
Emp getById(String id);
void
deleteEmp(String id);
void
updateEmp(Map<String, Object> map);
}
|
6. [代码]DAO接口实现类:EmpDaoImpl.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
package
com.lixing.scm.test.dao.impl;
import
java.util.List;
import
java.util.Map;
import
com.lixing.scm.entity.Emp;
import
com.lixing.scm.test.dao.EmpDao;
import
com.lixing.scm.test.mapper.EmpMapper;
public
class
EmpDaoImpl
implements
EmpDao {
private
EmpMapper empMapper;
//在此处注入一个empMapper
//这个empMapper由 Spring自动生成 //不需要我们自己手工去定义
@Override
public
void
insertEmp(Emp emp) {
this
.empMapper.insertEmp(emp);
throw
new
RuntimeException(
"Error"
);
//测试抛出RuntimeException //异常查看数据库是否存在记录
}
@Override
public
void
deleteEmp(String id) {
this
.empMapper.deleteEmp(id);
}
@Override
public
List<Emp> getAllEmp() {
return
this
.empMapper.getAllEmp();
}
@Override
public
Emp getById(String id) {
return
this
.empMapper.getById(id);
}
@Override
public
void
updateEmp(Map<String, Object> map) {
this
.empMapper.updateEmp(map);
}
public
EmpMapper getEmpMapper() {
return
empMapper;
}
public
void
setEmpMapper(EmpMapper empMapper) {
this
.empMapper = empMapper;
}
}
|
7. [代码]Service层接口:EmpService.java
1
2
3
4
5
6
7
|
package
com.lixing.scm.test.service;
import
com.lixing.scm.entity.Emp;
public
interface
EmpService {
void
insertEmp(Emp emp);
}
|
8. [代码]Service层接口实现类:EmpServiceImpl.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
package
com.lixing.scm.test.service.impl;
import
com.lixing.scm.entity.Emp;
import
com.lixing.scm.test.dao.EmpDao;
import
com.lixing.scm.test.service.EmpService;
public
class
EmpServiceImpl
implements
EmpService {
private
EmpDao empDao;
@Override
public
void
insertEmp(Emp emp) {
empDao.insertEmp(emp);
}
public
EmpDao getEmpDao() {
return
empDao;
}
public
void
setEmpDao(EmpDao empDao) {
this
.empDao = empDao;
}
}
|
9. [代码]测试类:TestEmpService.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
import
org.junit.Test;
import
org.springframework.context.ApplicationContext;
import
org.springframework.context.support.ClassPathXmlApplicationContext;
import
com.lixing.scm.entity.Emp;
import
com.lixing.scm.test.service.EmpService;
public
class
TestEmpService {
@Test
public
void
testTrasaction(){
Emp emp=
new
Emp();
emp.setId(
"00000003"
);
emp.setName(
"某某某"
);
emp.setAge(
50
);
emp.setSex(
"男"
);
emp.setPhone(
"566666"
);
ApplicationContext ctx=
new
ClassPathXmlApplicationContext(
"classpath:applicationContext.xml"
);
EmpService service=ctx.getBean(EmpService.
class
);
service.insertEmp(emp);
}
}
|