当前位置: 首页 > news >正文

广州响应式网站建设免费虚拟主机管理系统

广州响应式网站建设,免费虚拟主机管理系统,广州网络推广招聘,网站维护费用目录 1.什么是MyBatis 2.MyBatis优缺点 3.MyBatis工作原理 4.MyBatis缓存模式 5.MyBatis代码相关问题 6.MyBatis和hibernate区别 1.什么是MyBatis MyBatis是一个半ORM持久层框架#xff08;对象关系映射#xff09;#xff0c;基于JDBC进行封装#xff0c;使得开发者…目录 1.什么是MyBatis 2.MyBatis优缺点 3.MyBatis工作原理 4.MyBatis缓存模式 5.MyBatis代码相关问题 6.MyBatis和hibernate区别 1.什么是MyBatis MyBatis是一个半ORM持久层框架对象关系映射基于JDBC进行封装使得开发者可以专注于SQL语句不用关系JDBC操作的流程。 MyBatis支持定制化 、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息将接口和 Java 的 POJOS(Plain Ordinary Java Object普通的 Java对象即实际开发中的实体类)映射成数据库中的记录。 2.MyBatis优缺点 MyBatis作为市面上应用最为广泛的数据库框架具有以下优点 简单易学本身就很小且简单。易于学习易于使用。通过文档和源代码可以比较完全的掌握它的设计思路和实现。 灵活便捷mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。同时减少了JDBC相关代码大大减少了代码量。 解除sql与程序代码的耦合通过提供DAO层将业务逻辑和数据访问逻辑分离使系统的设计更清晰更易维护更易单元测试。sql和代码的分离提高了可维护性。 兼容性好基于JDBC进行封装所以可以和很多数据库兼容。 提供xml标签支持编写动态sql。 但同时MyBatis也还具有一定的缺点 SQL语句编程量较大较为考验使用者的SQL功力。SQL语句与具体数据库依赖很大使得数据库移植性差。 3.MyBatis工作原理 MyBatis的工作原理主要依赖于SqlSessionFactory和SqlSession两大类。其主要分为两大过程 1MyBatis启动加载。Mybatis会获取一个SqlSessionFactory对象完成全局配置文件和映射文件的加载解析操作然后把相关信息保存到Configuration对象中。然后通过SqlSessionFactory获取SqlSession对象基于DefaultSqlSessio对象实现。 SqlSessionFactory类它是单个数据库映射关系经过编译后的内存镜像主要是创建DefaultSqlSessionFactory对象进行具体实现。而SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象来获得而SqlSessionFactoryBuildr则可以从XML配置文件或一个预先定制的Configuration的实例构建出SqlSessionFactory的实例。 2MyBatis处理请求。SqlSession类中提供了处理请求的方法select、update等并调用对应的Executor处理。处理过程中如果有配置缓存先走二级缓存再走一级缓存缓存不命中再走数据库操作。会通过StatementHandler处理先通过ParameterHandler处理SQL中的占位符再通过ResultSetHandler处理结果集的映射。 SqlSession类同理主要是创建DefaultSqlSession对象进行具体实现。SqlSession接口实例执行方法的过程中主要会去执行Executor类的方法进行请求的具体处理。 总结来说具体的工作流程就是通过SqlSessionFactoryBuilder从XML配置文件或一个预先定制的Configuration的实例构建出SqlSessionFactory的实例再由SqlSessionFactory创建出一个SqlSession并由该SqlSession进行请求的处理执行事务和SQL语句。 4.MyBatis缓存模式 mybatis为减轻数据库压力提高数据库性能提供了两级缓存机制 1一级缓存 基于会话session的缓存。一级缓存是默认放开的但需开启事务进行使用就是同一个事务中的第二次查询会走缓存。MyBatis中一级缓存也叫做本地缓存于SqlSession层面实现的所以作用范围是在同一个SqlSession中,不同的SqlSession及时查询相同的数据也不会走缓存。 2二级缓存 基于进程使用装饰器维护涉及到了装饰器模式需要了解可参考java设计模式——装饰器模式的缓存。MyBatis中二级缓存的作用域是namespace命名空间所以很显然二级缓存是需要存储在SqlSession之外的 ​ 二级缓存缓存范围比一级缓存更大不同的SQLSession可以访问二级缓存的内容所以二级缓存需要自己开启哪些数据放入二级缓存需要自己指定。 开启方式application.yml文件配置 # mybatis相关配置 mybatis:configuration:#开启MyBatis的二级缓存cache-enabled: true或是在mapper.xml文件中添加代码 ​ 其中eviction属性指缓存回收策略flushInterval则是缓存更新时间上述代码中为1分钟 eviction缓存的回收策略默认的是 LRU。 LRU - 最近最少使用移除最长时间不被使用的对象。    FIFO - 先进先出按对象进入缓存的顺序来移除它们。    SOFT - 软引用移除基于垃圾回收器状态和软引用规则的对象。    WEAK - 弱引用更积极地移除基于垃圾收集器和弱引用规则的对象。   3三级缓存 三级缓存又称为自定义缓存如使用Redis进行缓存等需要自行进行配置操作。 实际代码中如何开启 5.MyBatis代码相关问题 1获取自增主键如果数据库中设计了主键id自动增长那么可以通过MyBatis中的mapper.xml文件中的属性配置获取该值并进行插入 insert idaddEmployee parameterTypeemployee useGeneratedKeystrue keyPropertyidinsert into tbl_employee (id, name, email, gender)values (#{id}, #{name}, #{email}, #{gender}); /insert核心代码为 useGeneratedKeystrue keyPropertyid 2属性名和字段名不一致主要通过resultMap标签处理。 resultMap idempResultMap typeEmpid columnstudent_id propertyid/idresult columns_name propertyname/result /resultMap select resultMapempResultMapselect * from student where student_id #{id} /select3#和$的区别 #{}是预编译处理会把传入的数据都当成一个字符串来处理所以会在传入的数据上面加一个双引号。其在mybatis处理时替换为?然后进行赋值。${}是在mybatis处理时直接替换作用相等于是字符串拼接所以会有SQL注入风险。 例子 select * from student where name #{name} 上述语句中该sql语句会将#{name}替换为?然后获取到传入的Param的参数值时比如nameseven再传入整个seven进行传入。 select * from student where name ${name} 如果传入的name类型为整型类型那么在执行sql语句时就不会出错但是如果传入的name类型为字符串型就会变成select * from student where nameseven执行会报错。 所以一般情况下传入参数使用 #{}如果需要凭借SQL语句时才使用${}。 6.MyBatis和hibernate区别 Hibernate也是一个对象关系映射框架同样基于JDBC进行封装工作原理与MyBatis类似。其余MyBatis之间主要区别如下 MyBatisHibernate半自动框架需要手动编写SQL语句全自动的orm框架hibernate可以自动生成SQL语句自动执行日志模块只有基本记录功能拥有完成的日志系统缓存模块需要在每个表-对象进行详细配置缓存机制上更优移植性较差移植性更强由于sql都是手动编写且存于xml文件中优化更为便捷 由于sql都是自动生成优化较为困难且遇到一些较为复杂的sql操作时无法达成目的。 总结来说mybatis较为轻便简单而直接使用sql语句开发更方便上手更快。Hibernate框架更为复杂也更加严谨。
http://www.tj-hxxt.cn/news/134679.html

