1、封装正则 返回布尔
public class BooksystemUtils {
/**
* 利用正则表达式 检查是否为合法昵称 6-12个字符
* @param mininame
* @return
*/
public static boolean isMininame(String mininame){
return mininame.matches("^.{6,12}$");
}
}
2、java中util.Date和数据库中datetime的操作:
需求:
User对象里面有java.util.Date的birthday,我们需要存的格式为2001-01-01 01:01:01,mysql数据库中是datetime,当我们需要存入数据库或从数据库中取出来时,有一些细节必须注意!因为直接将java.util.Date存入数据库是不行的!
为了测试,我还在表中加了一个time的字段,类型为varchar。
————————————存入数据库:
加入我们直接将birthday存入数据库:ps.setDate((java.sql.Date)user.getBirthday()),这样会出错,因为类型的差异,强转会报错!
方式一:(推荐)
所有我们需要使用到java.sql.Timestamp这个类来进行转换:
Timestamp t = new Timestamp(user.getBirthay().getTime());
ps.setTimestamp(3, t);//此处birthday在sql语句中的第3个? 所以写3
这样就可以直接存入数据库!
方式二:
我们直接将birthday转换成特定格式的字符串String,存入数据库,这样也可以!:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String birthday = df.format(user.getBirthay());
ps.setString(3, birthday);//这样和下面这样都可以!
ps.setObject(3, birthday);
这样转换成字符串存进数据库没问题,数据库的datetime接受特定格式的字符串,这样存进数据库还是datetime类型的值!
—————————————————从数据库中取出:
取出来的时候就很简单了,因为java.sql.Timestamp是继承了java.util.Date,所有直接将取出来的值赋给birthdat就行了!
Timestamp t = rs.getTimestamp("birthday");
user.setBirthay(t);
日期比较问题:
为了测试日期比较,排序,特意增加了一个字段time,time是varchar类型的,存的都是特定格式的日期字符串(注意是字符串),
当测试排序时,不管是tetime类型的birthday,还是varchar类型的time,都能比较和排序!
----------------------------而项目中是获取当前时间,可以直接获取时就是这样的数据类型:然后直接存入给数据库的date型
Timestamp d = new Timestamp(System.currentTimeMillis());
3、 用完全未封装的原版jdbc存入并查询 :
3.1、我的存入单条数据 练习:【其中还书时间属性 未赋值存入】
public class RecordDaoImpl implements IRecordDao {
/**
* 1.四个定量提到最上面声明赋值
* 2.注册驱动
* 3.用DriverManager获取连接
* 4.用连接获取预处理对象ps 同时传参sql句
* 5.对ps中sql句的?挨个赋值
* 6.执行ps
* 7.关流
*/
private static final String DRIVER="com.mysql.jdbc.Driver";
private static final String IP="jdbc:mysql://localhost:3306/eesy?useUnicode=true&characterEncoding=utf8&useSSL=false";
private static final String USER="root";
private static final String PASSWORD="007";
@Override
public void saveRecord(Record record) throws Exception {
Class.forName(DRIVER);
Connection conn = DriverManager.getConnection(IP, USER, PASSWORD);
Timestamp outtime = new Timestamp(System.currentTimeMillis());
PreparedStatement ps = conn.prepareStatement("insert into record(bname,uname,outtime,state) values(?,?,?,?)");
ps.setObject(1,record.getBname());
ps.setObject(2,record.getUname());
ps.setObject(3,record.getOuttime());
ps.setObject(4,record.getState());
ps.executeUpdate();
ps.close();
conn.close();
}
}
3.2、下面是2个例子: 存入 、查询
package com.test.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
public class Connect {
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String IP = "jdbc:mysql://127.0.0.1:3306/msdn";
private static final String user = "root";
private static final String password = "";
public static void main(String args[]) throws Exception {
Connection conn = null;
PreparedStatement pstmt = null;
Timestamp d = new Timestamp(System.currentTimeMillis());
String sql = "insert into user(name,password,age,sex,birthday) values(?,?,?,?,?) ";
Class.forName(DRIVER);
conn = DriverManager.getConnection(IP, user, password);
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "zl");
pstmt.setString(2, "123456");
pstmt.setInt(3, 24);
pstmt.setString(4, "man");
pstmt.setTimestamp(5, d);
pstmt.executeUpdate();
pstmt.close();
conn.close();
}
}
package com.test.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
import java.text.*;
public class Find {
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String IP = "jdbc:mysql://127.0.0.1:3306/msdn";
private static final String user = "root";
private static final String password = "";
public static void main(String args[]) throws Exception {
Connection conn = null;
PreparedStatement pstmt = null;
Timestamp d = new Timestamp(System.currentTimeMillis());
ResultSet rs = null;
String sql = "select * from user";
Class.forName(DRIVER);
conn = DriverManager.getConnection(IP, user, password);
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
java.sql.Timestamp d1 = rs.getTimestamp(6);
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.format(d1));
}
pstmt.close();
conn.close();
}
}