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

黑龙江网站建设如何做基金公司网站

黑龙江网站建设,如何做基金公司网站,专业网络工程师培训,代理什么产品最赚钱✅作者简介#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者#xff0c;修心和技术同步精进。 #x1f34e;个人主页#xff1a;Java Fans的博客 #x1f34a;个人信条#xff1a;不迁怒#xff0c;不贰过。小知识#xff0c;大智慧。 #x1f49e;当前专栏… ✅作者简介2022年博客新星 第八。热爱国学的Java后端开发者修心和技术同步精进。 个人主页Java Fans的博客 个人信条不迁怒不贰过。小知识大智慧。 当前专栏SSM 框架从入门到精通 ✨特色专栏国学周更-心性养成之路 本文内容MyBatis 入门教程详解 文章目录1. SSM 框架简介2. MyBatis 概述 2.1 ORM 框架原理 2.2 MyBatis 与 Hibernate 的比较 2.3 搭建MyBatis 开发环境3. 第一个 MyBatis 项目4. MyBatis 的工作流程5. 利用属性文件读取数据库连接信息6. 主配置文件简介 6.1 setting标签 6.2 typeAliases标签 6.3 typeHandlers标签 6.4 environments标签 6.5 mappers标签7. 连接其它数据库1. SSM 框架简介 SSM 框架是 Spring、Spring MVC 和 MyBatis 三大框架的组合是目前主流的 Java EE 企业级框架适用于搭建各种大型企业级应用系统。SSM 采用标准的 MVC 模式将整个系统划分为数据访问层DAO 层、业务逻辑层、控制层、表示层使用 MyBatis 管理 DAO 层作为对象数据的持久化引擎使用 Spring MVC 进行请求转发与视图管理使用 Spring 实现业务对象管理并整合其它框架。 2. MyBatis 概述 MyBatis 是当前 Java Web 开发中流行的持久化 ORM 框架它对 JDBC 进行了封装与简化无须 JDBC 的注册驱动、创建 Connection 连接、配置 Statement 等烦琐过程大大减少了 JDBC 代码使开发者只需要专注于 SQL 语句设计即可。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJOPlain Old Java Objects普通老式 Java 对象为数据库中的记录反之也可将数据库中的记录转化为 Java 类对象。在三层架构开发中MyBatis 作用在数据访问层它让数据访问层的开发变得简单、高效。 2010年这个项目由apache software foundation 迁移到了google code并且改名为MyBatis 。2013年11月迁移到Github。 回顾JDBC的使用步骤 1.加载驱动 Class.forName(com.mysql.jdbc.Driver);2.获取连接对象 DiverManerger.getConnection(url,username,password)3.获取执行sql的Statement对象 connection.CreateStatement();4.执行sql语句5.处理结果集6.释放连接 connection.Close()与JDBC相比 Mybatis通过参数映射方式可以将参数灵活的配置在SQL语句中的配置文件中避免在Java类中配置参数Mybatis通过输出映射机制将结果集的检索自动映射成相应的Java对象避免对结果集手工检索Mybatis可以通过Xml配置文件对数据库连接进行管理 2.1 ORM 框架原理 Java 程序常常要连接并操作数据库但两者的数据类型往往并不匹配Java 是面向对象的语言Java 语言中的操作的单元是类与对象而数据库的数据格式是关系类型。为了匹配 Java 面向对象与关系数据库的数据类型人们发明了 ORM 框架Object Relational Mapping对象关系映射用于将 Java 中的对象映射成数据库中的记录对象中的属性映射为数据库表中的字段程序员可使用面向对象的编程方式来操作数据库。例如在程序代码中添加一个对象则数据库中相应添加一行记录在程序代码中删除一个对象则数据库中相应删除了一条记录。比较常见的ORM框架有 Hibernate、MyBatis。 ORM 框架的原理如下图1.1所示。其中CRUD 是在做计算处理时的增加Create、读取查询Retrieve、更新Update和删除Delete4个单词的首字母缩写POJOPlain Ordinary Java Object为简单的 Java 对象实际就是普通 JavaBeans。 2.2 MyBatis 与 Hibernate 的比较 Hibernate 框架是“全自动”的 ORM使用完全的数据库封装机制实现对象和数据库表之间的映射自动生成与执行 SQL 语句数据库无关性比较好方便移植。 MyBatis 框架是“半自动”的 ORM需要程序员自行编写SQL语句MyBatis 再通过映射文件将返回的结果字段映射到指定对象。MyBatis 无法做到数据库无关性每次只能针对一个数据库做开发。 与 Hibernate 相比MyBatis 具有以下几个优点。 SQL语句与代码分离。只需要在XML映射文件中配置 SQL 语句而无须在 Java 代码中编写 SQL 语句给程序的维护带来了很大便利。手写 SQL 语句灵活方便查询效率高能够完成较复杂的查询。采用原生 SQL 语言无须学习面向对象的 HQL 语言相对简单易学容易上手。 2.3 搭建MyBatis 开发环境 在项目中使用 MyBatis 的基本步骤导入相关 JAR 包、编写配置文件和映射文件、创建接口、创建实体类最后是设计 DAO 层的实现类。 本文使用的 MyBatis 版本为 MyBatis 3.4.5可在GitHub 网站下载下载地址是: https://github.com/mybatis/mybatis-3/releases 下载 mybatis-3.4.5.zip 解压后的文件结构如下图所示。 要使用 MyBatis 只需将下载好的 mybatis-3.4.5.zip 解压后的jar文件置于类路径classpath中即可。 如果使用 Maven 来构建项目则需将下面的依赖代码置于 pom.xml 文件中 dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversionx.x.x/version /dependency3. 第一个 MyBatis 项目 实现步骤 1在 MySQL 中创建数据库 java2218创建数据表 user并添加若干测试用的数据记录SQL 语句如下 CREATE DATABASE java2218CREATE TABLE user( uid INT AUTO_INCREMENT PRIMARY KEY NOT NULL, uname VARCHAR(20) NOT NULL, upassword VARCHAR(20) NOT NULL ) INSERT INTO USER (uname,upassword) VALUES(张三,123),(李四,456)2打开 IDEA 创建一个Java项目具体创建的步骤在我本栏目的上一篇博文中已经详细说明创建好之后的完整目录结构如下 3配置pom.xml文件添加项目所需要的 mybatis 依赖mysql 数据库依赖以及实体类简写的 lombok 依赖 ?xml version1.0 encodingUTF-8?project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcn.kgc.mybatis/groupIdartifactIdmybatis01/artifactIdversion1.0-SNAPSHOT/versionnamemybatis01/name!-- FIXME change it to the projects website --urlhttp://www.example.com/urlpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingmaven.compiler.source1.8/maven.compiler.sourcemaven.compiler.target1.8/maven.compiler.target/propertiesdependenciesdependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.11/versionscopetest/scope/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.47/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.24/version/dependencydependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.9/version/dependency/dependencies /project4为了方便查看控制台输出 SQL 语句还要配置 log4j在项目目录src—main—resources下创建 log4j.properties 文件输入内容如下 log4j.rootLoggerDEBUG,Console#Console log4j.appender.Consoleorg.apache.log4j.ConsoleAppender log4j.appender.console.TargetSystem.out log4j.appender.Console.layoutorg.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern%d [%t] %-5p [%c] - %m%nlog4j.logger.org.apacheERROR log4j.logger.org.mybatisERROR log4j.logger.org.springframeworkERROR#这个需要 log4j.logger.log4jdbc.debugERROR log4j.logger.com.gk.mapperERROR log4j.logger.jdbc.auditERROR log4j.logger.jdbc.resultsetERROR#这个打印SQL语句非常重要 log4j.logger.jdbc.sqlonlyDEBUG log4j.logger.jdbc.sqltimingERROR log4j.logger.jdbc.connectionFATAL然后再 pom.xml 文件中的 dependencies 元素中添加依赖如下 !--引入log4j日志依赖--dependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion1.2.17/version/dependency5在项目 src—main—java 目录下新建包cn.kgc.entity创建实体类 User 如下 package com.kgc.entity; import lombok.Data;Data public class User {private Integer uid;private String uname;private String upassword; }Data 注解是添加了 lombok 依赖后所使用的主要作用是提高代码的简洁使用这个注解可以省去实体类中大量的get()、 set()、 toString()等方法。 点击侧边栏Structure可以打开实体类的结构图如下图所示 6在项目目录src—main—resources下创建mybatis-config.xml作为主配置文件完整代码如下 ?xml version1.0 encodingUTF-8 ? !DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//EN http://mybatis.org/dtd/mybatis-3-config.dtd configuration!--数据源环境 default --environments defaultdevelopmentenvironment iddevelopment!--使用原始的jdbc进行事务控制需要手动的完成事务的提交和回滚--transactionManager typeJDBC/!--数据库连接池参数配置 --dataSource typePOOLEDproperty namedriver valuecom.mysql.jdbc.Driver/property nameurl valuejdbc:mysql:///java2218?serverTimezoneUTCamp;useSSLfalseamp;characterEncodingUTF-8/property nameusername valueroot/property namepassword valuehuanghuang//dataSource/environment/environments!--映射文件配置--mappersmapper resourceUserMapper.xml/mapper/mappers /configuration通过配置的方式将数据库的配置信息从应用程序中独立出来由独立的模块管理和配置。Mybatis的数据源配置文件包含数据库驱动、数据库连接地址、用户名密码、事务管理等还可以配置连接池的连接数、空闲时间等。 mybatis mapper文件映射 !-- 使用相对于类路径的资源引用 -- mappersmapper resourceorg/mybatis/builder/AuthorMapper.xml/ /mappers!-- 使用映射器接口实现类的完全限定类名mybais去加载class对应的接口然后还会去加载该接口同目录下的同名xml文件 -- mappersmapper classorg.mybatis.builder.AuthorMapper/ /mappers!-- 将包内的映射器接口实现全部注册为映射器 使用package元素批量注册Mapper接口1.包名和接口所在的包名字一致2.mapper文件的名字和接口的名字一致3.创建包是使用/分割 -- mapperspackage nameorg.mybatis.builder/ /mappers设置资源文件路径 Maven中默认是只会打包resource下的资源文件。如果我们的文件不放在resource 则需要通过配置告知Maven resourcesresourcedirectorysrc/main/java/directoryincludesinclude**/*.properties/includeinclude**/*.xml/include/includesfilteringfalse/filtering/resourceresourcedirectorysrc/main/resources/directoryincludesinclude**/*.properties/includeinclude**/*.xml/includeinclude**/*.tld/include/includesfilteringfalse/filtering/resource /resourcesSql映射文件 Mybatis中所有数据库的操作都会基于该映射文件和配置的sql语句在这个配置文件中可以配置任何类型的sql语句。框架会根据配置文件中的参数配置完成对sql语句以及输入输出参数的映射配置。 mapper-config.xml配置文件大致如下 ?xml version1.0 encodingutf-8 ? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespace命名空间select id方法名 resultMap返回值类型 parameterType参数类型-- sql语句/select/mapperUserMapper.xml 实例 ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttps://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.kgcselect idselectOne resultTypecom.kgc.entity.Userselect * from user where uid #{uid}/selectselect idselectAll resultTypecom.kgc.entity.Userselect * from user/select /mapper7创建测试类 TestMyBatis新建包 com.kgc.mybatis包下新建类 TestMyBatis代码如下 package com.kgc.mybatis; import com.kgc.entity.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException; import java.io.InputStream; import java.util.List;/*** author: mosin* version: v1.0 2023/2/3*/ public class TestMyBatis {public static void main(String[] args) {try {InputStream resourceAsStream Resources.getResourceAsStream(mybatis-config.xml);SqlSessionFactory factory new SqlSessionFactoryBuilder().build(resourceAsStream);System.out.println(factory factory);SqlSession sqlSession factory.openSession();// 参数1 sql语句的定位标识符System.out.println(----------根据id查询用户信息----------);User user sqlSession.selectOne(com.kgc.selectOne, 1);System.out.println(user user);System.out.println(----------查询用户列表----------);ListObject objects sqlSession.selectList(com.kgc.selectAll);System.out.println(objects objects);sqlSession.close();} catch (IOException e) {e.printStackTrace();}} }测试结果 4. MyBatis 的工作流程 会话工厂SqlSessionFactory通过加载资源文件获取MapConfig.xml配置文件信息然后生成可以与数据库交互的会话实例SqlSession。会话实例可以根据Mapper配置文件中的Sql配置去执行相应的增删改查操作 执行流程图 5. 利用属性文件读取数据库连接信息 上面案例中的 mybatis-config.xml 主配置文件中关于数据库的连接信息分别指定了 Java 连接数据库的4大要素驱动、URL、数据库用户名、密码。 为了方便对数据库连接的管理可以快速替换到不同的数据库连接数据库的4大要素数据一般都是单独存放在一个专门的属性文件中MyBatis 主配置文件再从这个属性文件中读取这些数据。利用属性文件读取数据库连接信息可以方便更换不同的数据库只需要修改属性文件或者替换为另外一个属性文件即可可移植性较好。 实现步骤 【1】在项目目录 src—main—resources 下创建 jdbc.properties代码如下 jdbc.drivercom.mysql.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/java2218 jdbc.usernameroot jdbc.passwordroot上述内容包括了数据库连接的四大属性的具体值。 【2】修改主配置文件 mybatis-config.xml。 ?xml version1.0 encodingUTF-8 ? !DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//EN http://mybatis.org/dtd/mybatis-3-config.dtd configuration!--引入外部的数据源参数--properties resourcejdbc.properties/propertiessettingssetting namelogImpl valueLOG4J/setting namemapUnderscoreToCamelCase valuetrue//settingstypeAliasespackage namecn.kgc.mybatis.entity//typeAliasesenvironments defaultdevelopmentenvironment iddevelopment!--使用原始的jdbc进行事务控制需要手动的完成事务的提交和回滚--transactionManager typeJDBC/!--数据库连接池参数配置--dataSource typePOOLEDproperty namedriver value${jdbc.driver}/property nameurl value${jdbc.url}/property nameusername value${jdbc.username}/property namepassword value${jdbc.password}//dataSource/environment/environments!--映射文件配置package: 通过包指定mapper文件的位置1.xml 文件的名字和接口名字保持一致2.xml文件的位置要和接口保持一致--mapperspackage namecn.kgc.mybatis.mapper//mappers /configuration【3】运行测试结果不变。将来数据库要更换只需要更改属性文件 jdbc.properries 的有关信息即可无需改动配置文件非常实用。 6. 主配置文件简介 主配置文件 mybatis-config.xml 用来配置系统运行环境包含事务管理方式、数据库连接类型与信息、指定映射文件等。除了上面第一个项目用到的一些标签之外还有其它一些标签标签也可称为节点或元素MyBatis 主配置文件的所有主要标签如下所示 configuration下所有子标签并不是都必须配置但若需要配置时必选掌上图所示的 先后顺序 来配置否则 MyBatis 会报错。 properties标签的作用是将内部的配置转化为外部的配置从而能够动态地替换内部定义的属性。例如数据库的连接信息原来是在内部配置通过properties属性让系统读取外部的属性文件。 6.1 setting标签 setting 标签用来改变 Mybatis 运行时的行为例如开启延迟加载以及二级缓存。启用延迟加载以及二级缓存有利于提高系统的性能但在小型系统及硬件性能较强的环境下效果并不明显一般不配置也可以。 下面代码演示可能用到的一些配置每一项的作用参见代码注释 settings!-- 是否开启缓存 --setting namecacheEnabled valuetrue/!-- 是否开启延迟加载,如果开启的话所有关联对象都会延迟加载 --setting namelazyLoadingEnabled valuetrue/!-- 是否启用关联对象属性的延迟加载,如果启用,对任意延迟属性的调用都会使用带有延迟加载属性的对象完整加载,否则每种属性都按需加载 --setting nameaggressiveLazyLoading valuetrue/ /settings6.2 typeAliases标签 typeAliases 标签的作用是为 Java 的 POJO 类起别名如果不取别名映射文件若要引用一个 POJO 实体类必须要输入全限定性类名含有包名显得比较长用了别名之后引用起来就简单很多。 例如实体类 User 的全限定类名是 com.kgc.entity.User未起别名之前映射文件的 select 语句块要引用 POJO 类 User 必须使用全限定类名示例如下 select idselectOne resultTypecom.kgc.entity.Userselect * from user where uid #{uid}/select在主配置文件 mybatis-config.xml 中定义别名如下 !--设置实体类的别名--typeAliasestypeAlias typecom.kgc.entity.User aliasuser/typeAlias/typeAliases上面代码的意思是为全限定类名 com.kgc.entity.User 创建别名 user定义了别名之后映射文件中只需使用别名 user 就能引用全限定类 com.kgc.entity.User。这样上例代码可简化如下 select idselectOne resultTypeuserselect * from user where uid #{uid}/select如果有多个类要使用别名一种方法是逐个配置别名多个typeAlias示例如下 !--设置实体类的别名--typeAliasestypeAlias typecom.kgc.entity.User aliasuser/typeAliastypeAlias typecom.kgc.entity.Emp aliasemp/typeAliastypeAlias typecom.kgc.entity.Dept aliasdept/typeAlias/typeAliases这样固然可以实现目的但是代码冗余过多还有个一个办法是通过自动扫描包的形式自定义别名代码示例如下 !--设置实体类的别名--typeAliases!--通过包名设置实体类的别名 默认设置的别名是类名首字母小写的名字 User user--package namecom.kgc.entity//typeAliases这样配置后MyBatis 会自动扫描 package 节点的 name 属性指定的包 com.kgc.entity并自动将该包下所有实体类以首字母为小写的类名作为别名例如它会自动给 com.kgc.entity.User 分配一个别名 user其它类推。 6.3 typeHandlers标签 typeHandlers 标签的作用是将传入的参数的 javaType ( Java 类型)转换为 jdbcType ( JDBC 类型对应数据库的数据类型)反之从数据库读出结果集时将 jdbcType 转换为 javaType。 MyBatis 提供了大量的默认的内置转换器可以完成大部分常见的类型转换但若默认的转换器无法满足要求时可以自定义转换器。自定义转换器类需实现 TypeHandler 接口或者继承 BaseTypeHandler 类。创建好后需要这样注册 typeHandlerstypeHandler handlercom.kgc.utils.MyTypeHandler/ /typeHandlers其中 handler 属性指定的类 com.kgc.utils.MyTypeHandler 为自定义的转换器类然后ResultMap 标签中就可以引用这个转换器了。 6.4 environments标签 environments 标签是环境配置主要用于数据源的配置。 1transactionManager子标签 配置事务管理器,可以配置 JDBC 和 MANAGED 两种类型。 JDBC使用JDBC的事务管理,通过数据源得到的连接来提交或回滚事务。MANAGED使用容器来管理事务。 通常使用 JDBC 事务管理类型配置方法如下 environments defaultdevelopmentenvironment iddevelopment!--使用原始的jdbc进行事务控制需要手动的完成事务的提交和回滚--transactionManager typeJDBC/dataSource typePOOLEDproperty namedriver value${jdbc.driver}/property nameurl value${jdbc.url}/property nameusername value${jdbc.username}/property namepassword value${jdbc.password}//dataSource/environment/environments【注意】将来使用 Spring 整合 MyBatis 后事务交给 Spring 管理这部分也不用配置。 2dataSource子标签的类型 dataSource 标签用来配置数据源即数据库的连接它有三种类型UNPOOLED、POOLED、JNDI。 UNPOOLED  无连接池每次请求都重新打开和关闭连接即每一次都是新的连接对于大型应用连接会很频繁浪费资源降低效率一般只用于小型应用。POOLED  连接池效率较高响应速度快通常就使用这种方式。JND  JNDI数据源通常用于EJB等容器。   通常配置数据源类型为连接池代码如下所示 environments defaultdevelopmentenvironment iddevelopmenttransactionManager typeJDBC/!--数据库连接池参数配置--dataSource typePOOLEDproperty namedriver value${jdbc.driver}/property nameurl value${jdbc.url}/property nameusername value${jdbc.username}/property namepassword value${jdbc.password}//dataSource/environment/environments6.5 mappers标签 mappers标签用于配置映射文件指定映射文件的位置有4种方法。 1使用resource属性引入类路径。示例 mappersmapper resourcecn.kgc.mybatis.mapper/UserMapper.xml/ /mappers若配置文件有多个可以类似如下配置 mappersmapper resourcecn.kgc.mybatis.mapper/UserMapper.xml/mapper resourcecn.kgc.mybatis.mapper/EmpMapper.xml/mapper resourcecn.kgc.mybatis.mapper/DeptMapper.xml/ /mappers2使用 url 属性引入本地文件。示例如下 mappersmapper urlfile:///E:/cn/kgc/mybatis/mapper/UserMapper.xml/ /mappers3使用 class 属性引入接口类。示例如下 mappersmapper classcn.kgc.mybatis.mapper.UserMapper/ /mappers这样配置比较简单但要满足以下3个条件 。 接口名称与映射文件名称一致。接口与映射文件必须在同一个包中。映射文件中mapper标签的 namespace 命名空间的值为接口的全限定类名。 mapper namespacecn.kgc.mybatis.mapper.UserMapper/4使用包名引入 当映射文件较多时可以不用一个个配置而是使用如下形式其中 package 的 name 属性指定映射文件所在的包该包下的所有映射文件都会被扫描到具体如下 mapperspackage namecn.kgc.mybatis.mapper//mappers要使用这种配置需满足以下4个条件。 DAO 的实现类采用 mapper 动态代理实现 。映射文件与接口的名称相同。映射文件与接口在同一个包中。映射文件中mapper标签的 namespace 命名空间的值为接口的全限定类名。 7. 连接其它数据库 【1】MyBatis连接Oracle数据库 MyBatis连接Oracle与MySQL差别并不大只是驱动不同连接字符串url稍有不同。关键步骤如下 (1)下载连接Java与Oracle专用jar包并导入到项目。(2)把jdbc.properties文件改为下面格式简单修改一下即可。 jdbc.driver oracle.jdbc.driver.OracleDriver jdbc.urljdbc:oracle:thin:localhost:1521:orcl jdbc.usernamescott jdbc.passwordorcl 【2】链接 SQL Server 数据库 (1)下载连接Java与SQL Server专用jar包并导入到项目。(2)把jdbc.properties文件改为下面格式简单修改一下即可。 jdbc.driver com.microsoft.sqlserver.jdbc.SQLServerDrvier jdbc.url jdbc:sqlserver://127.0.0.1:1434;DatabaseUsers jdbc.usernameadmin jdbc.password123码文不易本篇文章就介绍到这里如果想要学习更多Java系列知识点击关注博主博主带你零基础学习Java知识。与此同时对于日常生活有困扰的朋友欢迎阅读我的第四栏目《国学周更—心性养成之路》学习技术的同时我们也注重了心性的养成。
文章转载自:
http://www.morning.tsflw.cn.gov.cn.tsflw.cn
http://www.morning.pgmyn.cn.gov.cn.pgmyn.cn
http://www.morning.bpmns.cn.gov.cn.bpmns.cn
http://www.morning.dkzrs.cn.gov.cn.dkzrs.cn
http://www.morning.kflzy.cn.gov.cn.kflzy.cn
http://www.morning.hlwzd.cn.gov.cn.hlwzd.cn
http://www.morning.xhklb.cn.gov.cn.xhklb.cn
http://www.morning.crqpl.cn.gov.cn.crqpl.cn
http://www.morning.gyfwy.cn.gov.cn.gyfwy.cn
http://www.morning.zlxkp.cn.gov.cn.zlxkp.cn
http://www.morning.pnljy.cn.gov.cn.pnljy.cn
http://www.morning.rpsjh.cn.gov.cn.rpsjh.cn
http://www.morning.ltpmy.cn.gov.cn.ltpmy.cn
http://www.morning.wlqll.cn.gov.cn.wlqll.cn
http://www.morning.rtsx.cn.gov.cn.rtsx.cn
http://www.morning.lnnc.cn.gov.cn.lnnc.cn
http://www.morning.ybhrb.cn.gov.cn.ybhrb.cn
http://www.morning.tfpqd.cn.gov.cn.tfpqd.cn
http://www.morning.fykqh.cn.gov.cn.fykqh.cn
http://www.morning.hhmfp.cn.gov.cn.hhmfp.cn
http://www.morning.rdng.cn.gov.cn.rdng.cn
http://www.morning.guanszz.com.gov.cn.guanszz.com
http://www.morning.rkkpr.cn.gov.cn.rkkpr.cn
http://www.morning.cqyhdy.cn.gov.cn.cqyhdy.cn
http://www.morning.wrfk.cn.gov.cn.wrfk.cn
http://www.morning.rpzth.cn.gov.cn.rpzth.cn
http://www.morning.cbndj.cn.gov.cn.cbndj.cn
http://www.morning.pwdrc.cn.gov.cn.pwdrc.cn
http://www.morning.tfgkq.cn.gov.cn.tfgkq.cn
http://www.morning.qwrb.cn.gov.cn.qwrb.cn
http://www.morning.xzjsb.cn.gov.cn.xzjsb.cn
http://www.morning.qtsks.cn.gov.cn.qtsks.cn
http://www.morning.ldcsw.cn.gov.cn.ldcsw.cn
http://www.morning.rlrxh.cn.gov.cn.rlrxh.cn
http://www.morning.sgfgz.cn.gov.cn.sgfgz.cn
http://www.morning.lmmyl.cn.gov.cn.lmmyl.cn
http://www.morning.tygn.cn.gov.cn.tygn.cn
http://www.morning.jwrcz.cn.gov.cn.jwrcz.cn
http://www.morning.bdkhl.cn.gov.cn.bdkhl.cn
http://www.morning.nnhrp.cn.gov.cn.nnhrp.cn
http://www.morning.jfbgn.cn.gov.cn.jfbgn.cn
http://www.morning.tpnch.cn.gov.cn.tpnch.cn
http://www.morning.jzsgn.cn.gov.cn.jzsgn.cn
http://www.morning.mlffg.cn.gov.cn.mlffg.cn
http://www.morning.dcpbk.cn.gov.cn.dcpbk.cn
http://www.morning.nrxsl.cn.gov.cn.nrxsl.cn
http://www.morning.qwbht.cn.gov.cn.qwbht.cn
http://www.morning.wbns.cn.gov.cn.wbns.cn
http://www.morning.kmbgl.cn.gov.cn.kmbgl.cn
http://www.morning.qzzmc.cn.gov.cn.qzzmc.cn
http://www.morning.xflzm.cn.gov.cn.xflzm.cn
http://www.morning.cwwbm.cn.gov.cn.cwwbm.cn
http://www.morning.gqksd.cn.gov.cn.gqksd.cn
http://www.morning.wjlbb.cn.gov.cn.wjlbb.cn
http://www.morning.ysjjr.cn.gov.cn.ysjjr.cn
http://www.morning.snzgg.cn.gov.cn.snzgg.cn
http://www.morning.jrsgs.cn.gov.cn.jrsgs.cn
http://www.morning.tbnpn.cn.gov.cn.tbnpn.cn
http://www.morning.btqqh.cn.gov.cn.btqqh.cn
http://www.morning.gkjnz.cn.gov.cn.gkjnz.cn
http://www.morning.kskpx.cn.gov.cn.kskpx.cn
http://www.morning.sfgzx.cn.gov.cn.sfgzx.cn
http://www.morning.ncqzb.cn.gov.cn.ncqzb.cn
http://www.morning.lnfkd.cn.gov.cn.lnfkd.cn
http://www.morning.chkfp.cn.gov.cn.chkfp.cn
http://www.morning.bbgn.cn.gov.cn.bbgn.cn
http://www.morning.xrftt.cn.gov.cn.xrftt.cn
http://www.morning.tbstj.cn.gov.cn.tbstj.cn
http://www.morning.dlhxj.cn.gov.cn.dlhxj.cn
http://www.morning.gqflj.cn.gov.cn.gqflj.cn
http://www.morning.rbgqn.cn.gov.cn.rbgqn.cn
http://www.morning.gjlml.cn.gov.cn.gjlml.cn
http://www.morning.rcdmp.cn.gov.cn.rcdmp.cn
http://www.morning.zbqry.cn.gov.cn.zbqry.cn
http://www.morning.thwcg.cn.gov.cn.thwcg.cn
http://www.morning.xqgh.cn.gov.cn.xqgh.cn
http://www.morning.tbqxh.cn.gov.cn.tbqxh.cn
http://www.morning.sbncr.cn.gov.cn.sbncr.cn
http://www.morning.jzykw.cn.gov.cn.jzykw.cn
http://www.morning.yixingshengya.com.gov.cn.yixingshengya.com
http://www.tj-hxxt.cn/news/256999.html

