您的位置:首页 > 移动开发

java学习知识积累-Mybatis中Mapper内置方法细解

2017-08-04 11:23 375 查看
MVC的设计模式解释:

model层就是实体类,对应数据库的表。controller层是Servlet,主要是负责业务模块流程的控制,调用service接口的方法,在struts2就是Action。Service层主要做逻辑判断,Dao层是数据访问层,与数据库进行对接。至于Mapper是mybtis框架的映射用到,mapper映射文件在dao层用。

下面是介绍一下Mapper的内置方法:

1、countByExample ===>根据条件查询数量

12345678int 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();

Criteriacriteria=example.createCriteria();

criteria.andUsernameEqualTo("joe");

userDAO.deleteByExample(example);

相当于:delete
from
user
where
username='joe'

3、deleteByPrimaryKey===>根据条件删除单条

12int 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")

user.setEmail("674531003@qq.com");

userDAO.insert(user);

相当于:insert
into
user(ID,username,password,email)
values(101,'test','123456','674531003@qq.com');

5、insertSelective===>插入数据

1int 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();

Criteriacriteria=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,emaildesc

//注:在iBator
生成的文件UserExample.java中包含一个static 的内部类 Criteria ,在Criteria中有很多方法,主要是定义SQL 语句where后的查询条件。

7、selectByPrimaryKey===>根据主键查询数据

1Account selectByPrimaryKey(Integer id);//相当于select * from user where id = 变量id
8、updateByExampleSelective===>按条件更新值不为null的字段

1

2

3

4

5

6

7

8

9

10

int
updateByExampleSelective(@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===>按条件更新

1int updateByExample(@Param("record") Account record, @Param("example") AccountExample example);
10、updateByPrimaryKeySelective===>按条件更新

1

2

3

4

5

6

7

8

9

int
updateByPrimaryKeySelective(Accountrecord);

//下面是一个完整的案例

User
user=new
User();

user.setId(101);

user.setPassword("joe");

userDAO.updateByPrimaryKeySelective(user);

相当于:update
user
set
password
=
'joe'
whereid
=
101

11、updateByPrimaryKey===>按主键更新

1

2

3

4

5

6

7

8

9

10

intupdateByPrimaryKey(Accountrecord);

//下面是一个完整的案例

User
user=new
User();

user.setId(101);

user.setUsername("joe");

user.setPassword("joe");

user.setEmail("joe@163.com");

userDAO.updateByPrimaryKey(user);

相当于:update
user
set
username=
'joe'
,password
=
'joe',email
=
'joe@163.com'
where
id=101

insert,返回值是:新插入行的主键(primary key);需要包含<selectKey>语句,才会返回主键,否则返回值为null。

update/delete,返回值是:更新或删除的行数;无需指明resultClass;但如果有约束异常而删除失败,只能去捕捉异常。

queryForObject,返回的是:一个实例对象或null;需要包含<select>语句,并且指明resultMap;

queryForList,返回的是:实例对象的列表;需要包含<select>语句,并且指明resultMap;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 mybatis