Java01(持久层框架Mybatis)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

J2EE持久层框架MybatisJ2EE简介什么是J2ee为什么要有J2EE课题收集系统代码分析代码行数分析模型层bean分析服务层分析控制层分析展示层分析服务层代码分析获取数据库连接执行sql语句结果与bean绑定返回执行结果理想的服务层代码只关注核心(即:sql指令)数据库连接、代码执行、结果绑定最好自动完成Java反射技术介绍JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。Java反射技术介绍反射技术演示获取对象的属性o.getClass().getDeclaredFields()获取对象的方法Method[]methods=o.getClass().getMethods();执行对象的方法综合演示,将map绑定到bean对象课堂练习使用反射技术实现Map和javaBean对象的动态绑定并使用jsp展示出来我们自己数据库持久层框架示意图常见数据库持久层框架介绍Mybatis学习曲线低运行性能好Hibernate学习曲线高使用简单activeRecord学习曲线低普及率低Mybatis初始化使用xml初始化编写mybatis.xml编写bean文件编写具体的mapper文件编写mapper对应的接口初始化mybatis获取SqlSessionFactory获取SqlSession执行对应方法获取数据第一个mybatis程序实现项目类别管理模块使用mybatis重构原有部分代码Mybatis中的关键对象SqlSessionFactoryBuilder该类用于创建sqlSessionFactorysqlSessionFactory该类用于创建sqlSessionsqlSession该类用于执行sql代码常用对象的生命周期SqlSessionFactoryBuilder这个类可以被实例化、使用和丢弃,一旦创建了SqlSessionFactory,就不再需要它了。因此SqlSessionFactoryBuilder实例的最佳范围是方法范围(也就是局部方法变量)。你可以重用SqlSessionFactoryBuilder来创建多个SqlSessionFactory实例,但是最好还是不要让其一直存在以保证所有的XML解析资源开放给更重要的事情。sqlSessionFactorySqlSessionFactory一旦被创建就应该在应用的运行期间一直存在,没有任何理由对它进行清除或重建。使用SqlSessionFactory的最佳实践是在应用运行期间不要重复创建多次,多次重建SqlSessionFactory被视为一种代码“坏味道(badsmell)”。因此SqlSessionFactory的最佳范围是应用范围。有很多方法可以做到,最简单的就是使用单例模式或者静态单例模式。sqlSession每个线程都应该有它自己的SqlSession实例。所以它的最佳的范围是请求或方法范围。Mybatis配置文件详解configuration配置properties属性settings设置typeAliases类型命名typeHandlers类型处理器objectFactory对象工厂plugins插件configurationMybatis配置文件的根节点,其它节点均应包含在该节点内properties这些属性都是可外部配置且可动态替换的,既可以在典型的Java属性文件中配置,亦可通过properties元素的子元素来传递propertiespropertyname=drivervalue=com.mysql.jdbc.Driver/propertyname=urlvalue=jdbc:mysql://192.168.174.131:3306/sxccti?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull/propertyname=usernamevalue=root/propertyname=passwordvalue=“123456//propertiessettings用于设置mybatis的基本参数。不指定该参数时均使用默认值。建议:使用mybatis的默认值typeAliases类型别名,用于mapper文件中的输入输出typeAliasestypeAliasalias=Authortype=domain.blog.Author/typeAliasalias=Blogtype=domain.blog.Blog/typeAliasalias=Commenttype=domain.blog.Comment/typeAliasalias=Posttype=domain.blog.Post/typeAliasalias=Sectiontype=domain.blog.Section/typeAliasalias=Tagtype=domain.blog.Tag//typeAliasestypeHandlers类型处理。无论是MyBatis在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时,都会用类型处理器将获取的值以合适的方式转换成Java类型类型处理器Java类型JDBC类型BooleanTypeHandlerjava.lang.Boolean,boolean数据库兼容的BOOLEANByteTypeHandlerjava.lang.Byte,byte数据库兼容的NUMERIC或BYTEShortTypeHandlerjava.lang.Short,short数据库兼容的NUMERIC或SHORTINTEGERIntegerTypeHandlerjava.lang.Integer,int数据库兼容的NUMERIC或INTEGER自定义typeHandlers对于一些特殊类型可实现自己的typeHandlers以取代mybatis默认的typeHandlers行为。(了解)pluginsMyBatis允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis允许使用插件来拦截的方法调用包括(高级部分详细讲解):Executor(update,query,flushStatements,commit,rollback,getTransaction,close,isClosed)ParameterHandler(getParameterObject,setParameters)ResultSetHandler(handleResultSets,handleOutputParameters)StatementHandler(prepare,parameterize,batch,update,query)配置环境(environments)MyBatis的数据库连接参数配置,mybatis可以连接多个不同的数据库(POOLED):environmentsdefault=developmentenvironmentid=developmenttransactionManagertype=JDBC/dataSourcetype=POOLEDpropertyname=drivervalue=${driver}/propertyname=urlvalue=${url}/propertyname=usernamevalue=${username}/propertyname=passwordvalue=${password}//dataSource/environment/environments配置环境(environments)MyBatis的数据库连接参数配置,mybatis可以连接多个不同的数据库(JNDI):environmentid=producttransactionManagertype=JDBC/transactionManagerdataSourcetype=JNDIpropertyname=initial_contextvalue=java:comp/env/propertyname=data_sourcevalue=jdbc/xiong//dataSource/environment映射器(mappers)告诉mybatis在哪里寻找sql映射语句:单个引入mappersmapperresource=com/test/UserMapper.xml//mappers批量引入mapperspackagename=org.mybatis.builder//mappersMapper映射文件详解查询(select)更新(insert,updateanddelete)参数(Parameters)结果集(ResultMaps)自动映射(Auto-mapping)cacheselectselectid=selectPersonparameterType=intparameterMap=deprecatedresultType=hashmapstatementType=PREPAREDSelect属性表属性描述id在命名空间中唯一的标识符,可以被用来引用这条语句。parameterType将会传入这条语句的参数类的完全限定名或别名。这个属性是可选的,因为MyBatis可以通过TypeHandler推断出具体传入语句的参数,默认值为unset。parameterMap这是引用外部parameterMap的已经被废弃的方法。使用内联参数映射和parameterType属性。resultType从这条语句中返回的期望类型的类的完全限定名或别名。注意如果是集合情形,那应该是集合可以包含的类型,而不能是集合本身。使用resultType或resultMap,但不能同时使用。resultMap外部resultMap的命名引用。结果集的映射是MyBatis最强大的特性,对其有一个很好的理解的话,许多复杂映射的情形都能迎刃而解。使用resultMap或resultType,但不能同时使用。flushCache将其设置为true,任何时候只要语句被调用,都会导致本地缓存和二级缓存都会被清空,默认值:false。Select属性表useCache将其设置为true,将会导致本条语句的结果被二级缓存,默认值:对select元素为true。statementTypeSTATEMENT,PREPARED或CALLABLE的一个。这会让MyBatis分别使用Statement,PreparedStatement或CallableStatement,默认值:PREPARED。resultSets这个设置仅对多结果集的情况适用,它将列出语句执行后返回的结果集并每个结果集给一个名称,名称是逗号分隔的。insertinsertid=insertAuthorparameterType=domain.blog.AuthorflushCache=truestatementType=PREPAREDkeyProperty=keyColumn=useGeneratedKeys=updateupdateid=updateAuthorparameterType=domain.blog.AuthorflushCache=truestatementType=PREPAREDdeletedeleteid=dele

1 / 57
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功