激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|JavaScript|易語(yǔ)言|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Spring Boot+Mybatis+Pagehelper分頁(yè)實(shí)現(xiàn)

Spring Boot+Mybatis+Pagehelper分頁(yè)實(shí)現(xiàn)

2021-08-01 12:00xiaolyuh123 Java教程

本篇文章主要講述的是Spring Boot+Mybatis+Pagehelper分頁(yè)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

Spring Boot 集成MyBatis和Pagehelper分頁(yè)插件

mybatis-spring-boot-starter依賴樹(shù)如下:

Spring Boot+Mybatis+Pagehelper分頁(yè)實(shí)現(xiàn)

pom配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.xiaolyuh</groupId>
  <artifactId>spring-boot-student-mybatis</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>spring-boot-student-mybatis</name>
 
  <!-- 添加Spring Boot的父類依賴,這樣當(dāng)前項(xiàng)目就是Spring Boot項(xiàng)目了。 spring-boot-starter-parent是一個(gè)特殊的starter,他用來(lái)
    提供相關(guān)的maven默認(rèn)依賴, 使用它之后,常用的依賴可以省去version標(biāo)簽 -->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.3.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
 
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
  </properties>
 
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    </dependency>
 
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>1.3.0</version>
    </dependency>
    <!--pagehelper -->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper-spring-boot-starter</artifactId>
      <version>1.1.1</version>
    </dependency>
 
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.31</version>
    </dependency>
 
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>
 
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
 
</project>

application.properties配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
server.port=80
# 數(shù)據(jù)源配置
spring.datasource.url=jdbc:mysql://localhost:3306/ssb_test
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
#連接池配置
#spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource
 
