最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot集成Mybatis的實(shí)現(xiàn)步驟

 更新時(shí)間:2020年12月23日 08:41:08   作者:山丘i  
這篇文章主要介紹了SpringBoot集成Mybatis的實(shí)現(xiàn)步驟,本文通過SpringBoot +MyBatis 實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)學(xué)生表的查詢操作,需要的朋友可以參考下

通過 SpringBoot +MyBatis 實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)學(xué)生表的查詢操作

一、實(shí)現(xiàn)步驟

新建一個(gè)09-springboot-web-mybatis項(xiàng)目,方式和之前一樣,基于springboot的

1. 準(zhǔn)備數(shù)據(jù)庫(kù)

新建一個(gè)數(shù)據(jù)庫(kù)springboot,指定字符編碼集utf-8,并創(chuàng)建數(shù)據(jù)表

表名為:t_student,并插入幾條數(shù)據(jù)

2. 在pom.xml 中添加相關(guān) jar 依賴

<!--Mybatis整合springboot的起步依賴-->
  <dependency>
   <groupId>org.mybatis.spring.boot</groupId>
   <artifactId>mybatis-spring-boot-starter</artifactId>
   <version>2.0.0</version>
  </dependency>

  <!--MySQL 的驅(qū)動(dòng)依賴,點(diǎn)擊就可以查看,此時(shí)默認(rèn)的是8.0的,
   也可以根據(jù)自己使用的mysql版本號(hào),來指定版本號(hào)
   我使用的5.7
  -->
  <dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.9</version>
  </dependency>

3. 在Springboot的核心配置文件 application.properties 中配置數(shù)據(jù)源

注意mysql的版本差別

#配置內(nèi)嵌 Tomcat 端口號(hào)
server.port=9090
#配置項(xiàng)目上下文根
server.servlet.context-path=/09-springboot-web-mybatis


#配置數(shù)據(jù)庫(kù)的連接信息
#注意這里的驅(qū)動(dòng)類有變化,這是mysql8.0
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8

#我用的mysql5.7
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springboot

spring.datasource.username=root
spring.datasource.password=123456

4. 開發(fā)代碼

1. 使用 Mybatis 反向工程生成接口、映射文件以及實(shí)體 bean,具體看下面的介紹

2. 在 service 包下創(chuàng)建 service 接口并編寫代碼

package com.md.springboot.service;

import com.md.springboot.model.Student;

/**
 * @author MD
 * @create 2020-08-21 9:42
 */
public interface StudentService {

 /**
  * 根據(jù)學(xué)生id查詢學(xué)生信息
  * @param id
  * @return
  */
 Student queryStudentById(Integer id);
}

3. 在 service.impl 包下創(chuàng)建 service 接口并編寫代碼

package com.md.springboot.service.impl;

import com.md.springboot.mapper.StudentMapper;
import com.md.springboot.model.Student;
import com.md.springboot.service.StudentService;


/**
 * @author MD
 * @create 2020-08-21 9:43
 */
@Service
public class StudentServiceImpl implements StudentService {

 @Autowired
 private StudentMapper studentMapper;

 @Override
 public Student queryStudentById(Integer id) {
  return studentMapper.selectByPrimaryKey(id);
 }

}

4. 在 web 包下創(chuàng)建 StudentController 并編寫代碼

package com.md.springboot.web;
import com.md.springboot.model.Student;
import com.md.springboot.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author MD
 * @create 2020-08-21 9:40
 */
@Controller
public class StudentController {
 @Autowired
 private StudentService studentService;
 @RequestMapping(value = "/student")
 @ResponseBody
 public Object student(){
  Student student = studentService.queryStudentById(3);

  return student;
 }

}

5. 在 Mybatis 反向工程生成的 StudentMapper 接口上加一個(gè) Mapper 注解
@Mapper 作用:mybatis 自動(dòng)掃描數(shù)據(jù)持久層的映射文件及 DAO 接口的關(guān)系

// 掃描dao接口到spring容器
@Mapper
public interface StudentMapper {
 int deleteByPrimaryKey(Integer id);

 int insert(Student record);

 int insertSelective(Student record);

 Student selectByPrimaryKey(Integer id);

 int updateByPrimaryKeySelective(Student record);

 int updateByPrimaryKey(Student record);
}

6. 注意:默認(rèn)情況下,Mybatis 的 xml 映射文件不會(huì)編譯到 target 的 class 目錄下,所
以我們需要在 pom.xml 文件中配置 resource

