MVC的设计模式解释:
model层就是实体类,对应数据库的表。controller层是Servlet,主要是负责业务模块流程的控制,调用service接口的方法,在struts2就是Action。Service层主要做逻辑判断,Dao层是数据访问层,与数据库进行对接。至于Mapper是mybtis框架的映射用到,mapper映射文件在dao层用。
下面是介绍一下Mapper的内置方法:
1、countByExample ===>根据条件查询数量
1
2
3
4
5
6
7
8
|
int
countByExample
(
UserExample
example
)
;
//下面是一个完整的案列
UserExample
example
=
new
UserExample
(
)
;
Criteria
criteria
=
example
.
createCriteria
(
)
;
criteria
.
andUsernameEqualTo
(
"joe"
)
;
int
count
=
userDAO
.
countByExample
(
example
)
;
相当于:
select
count
(
*
)
from
user
where
username
=
'joe'
|
2、deleteByExample ===>根据条件删除多条
1
2
3
4
5
6
7
8
|
int
deleteByExample
(
AccountExample
example
)
;
//下面是一个完整的案例
UserExample
example
=
new
UserExample
(
)
;
Criteria
criteria
=
example
.
createCriteria
(
)
;
criteria
.
andUsernameEqualTo
(
"joe"
)
;
userDAO
.
deleteByExample
(
example
)
;
相当于:
delete
from
user
where
username
=
'joe'
|
3、deleteByPrimaryKey===>根据条件删除单条
1
2
|
int
deleteByPrimaryKey
(
Integer
id
)
;
userDAO
.
deleteByPrimaryKey
(
101
)
;
相当于:
delete
from
user
where
id
=
101
|
4、insert===>插入数据
1
2
3
4
5
6
7
8
9
10
|
int
insert
(
Account
record
)
;
//下面是完整的案例
User
user
=
new
User
(
)
;
//user.setId(101);
user
.
setUsername
(
"test"
)
;
user
.
setPassword
(
"123456"
)
userDAO
.
insert
(
user
)
;
相当于:
insert
into
user
(
ID
,
username
,
password
,
email
)
values
(
101
,
'test'
,
'123456'
,
'[email protected]'
)
;
|
5、insertSelective===>插入数据
1
|
int
insertSelective
(
Account
record
)
;
|
6、selectByExample===>根据条件查询数据
1
2
3
4
5
6
7
8
9
10
11
12
|
List
<
Account
>
selectByExample
(
AccountExample
example
)
;
//下面是一个完整的案例
UserExample
example
=
new
UserExample
(
)
;
Criteria
criteria
=
example
.
createCriteria
(
)
;
criteria
.
andUsernameEqualTo
(
"joe"
)
;
criteria
.
andUsernameIsNull
(
)
;
example
.
setOrderByClause
(
"username asc,email desc"
)
;
List
<
?
>
list
=
userDAO
.
selectByExample
(
example
)
;
相当于:
select *
from
user
where
username
=
'joe'
and
username
is
null
order
by
username
asc
,
email
desc
//注:在iBator 生成的文件UserExample.java中包含一个static 的内部类 Criteria ,在Criteria中有很多方法,主要是定义SQL 语句where后的查询条件。
|
7、selectByPrimaryKey===>根据主键查询数据
1
|
Account
selectByPrimaryKey
(
Integer
id
)
;
//相当于select * from user where id = 变量id
|
8、updateByExampleSelective===>按条件更新值不为null的字段
1
2
3
4
5
6
7
8
9
10
|
int u
pdateByExampleSelective
(
@
Param
(
"record"
)
Account
record
,
@
Param
(
"example"
)
AccountExample
example
)
;
//下面是一个完整的案列
UserExample
example
=
new
UserExample
(
)
;
Criteria
criteria
=
example
.
createCriteria
(
)
;
criteria
.
andUsernameEqualTo
(
"joe"
)
;
User
user
=
new
User
(
)
;
user
.
setPassword
(
"123"
)
;
userDAO
.
updateByPrimaryKeySelective
(
user
,
example
)
;
相当于:
update
user
set
password
=
'123'
where
username
=
'joe'
|
9、updateByExampleSelective===>按条件更新
1
|
int
updateByExample
(
@
Param
(
"record"
)
Account
record
,
@
Param
(
"example"
)
AccountExample
example
)
;
|
10、updateByPrimaryKeySelective===>按条件更新
1
2
3
4
5
6
7
8
9
|
int
updateByPrimaryKeySelective
(
Account
record
)
;
//下面是一个完整的案例
User
user
=
new
User
(
)
;
user
.
setId
(
101
)
;
user
.
setPassword
(
"joe"
)
;
userDAO
.
updateByPrimaryKeySelective
(
user
)
;
相当于:
update
user
set
password
=
'joe'
where
id
=
101
|
11、updateByPrimaryKey===>按主键更新
1
2
3
4
5
6
7
8
9
10
|
int
updateByPrimaryKey
(
Account
record
)
;
//下面是一个完整的案例
User
user
=
new
User
(
)
;
user
.
setId
(
101
)
;
user
.
setUsername
(
"joe"
)
;
user
.
setPassword
(
"joe"
)
;
userDAO
.
updateByPrimaryKey
(
user
)
;
相当于:
update
user
set
username
=
'joe'
,
password
=
'joe'
,
email
=
'[email protected]'
where
id
=
101
|
insert,返回值是:新插入行的主键(primary key);需要包含
update/delete,返回值是:更新或删除的行数;无需指明resultClass;但如果有约束异常而删除失败,只能去捕捉异常。
queryForObject,返回的是:一个实例对象或null;需要包含
queryForList,返回的是:实例对象的列表;需要包含