代码及教案mybatis第一天课堂笔记_第1页
代码及教案mybatis第一天课堂笔记_第2页
代码及教案mybatis第一天课堂笔记_第3页
代码及教案mybatis第一天课堂笔记_第4页
代码及教案mybatis第一天课堂笔记_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

mybatis第一mybatis的基础知mybatisspringmvc第一天:基础知识(重点,内容量多jdbc程序(jdbc开发)mybatis框架原理(掌握mybatis程mybatisdaodao开发方法(daodao实现类掌握mybaits的mapper接口(相当于dao接口)开发方法(掌握mybatisSqlMapConfig.xmlmybatis:mybatis输入映射(掌握mybatis输出映射(掌握mybatissql(掌握高级结果集映射(一对一、一对多、多对多mybatismybatis查询缓存(一级缓存、二级缓存mybaitsspring进行整合(掌握mybatis对原生态jdbc程序中问题总环java环境:jdk1.7.0_72mysql数导入下边的sql_data.sql:记录测试数据,在实际企业开发中,最后提供一个初始化jdbc程jdbcmysql数据库中用户表的记录。javajar包:数据库驱动包mysql驱动。oracle的驱动。问题总响数据库性能。2、将sql语句硬编码到java代码中,如果sql语句修改,需要重新编译java代码,不利于。sqlxmlsqljava代码进行重新编译。3、向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于。sqlxml中。4、从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,不利于。java对象。mybatis框mybatisapachemybatis托管到goolecode下,再后来托管到下 sql)sql语句。mybatis框 输出结果java简单类pojo自定配置了数据源、事务等mybatis运行环境作用:创建SqlSession作用:操作数据库(sql增、删、改、查)输入参数java简单类pojo自定作用:SqlSession内部通过执行器操作数据库3程需环java环境:jdk1.7.0_72mybatis运行环境(jar包 /mybatis/mybatis-3/releases,3.2.7版libmybatis-3.2.7.jar:mysql的驱动包工程结mybatis根据用户id(主键)查询用户信po映射文User.xml(原始ibatis命名),mapper开发映射文件名称叫XXXMapper.xml,比如:UserMapper.xml、sqlsqlMapConfig.xml程序编根据用户名称模糊查询用户信映射文程序代添加用映射文User.xml程序代自增主键返mysqlinsert提交之前自动生成一个自增主键。mysql函数获取到刚插入记录的自增主键:insert之后调用此函数。insertUser定义:非自增主键返回(使用mysqluuid()idstring35位。uuid()sql语句中。uuid()insert语句之前执行。oracle<selectKeykeyProperty="id"order="BEFORE"resultType="java.lang.String">SELECT序列名.nextval() 3.83.8删除用映射文代码3.93.9更新用映射文代3.103.10总parameterType#{}和如果接收简单类型,#{}value或其它名称。#{}接收pojo对象值,通过OGNL对象中的属性值,通过属性.属性.属性...的方式获取对象属性值${}表示一个拼接符号,会sql注入,所以不建议使用${}如果接收简单类型,${}value。${}接收pojo对象值,通过OGNL对象中的属性值,通过属性.属性.属性...的方式获取对象属性值selectOneselectOneselectOneselectList也可以实现(list中只有一个selectList表示查询出一个列表(多条记录)selectListselectOne。selectOne报错: ception:Expectedoneresult(ornull)tobereturnedbyselectOne(),found:3.11mybatishibernate本质区别和应用场hibernate:是一个标准ORM框架(对象关系映射。门槛较高的,不需要程序写sql,sql语句自动生成了。对sql语句进行优化、修改比较的。适用与需求变化不多的中小型项目,比如:管理系统,erp、orm、oasql,mybatis也可以实现映射(输入映射、输出映射。mybatisdao的方SqlSession使用范SqlSessionFactoryBuilder当成一个工具类使用即可SqlSessionFactoryBuilder。SqlSessionFactorynewSqlSessionFactoryBuilder即可。SqlSessionFactorySqlSessionsqlSessionFactory(工厂一旦创建,使用一个实例。mybatisspringsqlSessionFactory。SqlSession是一个面向用户(程序员)SqlSession中提供了很多操作数据库的方法:如:selectOne(返回单个对象)、selectList(返回单个或多个对象SqlSessionSqlSesion实现类中除了有接口中的方法(操作数据库的方法)还有数据域属性。SqlSession最佳应用场合在方法体内,定义成局部变量使用。dao开发方法(程序员需要写dao接口和dao实现类思daodaodaoSqlSessionFactorySqlSessionFactorydao接dao接口实现publicclassUserDaoImplimplementsUserDao需要向dao实现类中注入privateSqlSessionFactorypublicUserDaoImpl(SqlSessionFactorysqlSessionFactory)this.sqlSessionFactory=}publicUserfindUserById(intid)throwsException{SqlSessionsqlSession=sqlSessionFactory.openSession();Useruser=sqlSession.selectOne("test.findUserById",return}publicvoidinsertUser(Useruser)throwsException{SqlSessionsqlSession=sqlSessionFactory.openSession();sqlSession.insert("test.insertUser",user);

}publicvoiddeleteUser(intid)throwsException{SqlSessionsqlSession=sqlSessionFactory.openSession();sqlSession.delete("test.deleteUser",id);

}}测试代码总结原始dao开发问1、dao2sqlsessionstatementidmapper方法(程序员只需要mapper接口(相当于dao接)思路(mapper开发规范程序员编写mapper接口需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类对象1mapper.xmlnamespacemapperUseruser=sqlSession.selectOne("test.findUserById",id);sqlSession.insert("test.insertUser",user);SqlMapConfig.xml中加载测一些问题总 对象内部调用selectOne或,如果mapper方法返回集合对象,对象内部通过selectList查询数据库。 mapper接口方法参数只能有一影响系统开mapper接口方法参数只能有一个,系统是否不利于扩展。系统框架中,dao层的代码是被业务层公用的。即使mapper接口只有一个参数,可以使用包装类型的pojo满足不同的业务方法的需求mybatisSqlMapConfig.xml,配置内容如下:properties属pertiesSqlMapCperties的属性值。SqlMapConfig.xml中就不需要对数据库连接参数硬编码。将数据库连接参数只配置在perties中原因方便对参数进行统一管理其它xml可以该pertiessqlMapConfig.xmlpropertiesMyBatis在properties元素体内定义的属性首先被然后会properties元素中resource或url加载的属性,它会覆盖已的同名属性最后parameterType传递的属性,它会覆盖已的同名属性propertiesproperties文件中。properties文件中定义属性名要有一定的特殊性,如:XXXXX.XXXXX.XXXXsettings全局参数配mybatis框架在运行时可以调整一些运行参数。mybatistypeAliases(别名)重需mapper.xml中通过别名定义,方便开发。别 映射的类 自定义别单个别名定批量定义别名(常用typeHandlers(类型处理器mybatistypeHandlersjdbcjava通常情况下,mybatis提供的类型处理器满足日常需要,不需要自定义.mybatis支持类型处理器:JavaJDBC类CHAR和VARCHAR类CLOB和NVARCHAR和NCHAR类NCLOB类BLOBLONGVARBINARY类TIMESTAMP类DATE类TIME类TIMESTAMP类DATE类TIME类VARCHAR-任何兼容的字串类型,作为代码(而mappers(映射配置通过resource加载单个映射文mapper接口加 批量加载mapper(推荐使用输入映parameterType指定输入参数的类型,类型可以是简单类型、hashmap、pojo。pojo的包装对需完成用户信息的综合查询,需要传入查询条件很复杂(可能包括用户信息、其它信息,比如商品、订单的定义包装类型pojo中将复杂的查询条件包装进去。测试代输出映resultType进行输出映射,只有查询出来的列名pojo中的属性名一致,该列才可以映射成功。pojopojo对象。pojopojo输出简单类需测试代小pojo对象和pojo列pojomapper.java指定的方法返回值类型不一样:1pojo2pojolist生成的动态对象中是根据mapper方法的返回值类型确定是调用selectOne(返回单个对象调用)还是(返回集合对象调用mybatisresultMapresultMap使用方如果查询出来的列名和pojoresultMap对列名和pojo12resultMapstatement将下边的sql使用User完成映SELECTidid_,usernameusername_FROMUSERWHEREid=#{value}User类中属性名和上边查询列名不一致。resultMapstatement的输出映射类测小使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMappojo属性名之间作一个映射关什么是动态mybatis对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接、组装需测试代sql片需将上边实现的动态sql判码块抽取出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论