<!--Mybatis 的 xml 映射文件編譯到 target 的 class 目錄下-->
  <resources>
   <resource>
    <directory>src/main/java</directory>
    <includes>
     <include>**/*.xml</include>
    </includes>
   </resource>
  </resources>

5. 啟動(dòng)

二、DAO 其它開發(fā)方式

1. 在運(yùn)行的主類上添加注解包掃描

@MapperScan("com.md.springboot.mapper")

此時(shí)就可以注釋掉 StudentMapper 接口上的@Mapper 注解

//@Mapper
public interface StudentMapper {

在運(yùn)行主類 Application 上加@MapperScan("com.md.springboot.mapper")

@SpringBootApplication
//Mybatis 提供的注解:掃描數(shù)據(jù)持久層的 mapper 映謝配置文件,DAO 接口上就不用加@Mapper
@MapperScan("com.md.springboot.mapper")
public class Application {

2. 將接口和映射文件分開

因?yàn)?SpringBoot 不能自動(dòng)編譯接口映射的 xml 文件,還需要手動(dòng)在 pom 文件中指定,

還可以直接將映射文件直接放到 resources 目錄下,這樣就不用手動(dòng)在pom文件中指定了

在 resources 目錄下新建目錄 mapper 存放映射文件,將 StudentMapper.xml 文件移到 resources/mapper 目錄下

在 application.properties 配置文件中指定映射文件的位置,這個(gè)配置只有接口和映射文件不在同一個(gè)包的情況下,才需要指定

# 指定 Mybatis 映射文件的路徑
mybatis.mapper-locations=classpath:mapper/*.xml

三、Spring Boot 事務(wù)支持

Spring Boot 使用事務(wù)非常簡(jiǎn)單,底層依然采用的是 Spring 本身提供的事務(wù)管理

  • 在入口類中使用注解 @EnableTransactionManagement 開啟事務(wù)支持
  • 在訪問數(shù)據(jù)庫(kù)的 Service 方法上添加注解 @Transactional 即可

1. 在 StudentService 接口中添加更新學(xué)生方法

 /**
  * 根據(jù)學(xué)生的id更新學(xué)生信息
  * @param student
  * @return
  */
 int modifyStudentById(Student student);

2. 在 StudentServiceImpl 接口實(shí)現(xiàn)類

對(duì)更新學(xué)生方法進(jìn)行實(shí)現(xiàn),并構(gòu)建一個(gè)異常,同時(shí)在該方法上加@Transactional 注解

 @Override
 @Transactional // 添加這個(gè)注解說明該方法添加了事務(wù)管理
 public int modifyStudentById(Student student) {
  int updateCount = studentMapper.updateByPrimaryKeySelective(student);

  System.out.println("更新結(jié)果:"+updateCount);

//  用于測(cè)試事務(wù)是否有效
  int a = 10 / 0;

  return updateCount;
 }

3. 在StudentController 中添加更新學(xué)生的方法

@RequestMapping(value = "/modify")
 @ResponseBody
 public Object modifyStudent(){
  int count = 0;

  try {
   Student student = new Student();
   student.setId(1);
   student.setName("tim");
   student.setAge(30);

   count = studentService.modifyStudentById(student);
  } catch (Exception e) {
   e.printStackTrace();
   return "fail";
  }

  return count;
 }

4. 在Application 類

@EnableTransactionManagement 可選,但是 業(yè)務(wù)方法上 必須添加@Transactional 事務(wù)才生效

@SpringBootApplication
@MapperScan("com.md.springboot.mapper")
@EnableTransactionManagement //開啟事務(wù)支持(可選項(xiàng),但@Transactional 必須添加)
public class Application {

5. 啟動(dòng)

此時(shí)就生效了,數(shù)據(jù)庫(kù)沒有任何改變

6. 去掉注解

注釋掉 StudentServiceImpl 上的@Transactional 測(cè)試

數(shù)據(jù)庫(kù)的數(shù)據(jù)被更新

四、SpringBoot 工程下使用 Mybatis 反向工程

1. 拷貝 Mybatis 反向工程配置文件到項(xiàng)目的根目錄下

2. 根據(jù)項(xiàng)目及表的情況,修改 GeneratorMapper.xml 配置如果使用 高版本 , 驅(qū)動(dòng)類變?yōu)椋篶om.mysql.cj.jdbc.Driverurl 后面應(yīng)該加屬性 nullCatalogMeansCurrent=true ,否則生成有問題

當(dāng)前版本 MySQL 數(shù)據(jù)庫(kù)為 5.7

