ImageVerifierCode 换一换
格式:PPTX , 页数:40 ,大小:211.91KB ,
文档编号:7669579      下载积分:15 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-7669579.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(momomo)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(《基于新信息技术的Java-EE应用开发实训》课件第十一章.pptx)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

《基于新信息技术的Java-EE应用开发实训》课件第十一章.pptx

1、第11章 MyBatis 配置文件11.1 SqlMapConfig.xml配置文件11.2 Mapper.xml映射文件第11章 MyBatis 配置文件11.1 SqlMapConfig.xml配置文件第11章 MyBatis 配置文件MyBatis 的全局配置文件 SqlMapConfig.xml。SqlMapConfig.xml中配置的内容和顺序如下:properties(属性)settings(全局配置参数)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environments(环境集合属性对象)e

2、nvironment(环境子属性对象)transactionManager(事务管理)dataSource(数据源)mappers(映射器)第11章 MyBatis 配置文件1.properties(属性)SqlMapConfig.xml可以引用Java属性文件中的配置信息。在classpath下定义db.properties文件:jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql:/localhost:3306/mybatisjdbc.username=rootjdbc.password=mysqlSqlMapConfig.xml引用如下

3、:第11章 MyBatis 配置文件 MyBatis 将按照以下顺序来加载属性:首先在 properties 元素体内定义的属性被读取。然后读取properties 元素中resource或URL加载的属性,它会覆盖已读取的同名属性。最后读取parameterType传递的属性,它会覆盖已读取的同名属性。因此,通过parameterType传递的属性具有最高优先级,resource或URL加载的属性次之,最低优先级的是 properties 元素体内定义的属性。第11章 MyBatis 配置文件2.settings(配置)MyBatis全局配置参数,全局参数将会影响MyBatis的运行行为。详

4、细内容见“学习资料/mybatis-settings.xlsx”文件。3.typeAliases(类型别名)MyBatis支持别名如表11-1所示。第11章 MyBatis 配置文件MyBatis自定义别名:在SqlMapConfig.xml中配置:4.typeHandlers(类型处理器)类型处理器用于Java类型和jdbc类型映射,代码如下:select*from user where id=#id第11章 MyBatis 配置文件MyBatis自带的类型处理器基本上满足日常需求,不需要单独定义。MyBatis支持类型处理器如表11-2所示。5.Mappers(映射器)Mapper配置的几

5、种方法:。使用相对于类路径的资源。使用完全限定路径。使用Mapper接口类路径。注册指定包下的所有Mapper接口。第11章 MyBatis 配置文件11.2 Mapper.xml映射文件第11章 MyBatis 配置文件11.2.1 parameterType(输入类型)1.#与$#实现的是向prepareStatement中的预处理语句中设置参数值,sql语句中#表示一个占位符即?。select*from user where id=#id使用占位符#可以有效防止sql注入,在使用时不需要关心参数值的类型,mybatis会自动进行java类型和jdbc类型的转换。#可以接收简单类型值或po

6、jo属性值,如果parameterType传输单个简单类型值,#括号中可以是value或其他名称。$和#不同,通过$可以将parameterType 传入的内容拼接在sql中,且不进行jdbc类型转换,$可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,$括号中只能是value。使用$不能防止sql注入,但是有时用$会非常方便,如下的例子:第11章 MyBatis 配置文件 select*from user where username like%$value%如果本例子使用#,则传入的字符串中必须有%号,而%是人为拼接在参数中,显然有点麻烦,如果采用$在s

7、ql中拼接为%的方式则在调用mapper接口传递参数就方便很多。/如果使用占位符号则必须人为在传参数中加%List list=userMapper.selectUserByName(%管理员%);/如果使用$原始符号则不用人为在参数中加%Listlist=userMapper.selectUserByName(管理员);再比如order by排序,如果将列名通过参数传入sql,根据传的列名进行排序,应写为:ORDER BY$columnName如果使用#将无法实现此功能。第11章 MyBatis 配置文件2.传递简单类型参考上例。3.传递POJO对象MyBatis使用ognl表达式解析对象字段

8、的值,例如:select*from user where id=#id and username like%$username%测试:Public void testFindUserByUser()throws Exception /获取session SqlSession session=sqlSessionFactory.openSession();/获取Mapper接口实例第11章 MyBatis 配置文件 UserMapper userMapper=session.getMapper(UserMapper.class);/构造查询条件user对象 User user=new User(

9、);user.setId(1);user.setUsername(管理员);/传递user对象查询用户列表 Listlist=userMapper.findUserByUser(user);/关闭session session.close();4.传递POJO包装对象开发中通过POJO传递查询条件,查询条件是综合的查询条件,不仅包括用户查询条件,还包括其他的查询条件(比如将用户购买商品信息也作为查询条件),这时可以使用包装对象传递输入参数。第11章 MyBatis 配置文件 定义包装对象。定义包装对象将查询条件(POJO)以类组合的方式包装起来。public class QueryVo pri

10、vate User user;/自定义用户扩展类 private UserCustom userCustom;Mapper.xml映射文件。select*from user where username=#user.username and sex=#user.sexapper第11章 MyBatis 配置文件5.传递hashmapsql映射文件定义如下:select*from user where id=#id and username like%$username%测试:Public void testFindUserByHashmap()throws Exception /获取sessi

11、on SqlSession session=sqlSessionFactory.openSession();/获取Mapper接口实例 UserMapper userMapper=session.getMapper(UserMapper.class);/构造查询条件Hashmap对象第11章 MyBatis 配置文件 HashMap map=new HashMap();map.put(id,1);map.put(username,管理员);/传递hashmap对象查询用户列表 Listlist=userMapper.findUserByHashmap(map);/关闭session sessi

12、on.close();11.2.2 resultType(输出类型)1.输出简单类型参考getnow输出日期类型,看下边的例子输出整型:Mapper.xml文件:第11章 MyBatis 配置文件 select count(1)from userMapper接口:public int findUserCount(User user)throws Exception;调用:Public void testFindUserCount()throws Exception /获取session SqlSession session=sqlSessionFactory.openSession();/获取

13、Mapper接口实例 UserMapper userMapper=session.getMapper(UserMapper.class);第11章 MyBatis 配置文件 User user=new User();user.setUsername(管理员);/传递hashmap对象查询用户列表 int count=userMapper.findUserCount(user);/关闭session session.close();总结:输出简单类型必须查询出来的结果集有一条记录,最终将第一个字段的值转换为输出类型。使用session的selectOne可查询单条记录。2.输出POJO对象参考f

14、indUserById的定义:第11章 MyBatis 配置文件Mapper.xml:select*from user where id=#idMapper接口:public User findUserById(int id)throws Exception;测试:Public void testFindUserById()throws Exception /获取session SqlSession session=sqlSessionFactory.openSession();/获取Mapper接口实例 UserMapper userMapper=session.getMapper(User

15、Mapper.class);第11章 MyBatis 配置文件 /通过Mapper接口调用statement User user=userMapper.findUserById(1);System.out.println(user);/关闭session session.close();使用session调用selectOne查询单条记录。3.输出POJO列表参考selectUserByName的定义:Mapper.xml:select*from user where username like%$value%第11章 MyBatis 配置文件Mapper接口:public List find

16、UserByUsername(String username)throws Exception;测试:Public void testFindUserByUsername()throws Exception /获取session SqlSession session=sqlSessionFactory.openSession();/获取Mapper接口实例 UserMapper userMapper=session.getMapper(UserMapper.class);/如果使用占位符号则必须人为在参数中加%/List list=userMapper.selectUserByName(%管理

17、员%);/如果使用$原始符号则不用人为在参数中加%List list=userMapper.findUserByUsername(管理员);第11章 MyBatis 配置文件 /关闭session session.close();使用session的selectList方法获取POJO列表。4.resultType总结输出POJO对象和输出POJO列表在sql中定义的resultType是一样的。返回单个POJO对象要保证sql查询出来的结果集为单条,内部使用session.selectOne方法调用,Mapper接口使用POJO对象作为方法返回值。返回POJO列表表示查询出来的结果集可能为多

18、条,内部使用session.selectList方法,Mapper接口使用List对象作为方法返回值。5.输出hashmap输出POJO对象可以改用hashmap输出类型,将输出的字段名称作为map的key,value为字段值。第11章 MyBatis 配置文件11.2.3 resultMapresultType可以指定POJO将查询结果映射为POJO,但需要POJO的属性名和sql查询的列名一致方可映射成功。如果sql查询字段名和POJO的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系,resultMap实质上还需要将查询结果映射到POJO对象中。resultMap可

19、以实现将查询结果映射为复杂类型的POJO,比如在查询结果映射对象中包括POJO和list实现一对一查询和一对多查询。1.Mapper.xml定义配置resultMap标签,映射不同的字段和属性名。select id id_,username username_,birthday birthday_ from user 第11章 MyBatis 配置文件2.定义resultMap由于Mapper.xml中sql查询列和Users.java类属性不一致,需要定义resultMap:userListResultMap,将sql查询列和Users.java类属性对应起来。定义的resultMap标签u