#mybatis
#entity掃描的包名
mybatis.type-aliases-package=com.xiaolyuh.domain.model
#Mapper.xml所在的位置
mybatis.mapper-locations=classpath*:/mybaits/*Mapper.xml
 
#pagehelper分頁(yè)插件配置
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
 
#日志配置
logging.level.com.xiaolyuh=debug
logging.level.org.springframework.web=debug
logging.level.org.springframework.transaction=debug
logging.level.org.mybatis=debug
 
debug=false

除了上面常見(jiàn)的兩項(xiàng)配置,還有:

?
1
2
3
4
mybatis.config-location=mybatis-config.xml配置文件的路徑
mybatis.type-handlers-package=掃描typeHandlers的包
mybatis.check-config-location=檢查配置文件是否存在
mybatis.executor-type=設(shè)置執(zhí)行模式(SIMPLE, REUSE, BATCH),默認(rèn)為SIMPLE

Mapping XML文件

在resources文件夾下創(chuàng)建mybaits/PersonMapper.xml文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<?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.xiaolyuh.domain.mapper.PersonMapper" >
 <resultMap id="BaseResultMap" type="com.xiaolyuh.domain.model.Person" >
  <!--
   WARNING - @mbggenerated
   This element is automatically generated by MyBatis Generator, do not modify.
  -->
  <id column="id" property="id" jdbcType="BIGINT" />
  <result column="name" property="name" jdbcType="VARCHAR" />
  <result column="age" property="age" jdbcType="INTEGER" />
  <result column="address" property="address" jdbcType="VARCHAR" />
 </resultMap>
 <sql id="Base_Column_List" >
  <!--
   WARNING - @mbggenerated
   This element is automatically generated by MyBatis Generator, do not modify.
  -->
  id, name, age, address
 </sql>
 <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" >
  <!--
   WARNING - @mbggenerated
   This element is automatically generated by MyBatis Generator, do not modify.
  -->
  select
  <include refid="Base_Column_List" />
  from person
  where id = #{id,jdbcType=BIGINT}
 </select>
 <delete id="deleteByPrimaryKey" parameterType="java.lang.Long" >
  <!--
   WARNING - @mbggenerated
   This element is automatically generated by MyBatis Generator, do not modify.
  -->
  delete from person
  where id = #{id,jdbcType=BIGINT}
 </delete>
 <insert id="insert" parameterType="com.xiaolyuh.domain.model.Person" >
  <!--
   WARNING - @mbggenerated
   This element is automatically generated by MyBatis Generator, do not modify.
  -->
  <selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER" >
   SELECT LAST_INSERT_ID()
  </selectKey>
  insert into person (name, age, address
   )
  values (#{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}, #{address,jdbcType=VARCHAR}
   )
 </insert>
 <insert id="insertSelective" parameterType="com.xiaolyuh.domain.model.Person" >
  <!--
   WARNING - @mbggenerated
   This element is automatically generated by MyBatis Generator, do not modify.
  -->
  <selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER" >
   SELECT LAST_INSERT_ID()
  </selectKey>
  insert into person
  <trim prefix="(" suffix=")" suffixOverrides="," >
   <if test="name != null" >
    name,
   </if>
   <if test="age != null" >
    age,
   </if>
   <if test="address != null" >
    address,
   </if>
  </trim>
  <trim prefix="values (" suffix=")" suffixOverrides="," >
   <if test="name != null" >
    #{name,jdbcType=VARCHAR},
   </if>
   <if test="age != null" >
    #{age,jdbcType=INTEGER},
   </if>
   <if test="address != null" >
    #{address,jdbcType=VARCHAR},
   </if>
  </trim>
 </insert>
 <update id="updateByPrimaryKeySelective" parameterType="com.xiaolyuh.domain.model.Person" >
  <!--
   WARNING - @mbggenerated
   This element is automatically generated by MyBatis Generator, do not modify.
  -->
  update person
  <set >
   <if test="name != null" >
    name = #{name,jdbcType=VARCHAR},
   </if>
   <if test="age != null" >
    age = #{age,jdbcType=INTEGER},
   </if>
   <if test="address != null" >
    address = #{address,jdbcType=VARCHAR},
   </if>
  </set>
  where id = #{id,jdbcType=BIGINT}
 </update>
 <update id="updateByPrimaryKey" parameterType="com.xiaolyuh.domain.model.Person" >
  <!--
   WARNING - @mbggenerated
   This element is automatically generated by MyBatis Generator, do not modify.
  -->
  update person
  set name = #{name,jdbcType=VARCHAR},
   age = #{age,jdbcType=INTEGER},
   address = #{address,jdbcType=VARCHAR}
  where id = #{id,jdbcType=BIGINT}
 </update>
 
 <select id="findAll" resultMap="BaseResultMap">
  select
  <include refid="Base_Column_List" />
  from person
 </select>
 
 <select id="findByPage" resultMap="BaseResultMap">
  select
  <include refid="Base_Column_List" />
  from person
 </select>
</mapper>

DAO層Mapper類

在Mapper接口上需要加上@Mapper注解,@Mapper注解聲明成mybatis Dao層的Bean。也可以在配置類上使用@MapperScan("com.xiaolyuh.domain.mapper")注解聲明。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package com.xiaolyuh.domain.mapper;
 
import com.github.pagehelper.Page;
import com.xiaolyuh.domain.model.Person;
import org.apache.ibatis.annotations.Mapper;
 
import java.util.List;
 
@Mapper//聲明成mybatis Dao層的Bean,也可以在配置類上使用@MapperScan("com.xiaolyuh.domain.mapper")注解聲明
public interface PersonMapper {
 
  int deleteByPrimaryKey(Long id);
 
  int insert(Person record);
 
  int insertSelective(Person record);
 
  Person selectByPrimaryKey(Long id);
 
  int updateByPrimaryKeySelective(Person record);
 
  int updateByPrimaryKey(Person record);
 
  /**
   * 獲取所有數(shù)據(jù)
   * @return
   */
  List<Person> findAll();
 
  /**
   * 分頁(yè)查詢數(shù)據(jù)
   * @return
   */
  Page<Person> findByPage();
}

實(shí)體類

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package com.xiaolyuh.domain.model;
 
public class Person {
 
  private Long id;
 
  /**
   * 名稱
   */
  private String name;
 
  /**
   * 年齡
   */
  private Integer age;
 
  /**
   * 地址
   */
  private String address;
 
  public Long getId() {
    return id;
  }
 
  public void setId(Long 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;
  }
 
  public String getAddress() {
    return address;
  }
 
  public void setAddress(String address) {
    this.address = address;
  }
}

Service層

接口

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.xiaolyuh.service;
 
import com.github.pagehelper.Page;
import com.xiaolyuh.domain.model.Person;
 
import java.util.List;
 
/**
 * Created by yuhao.wang on 2017/6/19.
 */
public interface PersonService {
 
  List<Person> findAll();
 
  /**
   * 分頁(yè)查詢
   * @param pageNo 頁(yè)號(hào)
   * @param pageSize 每頁(yè)顯示記錄數(shù)
   * @return
   */
  Page<Person> findByPage(int pageNo, int pageSize);
 
  void insert(Person person);
}

實(shí)現(xiàn)類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.xiaolyuh.service.impl;
 
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.xiaolyuh.domain.mapper.PersonMapper;
import com.xiaolyuh.domain.model.Person;
import com.xiaolyuh.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.List;
 
/**
 * Created by yuhao.wang on 2017/6/19.
 */
@Service
@Transactional(readOnly = true)
public class PersonServiceImpl implements PersonService {
 
  @Autowired
  private PersonMapper personMapper;
 
  @Override
  public List<Person> findAll() {
    return personMapper.findAll();
  }
 
  @Override
  public Page<Person> findByPage(int pageNo, int pageSize) {
    PageHelper.startPage(pageNo, pageSize);
    return personMapper.findByPage();
  }
 
  @Override
  @Transactional
  public void insert(Person person) {
    personMapper.insert(person);
  }
 
}

分頁(yè)的包裝類PageInfo

需要把Page包裝成PageInfo對(duì)象才能序列化。該插件也默認(rèn)實(shí)現(xiàn)了一個(gè)PageInfo

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
package com.xiaolyuh.page;
 
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
 
import com.github.pagehelper.Page;
 
/**
 * 對(duì)Page<E>結(jié)果進(jìn)行包裝
 * <p/>
 * 新增分頁(yè)的多項(xiàng)屬性,主要參考:http://bbs.csdn.net/topics/360010907
 *
 * @author liuzh/abel533/isea533
 * @version 3.3.0
 * @since 3.2.2
 * 項(xiàng)目地址 : http://git.oschina.net/free/Mybatis_PageHelper
 */
@SuppressWarnings({"rawtypes", "unchecked"})
public class PageInfo<T> implements Serializable {
  private static final long serialVersionUID = 1L;
  //當(dāng)前頁(yè)
  private int pageNum;
  //每頁(yè)的數(shù)量
  private int pageSize;
  //總記錄數(shù)
  private long total;
  //總頁(yè)數(shù)
  private int pages;
  //結(jié)果集
  private List<T> list;
  //是否為第一頁(yè)
  private boolean isFirstPage = false;
  //是否為最后一頁(yè)
  private boolean isLastPage = false;
 
 
  public PageInfo() {
  }
 
  /**
   * 包裝Page對(duì)象
   *
   * @param list
   */
  public PageInfo(List<T> list) {
    if (list instanceof Page) {
      Page page = (Page) list;
      this.pageNum = page.getPageNum();
      this.pageSize = page.getPageSize();
 
      this.pages = page.getPages();
      this.list = page;
      this.total = page.getTotal();
    } else if (list instanceof Collection) {
      this.pageNum = 1;
      this.pageSize = list.size();
 
      this.pages = 1;
      this.list = list;
      this.total = list.size();
    }
    if (list instanceof Collection) {
      //判斷頁(yè)面邊界
      judgePageBoudary();
    }
  }
 
  /**
   * 判定頁(yè)面邊界
   */
  private void judgePageBoudary() {
    isFirstPage = pageNum == 1;
    isLastPage = pageNum == pages;
  }
 