相关文章:

  • 一级域名和二级域名做两个网站庞各庄网站建设公司
  • 湛江网站建设费用我想找电商合作
  • 厦门网站建设2wordpress 主题 引入js
  • 花桥网站建设公司云服务器便宜
  • 网站建设人员职责网站建设 技术要求
  • 医疗网站建设精英郴州市旅游景点排行榜
  • 许昌市城市建设局网站黄石网站建设黄石
  • 南宁营销型网站设计求网站建设
  • 优秀定制网站建设方案深圳市做网站的公司
  • 如何做网站挣钱各大企业邮箱
  • 网站怎么上传网站开发技术招聘
  • 工信部网站备案查询步骤具有价值的建网站
  • 做食品网站需要什么资质做网站要用写接口
  • 网站建设需要注意什么金螳螂装饰公司国内排名
  • 中国上海网站首页网站建设英文参考文献
  • 个人做收费网站邹城网站定制
  • 深圳市做网站的有那些公司网络营销课程免费
  • 泰州网站建设工作购物网站推广方案
  • 无锡网站建设818gxwordpress收费版验证方式
  • 校园文化建设网站凡科网收费标准
  • 专业做网站的公司邢台专业做网站小程序开发方案
  • 怎么浏览国外的设计网站精品网站建设需要多少钱
  • 现在有人还做网站吗青岛东橙网站建设
  • 上海建设银行网站北京 企业建网站
  • icp备案添加网站浙江建设网站是多少
  • 做租号玩网站赚钱吗网站建设的好处论文
  • 商城网站建设实例需求网站模版亮点
  • 怎么联系网站管理员深圳做物流网站
  • 网站维护中页面代码wordpress读取速度慢
  • 凡科建站代理深圳最乱最穷的地方