主要根據(jù)注釋來修改自己的內(nèi)容

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration

  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
 <!-- 指定連接數(shù)據(jù)庫(kù)的 JDBC 驅(qū)動(dòng)包所在位置,指定到你本機(jī)的完整路徑 -->
 <classPathEntry location="E:\Java\tool\maven_repository\mysql\mysql-connector-java\5.1.9\mysql-connector-java-5.1.9.jar"/>

 <!-- 配置 table 表信息內(nèi)容體,targetRuntime 指定采用 MyBatis3 的版本 -->
 <context id="tables" targetRuntime="MyBatis3">
  <!-- 抑制生成注釋,由于生成的注釋都是英文的,可以不讓它生成 -->
  <commentGenerator>
   <property name="suppressAllComments" value="true"/>
  </commentGenerator>
  <!-- 配置數(shù)據(jù)庫(kù)連接信息 -->
  <jdbcConnection driverClass="com.mysql.jdbc.Driver"
      connectionURL="jdbc:mysql://localhost:3306/springboot"
      userId="root"
      password="123456">
  </jdbcConnection>
  <!-- 生成 model 類,targetPackage 指定 model 類的包名, targetProject 指定
  生成的 model 放在 IDEA 的哪個(gè)工程下面-->
  <javaModelGenerator targetPackage="com.md.springboot.model"
       targetProject="src/main/java">
   <property name="enableSubPackages" value="false"/>
   <property name="trimStrings" value="false"/>
  </javaModelGenerator>
  <!-- 生成 MyBatis 的 Mapper.xml 文件,targetPackage 指定 mapper.xml 文件的
  包名, targetProject 指定生成的 mapper.xml 放在 IDEA 的哪個(gè)工程下面 -->
  <sqlMapGenerator targetPackage="com.md.springboot.mapper"
       targetProject="src/main/java">
   <property name="enableSubPackages" value="false"/>
  </sqlMapGenerator>
  <!-- 生成 MyBatis 的 Mapper 接口類文件,targetPackage 指定 Mapper 接口類的包
  名, targetProject 指定生成的 Mapper 接口放在 IDEA 的哪個(gè)工程下面 -->
  <javaClientGenerator type="XMLMAPPER"
        targetPackage="com.md.springboot.mapper" targetProject="src/main/java">
   <property name="enableSubPackages" value="false"/>
  </javaClientGenerator>

  <!-- 數(shù)據(jù)庫(kù)表名及對(duì)應(yīng)的 Java 模型類名,有幾個(gè)表寫幾個(gè)table -->
  <table tableName="t_student" domainObjectName="Student"
    enableCountByExample="false"
    enableUpdateByExample="false"
    enableDeleteByExample="false"
    enableSelectByExample="false"
    selectByExampleQueryId="false"/>
 </context>
</generatorConfiguration>

此時(shí)會(huì)報(bào)錯(cuò),如下

這個(gè)時(shí)候可以不用理會(huì),項(xiàng)目也是會(huì)正常運(yùn)行的,當(dāng)然也可以這樣

添加之后就不會(huì)報(bào)紅了

3. 在pom.xml 文件中添加 mysql 反向工程依賴

<build>
  <plugins>
   <!--mybatis 代碼自動(dòng)生成插件-->
   <plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.6</version>
    <configuration>
     <!--配置文件的位置-->
     <configurationFile>GeneratorMapper.xml</configurationFile>
     <verbose>true</verbose>
     <overwrite>true</overwrite>
    </configuration>
   </plugin>
  </plugins>

 </build>

4. 雙擊生成相關(guān)文件

5. 生成的文件

自動(dòng)生成model/Student、實(shí)體類

以及StudentMapper,接口

StudentMapper.xml 具體對(duì)數(shù)據(jù)庫(kù)的操作

這樣方便我們使用,具體的下面詳細(xì)介紹,注意看注釋

Student

package com.md.springboot.model;

public class Student {
 private Integer id;

 private String name;

 private Integer age;

 public Integer getId() {
  return id;
 }

 public void setId(Integer id) {
  this.id = id;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public Integer getAge() {
  return age;
 }

 public void setAge(Integer age) {
  this.age = age;
 }
}

StudentMapper

package com.md.springboot.mapper;

import com.md.springboot.model.Student;

public interface StudentMapper {
 int deleteByPrimaryKey(Integer id);

 int insert(Student record);

 int insertSelective(Student record);

 Student selectByPrimaryKey(Integer id);

 int updateByPrimaryKeySelective(Student record);

 int updateByPrimaryKey(Student record);
}

StudentMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.md.springboot.mapper.StudentMapper">
 <!--
 數(shù)據(jù)庫(kù)字段名稱  實(shí)體對(duì)象屬性名稱
 user_name   userName
 user_age   userAge