  public int getPageNum() {
    return pageNum;
  }
 
  public void setPageNum(int pageNum) {
    this.pageNum = pageNum;
  }
 
  public int getPageSize() {
    return pageSize;
  }
 
  public void setPageSize(int pageSize) {
    this.pageSize = pageSize;
  }
 
  public long getTotal() {
    return total;
  }
 
  public void setTotal(long total) {
    this.total = total;
  }
 
  public int getPages() {
    return pages;
  }
 
  public void setPages(int pages) {
    this.pages = pages;
  }
 
  public List<T> getList() {
    return list;
  }
 
  public void setList(List<T> list) {
    this.list = list;
  }
 
  public boolean isIsFirstPage() {
    return isFirstPage;
  }
 
  public void setIsFirstPage(boolean isFirstPage) {
    this.isFirstPage = isFirstPage;
  }
 
  public boolean isIsLastPage() {
    return isLastPage;
  }
 
  public void setIsLastPage(boolean isLastPage) {
    this.isLastPage = isLastPage;
  }
 
  @Override
  public String toString() {
    final StringBuffer sb = new StringBuffer("PageInfo{");
    sb.append("pageNum=").append(pageNum);
    sb.append(", pageSize=").append(pageSize);
    sb.append(", total=").append(total);
    sb.append(", pages=").append(pages);
    sb.append(", list=").append(list);
    sb.append(", isFirstPage=").append(isFirstPage);
    sb.append(", isLastPage=").append(isLastPage);
    sb.append(", navigatepageNums=");
    sb.append('}');
    return sb.toString();
  }
}

測(cè)試類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package com.xiaolyuh;
 
import com.github.pagehelper.Page;
import com.xiaolyuh.domain.model.Person;
import com.xiaolyuh.page.PageInfo;
import com.xiaolyuh.service.PersonService;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import com.alibaba.fastjson.JSON;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
 
import java.util.List;
 
@RunWith(SpringRunner.class)
@SpringBootTest
public class PersonMapperTests {
 
 private Logger logger = LoggerFactory.getLogger(PersonMapperTests.class);
 
 @Autowired
 private PersonService personService;
 
 @Before
 public void testInsert() {
 Person person = new Person();
 person.setName("測(cè)試");
 person.setAddress("address");
 person.setAge(10);
 personService.insert(person);
 
 Assert.assertNotNull(person.getId());
 logger.debug(JSON.toJSONString(person));
 }
 
 @Test
 public void testFindAll() {
 List<Person> persons = personService.findAll();
 
 Assert.assertNotNull(persons);
 logger.debug(JSON.toJSONString(persons));
 }
 
 @Test
 public void testFindByPage() {
 Page<Person> persons = personService.findByPage(1, 2);
 // 需要把Page包裝成PageInfo對(duì)象才能序列化。該插件也默認(rèn)實(shí)現(xiàn)了一個(gè)PageInfo
 PageInfo<Person> pageInfo = new PageInfo<>(persons);
 Assert.assertNotNull(persons);
 logger.debug(pageInfo.toString());
 logger.debug(JSON.toJSONString(pageInfo));
 }
 
 @Test
 public void testCacheByPage() {
 long begin = System.currentTimeMillis();
 List<Person> persons = personService.findAll();
 long ing = System.currentTimeMillis();
 personService.findAll();
 long end = System.currentTimeMillis();
 logger.debug("第一次請(qǐng)求時(shí)間:" + (ing - begin) + "ms");
 logger.debug("第二次請(qǐng)求時(shí)間:" + (end - ing) + "ms");
 
 Assert.assertNotNull(persons);
 logger.debug(persons.toString());
 logger.debug(JSON.toJSONString(persons));
 }
 
}

源碼

https://github.com/wyh-spring-ecosystem-student/spring-boot-student/tree/releases

到此這篇關(guān)于Spring Boot+Mybatis+Pagehelper分頁(yè)實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Spring Boot+Mybatis+Pagehelper分頁(yè)內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/xiaolyuh123/article/details/73506189

