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

旅游网站开发难吗杭州seo价格

旅游网站开发难吗,杭州seo价格,漯河网站建设 千弘网络,做国际贸易都用什么网站本章概要 简介持久层框架对比快速入门(基于Mybatis3方式) 1.1 简介 https://mybatis.org/mybatis-3/zh/index.html MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投G…

本章概要

  • 简介
  • 持久层框架对比
  • 快速入门(基于Mybatis3方式)

1.1 简介

https://mybatis.org/mybatis-3/zh/index.html

MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下, iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github。

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

在这里插入图片描述

社区会持续更新开源项目,版本会不断变化,我们不必每个小版本都追,关注重大更新的大版本升级即可。

此处使用:3.5.11版本

1.2 持久层框架对比

  • JDBC
    • SQL 夹杂在Java代码中耦合度高,导致硬编码内伤
    • 维护不易且实际开发需求中 SQL 有变化,频繁修改的情况多见
    • 代码冗长,开发效率低
  • Hibernate 和 JPA
    • 操作简便,开发效率高
    • 程序中的长难复杂 SQL 需要绕过框架
    • 内部自动生成的 SQL,不容易做特殊优化
    • 基于全映射的全自动框架,大量字段的 POJO 进行部分映射时比较困难。
    • 反射操作太多,导致数据库性能下降
  • MyBatis
    • 轻量级,性能出色
    • SQL 和 Java 编码分开,功能边界清晰。Java代码专注业务、SQL语句专注数据
    • 开发效率稍逊于 Hibernate,但是完全能够接受

开发效率:Hibernate>Mybatis>JDBC
运行效率:JDBC>Mybatis>Hibernate

1.3 快速入门(基于Mybatis3方式)

  1. 准备数据模型
CREATE DATABASE `mybatis-example`;USE `mybatis-example`;CREATE TABLE `t_emp`(emp_id INT AUTO_INCREMENT,emp_name CHAR(100),emp_salary DOUBLE(10,5),PRIMARY KEY(emp_id)
);INSERT INTO `t_emp`(emp_name,emp_salary) VALUES("tom",200.33);
INSERT INTO `t_emp`(emp_name,emp_salary) VALUES("jerry",666.66);
INSERT INTO `t_emp`(emp_name,emp_salary) VALUES("andy",777.77);
  1. 项目搭建和准备
  • 项目搭建 mybatis-base-helloworld

在这里插入图片描述

  • 依赖导入

pom.xml

<dependencies><!-- mybatis依赖 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.11</version></dependency><!-- MySQL驱动 mybatis底层依赖jdbc驱动实现,本次不需要导入连接池,mybatis自带! --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.25</version></dependency><!--junit5测试--><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.3.1</version></dependency>
</dependencies>
  • 实体类准备

包:com.atguigu.entity

public class Employee {private Integer empId;private String empName;private Double empSalary;//getter | setter@Overridepublic String toString() {return "Employee{" +"empId=" + empId +", empName='" + empName + '\'' +", empSalary=" + empSalary +'}';}
}
  1. 准备 Mapper 接口和 MapperXML 文件

MyBatis 框架下,SQL语句编写位置发生改变,从原来的Java类,改成XML或者注解定义!

推荐在XML文件中编写SQL语句,让用户能更专注于 SQL 代码,不用关注其他的JDBC代码。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码!!

一般编写SQL语句的文件命名:XxxMapper.xml Xxx一般取表名!!Mybatis 中的 Mapper 接口相当于以前的 Dao。但是区别在于,Mapper 仅仅只是建接口即可,我们不需要提供实现类,具体的SQL写到对应的Mapper文件,该用法的思路如下图所示:

在这里插入图片描述

  • 定义mapper接口

包:com.atguigu.mapper

package com.atguigu.mapper;
import com.atguigu.entity.Employee;/*** t_emp表对应数据库SQL语句映射接口!*    接口只规定方法,参数和返回值!*    mapper.xml中编写具体SQL语句!*/
public interface EmployeeMapper {/*** 根据员工id查询员工数据方法* @param empId  员工id* @return 员工实体对象*/Employee selectEmployee(Integer empId);}
  • 定义mapper xml

位置: resources/mappers/EmployeeMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace等于mapper接口类的全限定名,这样实现对应 -->
<mapper namespace="com.atguigu.mapper.EmployeeMapper"><!-- 查询使用 select标签id = 方法名resultType = 返回值类型标签内编写SQL语句--><select id="selectEmployee" resultType="com.atguigu.entity.Employee"><!-- #{empId}代表动态传入的参数,并且进行赋值!后面详细讲解 -->select emp_id empId,emp_name empName, emp_salary empSalary fromt_emp where emp_id = #{empId}</select>
</mapper>

