练习题
1 消息类别表
infotype:列 类型id 类型名称
create table info_type(
id int primary key AUTO_INCREMENT,
name varchar(50)
)
1)利用jdbc查询 列表
package com.gec.js;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class XiaoShiBiaoDemo {
public static void main(String[] args) throws SQLException {
try (
Connection conn = DriverManager.getConnection("jdbc:mysql:///hrm", "root", "");
Statement st = conn.createStatement();
) {
ResultSet rs = st.executeQuery("SELECT * FROM info i,info_type t WHERE i.id=t.id ");//查询
while (rs.next()) {
Object id = rs.getObject(1);
Object name = rs.getObject(2);
Object id1 = rs.getObject(3);
Object title = rs.getObject(4);
Object content = rs.getObject(5);
Object info_type_id = rs.getObject(6);
Object author = rs.getObject(7);
Object createDate = rs.getObject(8);
System.out.println(id + "," + name + "," + id1 + "," + title + "," + content + "," + info_type_id + ","
+ author + "," + createDate);
System.out.println(
"————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
效果图
2 消息表
info:列 消息id 消息标题 消息内容 消息类型id 作者 createdate
CREATE TABLE info(
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(50),
content VARCHAR(1000),
info_type_id INT,
author VARCHAR(30),
createDate DATE,
#外键
FOREIGN KEY(info_type_id) REFERENCES info_type(id)
)
2)插入一条数据
package com.gec.zy;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
public class XiaoShiBiaoDemo {
public static void main(String[] args) throws SQLException {
try (Connection conn = DriverManager.getConnection("jdbc:mysql:///hrm", "root", "");
Statement st = conn.createStatement();
) {
//插入语句
st.executeUpdate("INSERT INTO info_type(id,NAME) VALUES (4,'刘备')");
ResultSet rs2 = st.executeQuery("SELECT * FROM info_type ");
while (rs2.next()) {
Object id3 = rs2.getObject(1);
Object name4 = rs2.getObject(2);
System.out.println(id3 + "," + name4);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
效果图
反射
一、什么是反射:
(1)Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息。
(2)Java属于先编译再运行的语言,程序中对象的类型在编译期就确定下来了,而当程序在运行时可能需要动态加载某些类,这些类因为之前用不到,所以没有被加载到JVM。通过反射,可以在运行时动态地创建对象并调用其属性,不需要提前在编译期知道运行的对象是谁。
二、反射的原理:
下图是类的正常加载过程、反射原理与class对象:
Class对象的由来是将.class文件读入内存,并为之创建一个Class对象。
各种框架的设计
以上三个图标上面的名字就是Java的三大框架,简称SSH.
这三大框架的内部实现也大量使用到了反射机制,所有要想学好这些框架,则必须要求对反射机制熟练了。
使用反射机制解剖类的前提
必须先要获取到该类的字节码文件对象,即 Class类型对象。关于Class描述字节码文件如下图所示:
说明:
Java中使用Class类表示某个class文件
任何一个class文件都是Class这个类的一个实例对象.
2.获取Class对象的三种方式