 -->
 <!--
 如果數(shù)據(jù)表中的字段是多個(gè)單詞構(gòu)成的,通過Mybatis逆向工程生成的對(duì)象屬性名稱
 會(huì)按照駝峰命名法的規(guī)則生成屬性名稱
 自己設(shè)計(jì)數(shù)據(jù)表的時(shí)候,多個(gè)單詞之前使用下劃線分隔

 -->

 <!--
 resultMap的作用
 1. 當(dāng)數(shù)據(jù)庫(kù)中的字段名稱和實(shí)體類對(duì)象的屬性名不一致,可以進(jìn)行轉(zhuǎn)換
 2. 當(dāng)前查詢的結(jié)果對(duì)象沒有對(duì)應(yīng)一個(gè)表時(shí),可以自定義一個(gè)結(jié)果集
 -->
 <resultMap id="BaseResultMap" type="com.md.springboot.model.Student">
 <!--
  id標(biāo)簽只能修飾主鍵字段,result標(biāo)簽修飾其他字段
  column 數(shù)據(jù)庫(kù)中的字段名稱
  property 映射對(duì)象的屬性名稱
  jdbcType 對(duì)應(yīng)的類型
 -->
 <id column="id" jdbcType="INTEGER" property="id" />
 <result column="name" jdbcType="VARCHAR" property="name" />
 <result column="age" jdbcType="INTEGER" property="age" />
 </resultMap>

 <!--sql語句片段,將公共部分抽出-->
 <sql id="Base_Column_List">
 id, name, age
 </sql>
 <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
 select 
 <include refid="Base_Column_List" />
 from t_student
 where id = #{id,jdbcType=INTEGER}
 </select>

 <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
 delete from t_student
 where id = #{id,jdbcType=INTEGER}
 </delete>

 <insert id="insert" parameterType="com.md.springboot.model.Student">
 insert into t_student (id, name, age
  )
 values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}
  )
 </insert>
 <!--動(dòng)態(tài)sql-->
 <insert id="insertSelective" parameterType="com.md.springboot.model.Student">
 insert into t_student
 <trim prefix="(" suffix=")" suffixOverrides=",">
  <if test="id != null">
  id,
  </if>
  <if test="name != null">
  name,
  </if>
  <if test="age != null">
  age,
  </if>
 </trim>
 <trim prefix="values (" suffix=")" suffixOverrides=",">
  <if test="id != null">
  #{id,jdbcType=INTEGER},
  </if>
  <if test="name != null">
  #{name,jdbcType=VARCHAR},
  </if>
  <if test="age != null">
  #{age,jdbcType=INTEGER},
  </if>
 </trim>
 </insert>
 <update id="updateByPrimaryKeySelective" parameterType="com.md.springboot.model.Student">
 update t_student
 <set>
  <if test="name != null">
  name = #{name,jdbcType=VARCHAR},
  </if>
  <if test="age != null">
  age = #{age,jdbcType=INTEGER},
  </if>
 </set>
 where id = #{id,jdbcType=INTEGER}
 </update>

 <update id="updateByPrimaryKey" parameterType="com.md.springboot.model.Student">
 update t_student
 set name = #{name,jdbcType=VARCHAR},
  age = #{age,jdbcType=INTEGER}
 where id = #{id,jdbcType=INTEGER}
 </update>
</mapper>