相关文章:

  • 网站建设案例 杭州远大建设银行网站总是崩溃
  • 免费flash网站源码带后台竞价页面网站做优化
  • 建设网站的源代码的所有权黑彩网站建设需要什么东西
  • 兴宁网站建设联享品牌网站建设公司
  • 义乌网站制作公司网站内页收录突然没了
  • frontpage做的网站好不好河南造价信息网官网
  • 益阳建设局网站古典网站源码
  • 做网站赚广告做网站应达到什么效果
  • 网站建设_推广_网页设计_域名注册_企业邮箱_虚拟主机 新闻wordpress免费资源
  • 网站建设与管理和电子商务哪个好wordpress太难用
  • 设计师网站 知乎济宁专业网站开发公司
  • 抚顺网站开发招聘有没有做书签的网站
  • 免费网站建设视频哪个网站可以做水果销售代理
  • 台州做网站软件网站建设平台对比
  • 网站界面设计案例wordpress页面注册忘记密码
  • 网上商城网站开发公司拼多多网络营销方式
  • 企业网站优化定制ui设计师需要学的软件
  • 国外公共空间设计网站windows 安装 wordpress
  • 游戏网站建设论文网站设计素养
  • 做网站的群海外网站建设
  • 邢台网站建设公司做cpc不做网站可以吗
  • 简诉网站建设的基本流程图北京网站建设怎么样天
  • 商标 做网站 是几类龙岩正规全网品牌营销招商
  • 网站架构方案windows优化大师和鲁大师
  • 会计网站建设意义网站制作价格范围
  • 做demo的网站app开发公司大概多少钱
  • 58同城的网站怎么做的什么网站都能打开的浏览器
  • 学做网站论坛vip共享免费十八种禁用网站游戏
  • 上海网站关键词排名建站公司要不要承担网站被黑
  • 西部数码网站打不开苏州品牌网站设计