延伸 · 閱讀

精彩推薦
  • Java教程shiro編碼和加密代碼詳解

    shiro編碼和加密代碼詳解

    Shiro提供了base64和16進(jìn)制字符串編碼/解碼的API支持,方便一些編碼解碼操作。下面通過(guò)實(shí)例代碼給大家詳解shiro編碼和加密知識(shí),感興趣的朋友一起看看吧...

    動(dòng)力節(jié)點(diǎn)4012021-01-06
  • Java教程詳解Java注解教程及自定義注解

    詳解Java注解教程及自定義注解

    這篇文章主要為大家詳細(xì)介紹了Java注解教程及自定義注解,幫助大家更好地學(xué)習(xí)Java注解,感興趣的小伙伴們可以參考一下 ...

    lijiao2752020-03-24
  • Java教程爬蟲(chóng)技術(shù)詳解

    爬蟲(chóng)技術(shù)詳解

    本文全面的介紹了爬蟲(chóng)的原理、技術(shù)現(xiàn)狀、以及目前仍面臨的問(wèn)題。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧...

    落葉的博客1632020-08-27
  • Java教程jdbc實(shí)現(xiàn)連接和增刪改查功能

    jdbc實(shí)現(xiàn)連接和增刪改查功能

    這篇文章主要為大家詳細(xì)介紹了jdbc實(shí)現(xiàn)連接和基本的增刪改查功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下...

    lxh54318182021-07-16
  • Java教程教你輕松制作java音樂(lè)播放器

    教你輕松制作java音樂(lè)播放器

    這篇文章主要介紹了如何編寫(xiě)屬于自己的java音樂(lè)播放器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下...

    Java開(kāi)發(fā)網(wǎng)5772020-06-28
  • Java教程Maven鏡像地址配置示例大全

    Maven鏡像地址配置示例大全

    這篇文章主要介紹了Maven鏡像地址配置示例大全,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧 ...

    csdn-華仔4742020-07-01
  • Java教程Spring高階用法之自定義業(yè)務(wù)對(duì)象組件化

    Spring高階用法之自定義業(yè)務(wù)對(duì)象組件化

    這篇文章主要介紹了Spring高階用法之自定義業(yè)務(wù)對(duì)象組件化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的...

    seeing10692021-07-24
  • Java教程java線程間通信的通俗解釋及代碼示例

    java線程間通信的通俗解釋及代碼示例

    這篇文章主要介紹了java線程間通信的通俗解釋,介紹了線程通信中的幾個(gè)相關(guān)概念,然后分享了線程通信的實(shí)現(xiàn)方式及代碼示例,具有一定參考價(jià)值 ,需...

    愛(ài)折騰的貓9292021-02-07
主站蜘蛛池模板: 91精品一区二区综合在线 | www.国产免费 | 国产精品一区视频 | 男人久久天堂 | 久久999久久| 国产精品99久久久久久大便 | 成人毛片100部免费观看 | 欧美特黄特色视频 | 国产精品久久久免费看 | 又黄又爽又色无遮挡免费 | 成人毛片网 | 99视频有精品视频高清 | 美国一级免费视频 | 久草在线视频中文 | 一级毛片免费的 | 男女羞羞视频 | 综合在线一区 | 日本视频免费看 | 国产精品一区在线免费观看 | 羞羞视频免费观看入口 | 久久免费视频精品 | 欧美亚洲免费 | 国产成人精品区 | cosplay裸体福利写真 | www.99热视频 | www.99tv| 特片网久久 | 国产妞干网 | 男女生羞羞视频网站在线观看 | 精品亚洲国产视频 | 欧美一级免费在线观看 | 成人福利在线 | 久久夜视频 | 国产999精品久久久久 | 本站只有精品 | 国产精选久久 | 免费一级特黄做受大片 | 精品一区二区三区日本 | 成人勉费视频 | 免费毛片免费看 | 久草在线新时代视觉 |