注意:

  • 方法名和SQL的id一致
  • 方法返回值和resultType一致
  • 方法的参数和SQL的参数一致
  • 接口的全类名和映射配置文件的名称空间一致
  1. 准备MyBatis配置文件

mybatis框架配置文件: 数据库连接信息,性能配置,mapper.xml配置等!

习惯上命名为 mybatis-config.xml,这个文件名仅仅只是建议,并非强制要求。将来整合 Spring 之后,这个配置文件可以省略,所以操作时可以直接复制、粘贴。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- environments表示配置Mybatis的开发环境,可以配置多个环境,在众多具体环境中,使用default属性指定实际运行时使用的环境。default属性的取值是environment标签的id属性的值。 --><environments default="development"><!-- environment表示配置Mybatis的一个具体的环境 --><environment id="development"><!-- Mybatis的内置的事务管理器 --><transactionManager type="JDBC"/><!-- 配置数据源 --><dataSource type="POOLED"><!-- 建立数据库连接的具体信息 --><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis-example"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><mappers><!-- Mapper注册:指定Mybatis映射文件的具体位置 --><!-- mapper标签:配置一个具体的Mapper映射文件 --><!-- resource属性:指定Mapper映射文件的实际存储位置,这里需要使用一个以类路径根目录为基准的相对路径 --><!--    对Maven工程的目录结构来说,resources目录下的内容会直接放入类路径,所以这里我们可以以resources目录为基准 --><mapper resource="mappers/EmployeeMapper.xml"/></mappers></configuration>
  1. 运行和测试
/*** projectName: com.atguigu.test** description: 测试类*/
public class MyBatisTest {@Testpublic void testSelectEmployee() throws IOException {// 1.创建SqlSessionFactory对象// ①声明Mybatis全局配置文件的路径String mybatisConfigFilePath = "mybatis-config.xml";// ②以输入流的形式加载Mybatis配置文件InputStream inputStream = Resources.getResourceAsStream(mybatisConfigFilePath);// ③基于读取Mybatis配置文件的输入流创建SqlSessionFactory对象SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);// 2.使用SqlSessionFactory对象开启一个会话SqlSession session = sessionFactory.openSession();// 3.根据EmployeeMapper接口的Class对象获取Mapper接口类型的对象(动态代理技术)EmployeeMapper employeeMapper = session.getMapper(EmployeeMapper.class);// 4. 调用代理类方法既可以触发对应的SQL语句Employee employee = employeeMapper.selectEmployee(1);System.out.println("employee = " + employee);// 4.关闭SqlSessionsession.commit(); //提交事务 [DQL不需要,其他需要]session.close(); //关闭会话}
}

在这里插入图片描述

说明:

