Java bean
一开始根本不理解Java bean是个什么鬼,在网上查了一圈发现其实就是个Java类,只不过规范化了,具有一些特点。
- 所有属性为private
- 提供默认构造方法
- 提供getter和setter
- 实现serializable接口
大概就是为了便于封装重用。在涉及与数据库的操作的时候用Java bean会方便一些(大概是吧
在该项目里,Java bean就用来作为储存用户信息的一个类,在工程src文件夹里新建一个bean包,包里新建User.java
private String id; //主键,采用UUID
private String username; //用户名
private String password; //密码
private String headerPic; //头像
之后可以使用快捷键alt+s,选择generate getters and setters,eclipse就自动帮你写好get方法和set方法啦,这个Java bean就大概完成了。
建立数据库和相应的table
- create database article;
- use article;
create table t_user(
id varchar(30) NOT NULL,
username VARCHAR(20) DEFAULT NULL,
password VARCHAR(20) DEFAULT NULL,
hearderPic VARCHAR(60) DEFAULT NULL,
PRIMARY KEY (id)
) DEFAULT CHARSET=utf8;
jdbc.properties
在src所在的目录上新建一个config源文件夹(注意,是源文件夹,不是普通的文件夹,所有的源文件夹不会真的产生一个文件夹,它里面的文件默认在 CLASSPATH 根目录下),再创建一个jdbc.properties文件(便于更改配置信息)
内容:
db.username=root
db.password=mysqladmin
db.dataBaseName=article
读取properties文件
写一个test类来试试能不能读取到properties文件
新建test包,包里新建TestProperties.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| package test; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class TestProperties { public static void main(String[] args) { InputStream inputStream = TestProperties.class.getClassLoader().getResourceAsStream("jdbc.properties"); Properties p = new Properties(); try { p.load(inputStream); System.out.println(p); } catch (IOException e) { e.printStackTrace(); } } }
|
将properties文件变成输入流读取
输出理论上讲应该是数据库名,root(用户名),你的MySQL密码
不过在这一步突然出现了一个谜之“无法加载主类”,testproperties没办法编译运行,好尴尬,先不管他
嗯,经过漫长而又操蛋的排查,发现是之前引入jQuery那个jar包时除了点问题,包没有正确地添加到工程里,右键project -- build path -- configure build path -- libraries -- 选中有问题的那个jar包 -- remove -- 解决,对此我只想说,FxxK
事实证明,不需要那个包也可以正确运行,因为直接读取的网上的jQuery资源
好了言归正传
DataBaseUtils 数据库工具类
此处注意记得先引入MySQL的jar包(比如:mysql-connector-java-x.x.x-bin.jar)不然连不上数据库,报ClassNotFound的异常,之前一时疏忽忘了,被坑了好久。
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
| package util; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; public class DataBaseUtils { private static String username; private static String password; private static String dataBaseName;
static { config("jdbc.properties"); }
public static void config(String path){ InputStream inputStream = DataBaseUtils.class.getClassLoader().getResourceAsStream(path); Properties p = new Properties(); try { p.load(inputStream); username = p.getProperty("db.username"); password = p.getProperty("db.password"); dataBaseName = p.getProperty("db.dataBaseName"); } catch (IOException e) { e.printStackTrace(); } }
public static Connection getConnection(){ Connection connection = null; try { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection("jdbc:mysql://localhost:3333/"+dataBaseName+"?useUnicode=true&characterEncoding=utf8",username,password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return connection; } }
|
写一个测试类
1 2 3 4 5 6 7 8 9 10
| package test; import java.sql.Connection; import util.DataBaseUtils; public class TestDataBaseUtils { public static void main(String[] args) { DataBaseUtils.config("jdbc.properties"); Connection conn = DataBaseUtils.getConnection(); System.out.println(conn); } }
|
出来结果是:com.mysql.jdbc.Connection@3afa6240,即连接成功