到此這篇關(guān)于SpringBoot集成Mybatis的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)SpringBoot集成Mybatis內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot后端數(shù)據(jù)校驗(yàn)實(shí)戰(zhàn)操作指南

    SpringBoot后端數(shù)據(jù)校驗(yàn)實(shí)戰(zhàn)操作指南

    在項(xiàng)?開發(fā)中,對(duì)于前端提交的表單,后臺(tái)接?接收到表單數(shù)據(jù)后,為了保證程序的嚴(yán)謹(jǐn)性,通常后端會(huì)加?業(yè)務(wù)參數(shù)的合法校驗(yàn)操作來避免程序的?技術(shù)性?bug,這篇文章主要給大家介紹了關(guān)于SpringBoot后端數(shù)據(jù)校驗(yàn)的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Java中的權(quán)重算法(如Dubbo的負(fù)載均衡權(quán)重)詳解

    Java中的權(quán)重算法(如Dubbo的負(fù)載均衡權(quán)重)詳解

    這篇文章主要介紹了Java中的權(quán)重算法(如Dubbo的負(fù)載均衡權(quán)重)詳解,負(fù)載均衡,其含義就是指將負(fù)載進(jìn)行平衡、分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行運(yùn)行,例如FTP服務(wù)器、Web服務(wù)器、企業(yè)核心應(yīng)用服務(wù)器和其它主要任務(wù)服務(wù)器等,從而協(xié)同完成工作任務(wù),需要的朋友可以參考下
    2023-08-08
  • Spring?Boot日志基礎(chǔ)使用之如何設(shè)置日志級(jí)別

    Spring?Boot日志基礎(chǔ)使用之如何設(shè)置日志級(jí)別

    這篇文章主要介紹了Spring?Boot日志基礎(chǔ)使用設(shè)置日志級(jí)別的方法,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • Java獲取客戶端真實(shí)IP地址過程解析

    Java獲取客戶端真實(shí)IP地址過程解析

    這篇文章主要介紹了Java獲取客戶端真實(shí)IP地址過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 你必須得會(huì)的SpringBoot全局統(tǒng)一處理異常詳解

    你必須得會(huì)的SpringBoot全局統(tǒng)一處理異常詳解

    程序在運(yùn)行的過程中,不可避免會(huì)產(chǎn)生各種各樣的錯(cuò)誤,這個(gè)時(shí)候就需要進(jìn)行異常處理,本文主要為大家介紹了SpringBoot實(shí)現(xiàn)全局統(tǒng)一處理異常的方法,需要的可以參考一下
    2023-06-06
  • 新版POI獲取日期類型cell值過程圖解

    新版POI獲取日期類型cell值過程圖解

    這篇文章主要介紹了新版POI獲取日期類型cell值過程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • MyBatis實(shí)現(xiàn)多表聯(lián)查的詳細(xì)代碼

    MyBatis實(shí)現(xiàn)多表聯(lián)查的詳細(xì)代碼

    這篇文章主要介紹了MyBatis如何實(shí)現(xiàn)多表聯(lián)查,通過實(shí)例代碼給大家介紹使用映射配置文件實(shí)現(xiàn)多表聯(lián)查,使用注解的方式實(shí)現(xiàn)多表聯(lián)查,需要的朋友可以參考下
    2022-08-08
  • 簡(jiǎn)單了解Java位域的一些知識(shí)

    簡(jiǎn)單了解Java位域的一些知識(shí)

    這篇文章主要介紹了簡(jiǎn)單了解Java位域的一些知識(shí),這個(gè)概念是在 Effective Java中了解到的, 可以通過EnumSet來代替位域這種方式表達(dá),需要的朋友可以參考下
    2019-07-07
  • JAVA實(shí)現(xiàn)網(wǎng)絡(luò)/本地圖片轉(zhuǎn)BASE64存儲(chǔ)代碼示例

    JAVA實(shí)現(xiàn)網(wǎng)絡(luò)/本地圖片轉(zhuǎn)BASE64存儲(chǔ)代碼示例

    這篇文章主要給大家介紹了關(guān)于JAVA實(shí)現(xiàn)網(wǎng)絡(luò)/本地圖片轉(zhuǎn)BASE64存儲(chǔ)的相關(guān)資料,Base64是網(wǎng)絡(luò)上最常見的用于傳輸8Bit字節(jié)碼的編碼方式之一,Base64就是一種基于64個(gè)可打印字符來表示二進(jìn)制數(shù)據(jù)的方法,需要的朋友可以參考下
    2023-07-07
  • Spring Boot分段處理List集合多線程批量插入數(shù)據(jù)的解決方案

    Spring Boot分段處理List集合多線程批量插入數(shù)據(jù)的解決方案

    大數(shù)據(jù)量的List集合,需要把List集合中的數(shù)據(jù)批量插入數(shù)據(jù)庫(kù)中,本文給大家介紹Spring Boot分段處理List集合多線程批量插入數(shù)據(jù)的解決方案,感興趣的朋友跟隨小編一起看看吧
    2024-04-04

最新評(píng)論

阿瓦提县| 石城县| 修武县| 靖州| 金沙县| 青河县| 伊金霍洛旗| 梓潼县| 陕西省| 都江堰市| 内丘县| 满城县| 秀山| 蒲城县| 石阡县| 津市市| 绥德县| 富平县| 临朐县| 四子王旗| 涿州市| 南投市| 东乌| 昌都县| 大荔县| 西峡县| 鸡泽县| 且末县| 抚松县| 溆浦县| 云霄县| 长兴县| 广安市| 永济市| 莆田市| 宜城市| 灵丘县| 客服| 霞浦县| 北川| 铜鼓县|