mybatis+spring+springmvc(传智播客)笔记(8)

2019-04-02 15:46

javaEE框架课程

4.2.4 resultType总结:

输出pojo对象和输出pojo列表在sql中定义的resultType是一样的。

返回单个pojo对象要保证sql查询出来的结果集为单条,内部使用session.selectOne方法调用,mapper接口使用pojo对象作为方法返回值。

返回pojo列表表示查询出来的结果集可能为多条,内部使用session.selectList方法,mapper接口使用List对象作为方法返回值。

4.2.5 输出hashmap

输出pojo对象可以改用hashmap输出类型,将输出的字段名称作为map的key,value为字段值。

4.3 resultMap

resultType可以指定pojo将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功。 如果sql查询字段名和pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系,resultMap实质上还需要将查询结果映射到pojo对象中。 resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询。

4.3.1 Mapper.xml定义

使用resultMap指定上边定义的personmap。

javaEE框架课程

4.3.2 定义resultMap

由于上边的mapper.xml中sql查询列和Users.java类属性不一致,需要定义resultMap:userListResultMap将sql查询列和Users.java类属性对应起来

:此属性表示查询结果集的唯一标识,非常重要。如果是多个字段为复合唯一约束则定义多个

Property:表示person类的属性。 Column:表示sql查询出来的字段名。

Column和property放在一块儿表示将sql查询出来的字段映射到指定的pojo类属性上。

:普通结果,即pojo的属性。

4.3.3 Mapper接口定义

public ListfindUserListResultMap() throws Exception;

4.4 动态sql(重点)

通过mybatis提供的各种标签方法实现动态拼接sql。

javaEE框架课程

4.4.1 If

select * from user where 1=1

and id=#{id}

and username like '%${username}%'

注意要做不等于空字符串校验。

4.4.2 Where

上边的sql也可以改为:

select * from user

and id=#{id}

and username like '%${username}%'

可以自动处理第一个and。

4.4.3 foreach

向sql传递数组或List,mybatis使用foreach解析,如下:

javaEE框架课程

4.4.3.1 通过pojo传递list

? 需求

传入多个id查询用户信息,用下边两个sql实现:

SELECT * FROM USERS WHERE username LIKE '%张%' AND (id =10 OR id =89 OR id=16) SELECT * FROM USERS WHERE username LIKE '%张%' id IN (10,89,16)

? 在pojo中定义list属性ids存储多个用户id,并添加getter/setter方法

? mapper.xml

#{id}

? 测试代码:

List ids = new ArrayList();

ids.add(1);//查询id为1的用户 ids.add(10);//查询id为10的用户 queryVo.setIds(ids);

List list = userMapper.findUserList(queryVo);

javaEE框架课程

4.4.3.2 传递单个List

传递List类型在编写mapper.xml没有区别,唯一不同的是只有一个List参数时它的参数名为list。

如下:

? Mapper.xml

select * from user

#{item.id}

? Mapper接口

public List selectUserByList(List userlist) throws Exception;

? 测试:

Publicvoid testselectUserByList()throws Exception{

//获取session

SqlSession session = sqlSessionFactory.openSession(); //获限mapper接口实例

UserMapper userMapper = session.getMapper(UserMapper.class); //构造查询条件List

List userlist = new ArrayList(); Useruser =new User(); user.setId(1);

userlist.add(user); user = new User(); user.setId(2);

userlist.add(user);

//传递userlist列表查询用户列表

Listlist = userMapper.selectUserByList(userlist); //关闭session


mybatis+spring+springmvc(传智播客)笔记(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:阅读教学魂归何处

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: