欢迎来到163文库! | 帮助中心 精品课件PPT、教案、教学设计、试题试卷、教学素材分享与下载!
163文库
全部分类
  • 办公、行业>
  • 幼教>
  • 小学>
  • 初中>
  • 高中>
  • 中职>
  • 大学>
  • 各类题库>
  • ImageVerifierCode 换一换
    首页 163文库 > 资源分类 > PPTX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 文档编号:7669579       资源大小:211.91KB        全文页数:40页
    • 资源格式: PPTX        下载积分:15文币     交易提醒:下载本文档,15文币将自动转入上传用户(momomo)的账号。
    微信登录下载
    快捷注册下载 游客一键下载
    账号登录下载
    二维码
    微信扫一扫登录
    下载资源需要15文币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    优惠套餐(点此详情)
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、试题类文档,标题没说有答案的,则无答案。带答案试题资料的主观题可能无答案。PPT文档的音视频可能无法播放。请谨慎下单,否则不予退换。
    3、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者搜狗浏览器、谷歌浏览器下载即可。。

    《基于新信息技术的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,代码如下:


    注意事项

    本文(《基于新信息技术的Java-EE应用开发实训》课件第十一章.pptx)为本站会员(momomo)主动上传,其收益全归该用户,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!




    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


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

    163文库