实现的环境
1.windows上MySQL的安装:https://blog.csdn.net/Y_FC_EMBEDD/article/details/95724676
2.eclipse的使用(jdk,maven工程,springboot框架)
3.连接网络
第一步:在pom.xml中添加依赖的jar包
<!--对数据库的支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--数据库mysql的支持 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--jackson支持 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-parameter-names</artifactId>
</dependency>
<!--阿里开源最好用的数据库连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>
<!--mybatis与springboot整合-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<!--通用mapper,tk.mapper-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.1.4</version>
</dependency>
<!-- 通用Mapper -->
<dependency>
<groupId>com.github.abel533</groupId>
<artifactId>mapper</artifactId>
<version>2.3.2</version>
</dependency>
<!--pagehelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.1.3</version>
</dependency>
<!-- 读取配置文件相关 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!-- Apache工具组件 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-solr</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
第二步:在application.propreties文件中添加mysql的配置信息
#conf mysql connet
spring.jpa.database = MYSQL
spring.datasource.url = jdbc:mysql://localhost:3306/hadoop?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
spring.datasource.username =root
spring.datasource.password =root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.druid.initial-size=1
spring.datasource.druid.min-idle=1
spring.datasource.druid.max-active=20
spring.datasource.druid.test-on-borrow=true
spring.datasource.druid.stat-view-servlet.allow=true
mybatis.typeAliasesPackage=com.hadoop.monitor.bean
mybatis.mapperLocations=classpath:mappers/*.xml
mybatis.configuration.mapUnderscoreToCamelCase=true
mybatis.configuration.cacheEnabled=false
第三步:在启动类上添加注解@MapperScan("com.hadoop.monitor.mapper"),用来扫描mapper接口
第四步:创建MyMapper接口,特别注意,这个接口不能让启动类扫描到,否则会报错
比如在com.hadoop.monitor.mapperobj这个包下创建MyMapper接口,注意接口上边不能放注解。
package com.hadoop.monitor.mapperobj;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
public interface MyMapper<T> extends Mapper<T>, MySqlMapper<T> {
//TODO tk.mybatis.mapper.provider.EmptyProvider
//FIXME 特别注意,该接口不能被扫描到,否则会出错
}
第五步:创建com.hadoop.monitor.mapper包,并编写接口,继承第四步创建的接口,编写需要提供的方法
package com.hadoop.monitor.mapper;
import java.util.List;
import com.hadoop.monitor.bean.ClusterInfo;
import com.hadoop.monitor.mapperobj.MyMapper;
public interface ClustersInfoMapper extends MyMapper<ClusterInfo> {
/** 获取单个指定集群clusterId的信息*/
public List<ClusterInfo> queryClusterInfo(String clusterId);
/** 获取所有集群的信息*/
public List<ClusterInfo> queryAllClusterInfo();
}
这里用到了ClusterInfo类,这个类是用来存储集群信息的类,也和mysql数据库中的表信息对应,具体代码如下:
package com.hadoop.monitor.bean;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.hadoop.monitor.po.BasePojo;
@Table(name="cluster_info")
@JsonIgnoreProperties(ignoreUnknown=true)
public class ClusterInfo extends BasePojo {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private String clusterId;
private String clusterIp;
private Integer clusterPort;
public String getClusterId() {
return clusterId;
}
public void setClusterId(String clusterId) {
this.clusterId = clusterId;
}
public String getClusterIp() {
return clusterIp;
}
public void setClusterIp(String clusterIp) {
this.clusterIp = clusterIp;
}
public Integer getClusterPort() {
return clusterPort;
}
public void setClusterPort(Integer clusterPort) {
this.clusterPort = clusterPort;
}
}
@Table(name="cluster_info") 对应数据库中的表名信息
@Id 对应表中字段为主键
其他的是get和set方法。
在ClusterInfo类上,是继承了BasePojo类(自定义类),这个类是用来序列化的。
package com.hadoop.monitor.po;
import java.io.Serializable;
import java.util.Date;
import org.apache.solr.client.solrj.beans.Field;
//pojo基类,完成2个任务,2个日期,实现序列化
public class BasePojo implements Serializable {
private static final long serialVersionUID = 1L;
@Field
private Date created;
@Field
private Date updated;
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
public Date getUpdated() {
return updated;
}
public void setUpdated(Date updated) {
this.updated = updated;
}
}
第六步:编写实现接口的xml代码,这里的xml文件要和application.properties文件中的配置信息一致
mybatis.mapperLocations=classpath:mappers/*.xml
在src/main/resources路径下创建mappers文件夹,并创建ClustersInfoMapper.xml文件,注意!!!这里的xml文件名一定要和
com.hadoop.monitor.mapper包下的接口名一致,否则会出错。
<?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.hadoop.monitor.mapper.ClustersInfoMapper">
<select id="queryClusterInfo"
parameterType="String"
resultType="ClusterInfo">
select * from cluster_info where cluster_id=#{clusterId}
</select>
<select id="queryAllClusterInfo"
resultType="ClusterInfo">
select * from cluster_info
</select>
</mapper>
上面mapper标签中的namespace="com.hadoop.monitor.mapper.ClustersInfoMapper"一定要填写正确,可以按住Ctrl键,然后光标移动到这个位置,看看会不会有下划线出现,有则表明正确。
select标签的id属性是ClustersInfoMapper接口中的方法名queryClusterInfo,
select标签的parameterType属性是ClustersInfoMapper接口中queryClusterInfo()方法的参数类型,
select标签的resultType属性是ClustersInfoMapper接口中queryClusterInfo()方法的返回值类型。
第七步:在service函数中调用这个接口的方法,验证代码是否正确
1.声明接口的变量
2.利用变量调用接口中的方法
List<ClusterInfo> queryAllClusterInfo = clustersInfoMappper.queryAllClusterInfo();
调试,知道运行正常并返回预期的结果,ok结束!!