最近写了个小工具,目的是能够通过运行程序,能够让钉钉群里面的机器人发送一条内容,内容的是一条来自查询数据库生成的数据.
很简单的功能,三个步骤,
第一步,通过jdbc建立数据库连接,拿到结果集.
第二步,处理结果集,将数据类型转换成String.
第三部,将String,通过机器人发送出去.
代码大致如下:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; import java.io.IOException; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; //以上是要用到的jar包 //查询工具类 public class FarmHouseReport { public static String getFarmHouseReport() throws Exception { com.mysql.jdbc.Driver driverOne=new com.mysql.jdbc.Driver(); DriverManager.registerDriver(driverOne); //连接的三个参数,建立连接 String url="JDBC:Mysql://数据库地址/数据库名称"; String name="用户名"; String password="密码"; Connection conn=DriverManager.getConnection(url,name,password); //建立sql信使: Statement st=(Statement) conn.createStatement(); String sql="SELECT b.name,c.dep_name,DATE_FORMAT(a.create_time, '%Y-%m-%d'),count(a.id) " + "FROM farmhouse_house a,user b,departmant c " + "WHERE DATE_FORMAT(a.create_time, '%Y-%m-%d') = DATE_SUB(curdate(), INTERVAL 1 DAY) " + "AND a.user_id = b.id AND b.department_id = c.id " + "GROUP BY b.name,c.dep_name,DATE_FORMAT(a.create_time, '%Y-%m-%d') " + "ORDER BY c.dep_name;"; //resultset用来接收查询 ResultSet rs = st.executeQuery(sql); //声明为全局 ArrayList<InforEntity> arr = new ArrayList<InforEntity>(); while(rs.next()) { InforEntity info = new InforEntity(); info.setName(rs.getString(1)); info.setDepName(rs.getString(2)); info.setDate(rs.getString(3)); info.setCount(rs.getString(4)); arr.add(info); } //构建要发送的内容 StringBuffer stb = new StringBuffer(); //遍历集合 for (InforEntity info : arr) { stb.append(info.name); stb.append(" "); stb.append(info.depName); stb.append(" "); stb.append(info.date); stb.append(" "); stb.append(info.count); stb.append(" "); } String str = stb.toString(); System.out.println(str); return str ; } }
然后是发送类
public class sendUtils { // TOKEN为需要发送机器人的地址 public static void send(String TOKEN,String stb) throws IOException, ClientProtocolException { HttpClient httpclient = HttpClients.createDefault(); HttpPost httppost = new HttpPost(TOKEN); httppost.addHeader("Content-Type", "application/json; charset=utf-8"); String textMsg = "{ "msgtype": "text", "text": {"content": "+"""+stb+"""+"}}"; StringEntity se = new StringEntity(textMsg, "utf-8"); httppost.setEntity(se); HttpResponse response = httpclient.execute(httppost); if (response.getStatusLine().getStatusCode()== HttpStatus.SC_OK){ String result= EntityUtils.toString(response.getEntity(), "utf-8"); System.out.println(result); } } }