20、serListResultMap如下:其中,:此属性表示查询结果集的唯一标识,非常重要。如果是多个字段为复合唯一约束则定义多个。Property:表示person类的属性。Column:表示sql查询出来的字段名。第11章 MyBatis 配置文件Column和property放在一块儿表示将sql查询出来的字段映射到指定的POJO类属性上。:普通结果,即POJO的属性。3.Mapper接口定义public List findUserListResultMap()throws Exception;11.2.4 动态sql通过MyBatis提供的各种标签方法实现动态拼接sql,具体方式如下:1.

21、Ifselect*from user where 1=1 and id=#id第11章 MyBatis 配置文件and username like%$username%注意要做不等于空字符串校验。2.Where上边的sql也可以改为:select*from user and id=#id第11章 MyBatis 配置文件and username like%$username%可以自动处理第一个and。3.foreach向sql传递数组或list,MyBatis使用foreach解析,方法如下:通过POJO传递list。传入多个id查询用户信息,用下边两个sql实现:SELECT*FROM US

22、ERS WHERE username LIKE%张%AND(id=10 OR id=89 OR id=16)SELECT*FROM USERS WHERE username LIKE%张%id IN(10,89,16)第11章 MyBatis 配置文件在POJO中定义list属性ids存储多个用户id,并添加getter/setter方法。public class QueryVo private User user;private UserCustom userCustom;/传递多个用户id private List ids;mapper.xml0#id 第11章 MyBatis 配置文件测

23、试代码:List ids=new ArrayList();ids.add(1);/查询id为1的用户ids.add(10);/查询id为10的用户queryVo.setIds(ids);List list=userMapper.findUserList(queryVo);传递单个list。传递list类型在编写Mapper.xml时没有区别,唯一不同的是只有一个list参数时它的参数名为list。代码如下:Mapper.xml:select*from user 第11章 MyBatis 配置文件#item.id Mapper接口:public List selectUserByList(Lis

24、t userlist)throws Exception;测试:Public void testselectUserByList()throws Exception /获取session SqlSession session=sqlSessionFactory.openSession();第11章 MyBatis 配置文件 /获取Mapper接口实例 UserMapper userMapper=session.getMapper(UserMapper.class);/构造查询条件list List userlist=new ArrayList();User user=new User();use

25、r.setId(1);userlist.add(user);user=new User();user.setId(2);userlist.add(user);/传递userlist列表查询用户列表 Listlist=userMapper.selectUserByList(userlist);/关闭session第11章 MyBatis 配置文件 session.close();传递单个数组(数组中是POJO):Mapper.xml:select*from user#item.id 第11章 MyBatis 配置文件 sql只接收一个数组参数,这时sql解析参数的名称MyBatis固定为arra

26、y,如果数组是通过一个POJO传递到sql,则参数的名称为POJO中的属性名。index:数组的下标。item:数组每个元素的名称,名称随意定义。open:循环开始。close:循环结束。separator:中间分隔输出。Mapper接口:public List selectUserByArray(Object userlist)throws Exception;测试:第11章 MyBatis 配置文件Public void testselectUserByArray()throws Exception /获取session SqlSession session=sqlSessionFacto

27、ry.openSession();/获取Mapper接口实例 UserMapper userMapper=session.getMapper(UserMapper.class);/构造查询条件list Object userlist=new Object2;User user=new User();user.setId(1);userlist0=user;user=new User();user.setId(2);userlist1=user;第11章 MyBatis 配置文件 /传递user对象查询用户列表 Listlist=userMapper.selectUserByArray(user

28、list);/关闭session session.close();传递单个数组(数组中是字符串类型):Mapper.xml:select*from user 第11章 MyBatis 配置文件#item 如果数组中是简单类型则写为#item,不用再通过ognl获取对象属性值了。Mapper接口:public List selectUserByArray(Object userlist)throws Exception;测试:Public void testselectUserByArray()throws Exception /获取session SqlSession session=sqlS

29、essionFactory.openSession();第11章 MyBatis 配置文件 /获取Mapper接口实例 UserMapper userMapper=session.getMapper(UserMapper.class);/构造查询条件list Object userlist=new Object2;userlist0=”1”;userlist1=”2”;/传递user对象查询用户列表 Listlist=userMapper.selectUserByArray(userlist);/关闭session session.close();第11章 MyBatis 配置文件4.sql片段sql中可将重复的sql提取出来,使用时用include引用即可,最终达到sql重用的目的,代码如下:select*from user and id=#id and username like%$username%第11章 MyBatis 配置文件将where条件抽取出来:and id=#id and username like%$username%使用include引用:select*from user 第11章 MyBatis 配置文件 注意:如果引用其他mapper.xml的sql片段,则在引用时需要加上namespace,代码如下:

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|