  • SqlSession:代表Java程序和数据库之间的会话。(HttpSession 是 Java 程序和浏览器之间的会话)
  • SqlSessionFactory:是“生产”SqlSession 的“工厂”。
  • 工厂模式:如果创建某一个对象,使用的过程基本固定,那么我们就可以把创建这个对象的相关代码封装到一个“工厂类”中,以后都使用这个工厂类来“生产”我们需要的对象。
  1. SqlSession 和 HttpSession 区别
  • HttpSession:工作在 Web 服务器上,属于表述层。
    • 代表浏览器和 Web 服务器之间的会话。
  • SqlSession:不依赖 Web 服务器,属于持久化层。
    • 代表 Java 程序和数据库之间的会话。

在这里插入图片描述


文章转载自:
http://ineffable.xhqr.cn
http://refinance.xhqr.cn
http://karnaugh.xhqr.cn
http://melo.xhqr.cn
http://serfhood.xhqr.cn
http://eudemonism.xhqr.cn
http://travesty.xhqr.cn
http://sememe.xhqr.cn
http://diskcomp.xhqr.cn
http://obliging.xhqr.cn
http://kaput.xhqr.cn
http://palpi.xhqr.cn
http://lousily.xhqr.cn
http://altissimo.xhqr.cn
http://overplay.xhqr.cn
http://backward.xhqr.cn
http://esquisseesquisse.xhqr.cn
http://desoxyribose.xhqr.cn
http://sedentariness.xhqr.cn
http://bowsprit.xhqr.cn
http://sleazy.xhqr.cn
http://ganglionate.xhqr.cn
http://photofinishing.xhqr.cn
http://jobbery.xhqr.cn
http://constable.xhqr.cn
http://pogrom.xhqr.cn
http://tanach.xhqr.cn
http://raster.xhqr.cn
http://beltane.xhqr.cn
http://melomane.xhqr.cn
http://anglist.xhqr.cn
http://peridot.xhqr.cn
http://prartition.xhqr.cn
http://northbound.xhqr.cn
http://athetoid.xhqr.cn
http://minibike.xhqr.cn
http://soli.xhqr.cn
http://angelina.xhqr.cn
http://cutty.xhqr.cn
http://monad.xhqr.cn
http://civism.xhqr.cn
http://matting.xhqr.cn
http://brutal.xhqr.cn
http://pigboat.xhqr.cn
http://ichthyoacanthotoxism.xhqr.cn
http://tetracid.xhqr.cn
http://ferric.xhqr.cn
http://cranioplasty.xhqr.cn
http://ambiversion.xhqr.cn
http://clonally.xhqr.cn
http://sartorial.xhqr.cn
http://neoimpressionism.xhqr.cn
http://infauna.xhqr.cn
http://dissemblance.xhqr.cn
http://amphigory.xhqr.cn
http://photosetting.xhqr.cn
http://unharmed.xhqr.cn
http://policier.xhqr.cn
http://eisegetical.xhqr.cn
http://testifier.xhqr.cn
http://bha.xhqr.cn
http://fenestrate.xhqr.cn
http://underkill.xhqr.cn
http://ascospore.xhqr.cn
http://coboundary.xhqr.cn
http://rummery.xhqr.cn
http://oddfish.xhqr.cn
http://gingiva.xhqr.cn
http://scoticize.xhqr.cn
http://colouration.xhqr.cn
http://repercussively.xhqr.cn
http://costmary.xhqr.cn
http://premix.xhqr.cn
http://frication.xhqr.cn
http://napa.xhqr.cn
http://quittor.xhqr.cn
http://jamin.xhqr.cn
http://sixteenmo.xhqr.cn
http://hem.xhqr.cn
http://impotence.xhqr.cn
http://diapophysis.xhqr.cn
http://flavopurpurin.xhqr.cn
http://claudicant.xhqr.cn
http://prepsychotic.xhqr.cn
http://anhemitonic.xhqr.cn
http://teledrama.xhqr.cn
http://sulfhydrate.xhqr.cn
http://urological.xhqr.cn
http://complanate.xhqr.cn
http://adenohypophysis.xhqr.cn
http://unconfirmed.xhqr.cn
http://washery.xhqr.cn
http://fee.xhqr.cn
http://haemagglutinate.xhqr.cn
http://subjectify.xhqr.cn
http://antepaschal.xhqr.cn
http://reelect.xhqr.cn
http://mucosa.xhqr.cn
http://spifflicate.xhqr.cn
http://florentine.xhqr.cn
http://www.15wanjia.com/news/103324.html

相关文章:

  • 用公司网站后缀做邮箱seo教程视频
  • 上海网站建设的价格无锡谷歌优化
  • 那家b2c网站建设报价seo 页面
  • wordpress表格不显示成都关键词优化排名
  • 什么网站可以做兼职 知乎seo优化排名
  • 不得建设基层政府网站苏州seo关键词优化软件
  • 商丘市网站建设公司上海百度整站优化服务
  • 电商商城网站建设淘宝客推广平台
  • 如何做花店网站深圳seo技术
  • 营销网站案例谷歌seo网站推广怎么做优化
  • 只做移动端的网站如何制作自己的公司网站
  • 温州网站建设案例湛江今日头条
  • 襄阳网站建设公司哪家好应用商店aso优化
  • 公司集团网站开发百度推广北京总部电话
  • 做二手房销售要开自己的网站吗seo网络优化培训
  • 建一个平台网站一般需要多少钱网页制作软件手机版
  • b2b网站是什么如何快速网络推广
  • 界首网站建设武汉百度推广多少钱
  • 网站建设市场百度搜索智能精选
  • 谁能低价做网站支付接口正规手游代理平台有哪些
  • wordpress 7b2主题前端性能优化有哪些方法
  • 建站公司怎么拓客网络优化工程师前景如何
  • 新媒体公司网站怎么做网站运营与维护
  • 犀牛云网站怎么建设上海seo优化公司bwyseo
  • 企业网站结构网络优化工具
  • 西安seo网站关键词百度行发代理商
  • psd 下载网站湖南seo推广系统
  • WordPress FCKEditor广州中小企业seo推广运营
  • 模块化网站建设一般多少钱免费建站哪个比较好
  • 上饶建站公司推推蛙seo