用了一段时间的Mybatis,突然感觉JDBC有点陌生,虽然Mybatis好用,但不能忘本啊,赶紧来回顾一下JDBC。
首先建立实体类:Car
package com.test;
public class Car {
private Integer c_no;
private String c_name;
public Car() {
super();
// TODO Auto-generated constructor stub
}
public Car(Integer c_no, String c_name) {
super();
this.c_no = c_no;
this.c_name = c_name;
}
public Integer getC_no() {
return c_no;
}
public void setC_no(Integer c_no) {
this.c_no = c_no;
}
public String getC_name() {
return c_name;
}
public void setC_name(String c_name) {
this.c_name = c_name;
}
@Override
public String toString() {
return "Car [c_no=" + c_no + ", c_name=" + c_name + "]";
}
}
再设置数据库的连接及数据操作(Mysql的连接jar包一定要记得导入,不然会报错):
package com.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class ConnectionToMysql {
private String url;//数据库的连接地址
private String user;//用户
private String password;//数据库登录密码
private String driverClass;//数据库驱动
private Connection connection;
private PreparedStatement preparedStatement;
{
url="jdbc:mysql:///mybatis";
user="root";
password="123456";
driverClass="com.mysql.jdbc.Driver";
}
public void getConnection() throws ClassNotFoundException, SQLException{
Class.forName(driverClass);
//建立数据库的连接
connection=DriverManager.getConnection(url,user,password);
System.out.println("connection!");
//查询所有的Car
public List<Car> getAll(){
String sql="select * from car";
List<Car> carList=new ArrayList<>();
try {
//使用preparedStatement(预编译的SQL语句,可以防止SQL注入),当然也可以使用Statement,但是一般建议使用preparedStatement.
preparedStatement=connection.prepareStatement(sql);
//执行查询
ResultSet result= preparedStatement.executeQuery();
//将查询出的结果封装成Car对象(由于不是ORM,不会自动封装,所以只能靠自己手动封装了)
while(result.next()){
//result.getxxx()中的参数可以是表中对应的列表名,也可以是索引值(列相应的顺序)
int c_no=result.getInt("c_no");
String c_name=result.getString("c_name");
System.out.println(c_no+"----"+c_name);
Car car=new Car(c_no,c_name);
carList.add(car);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return carList;
}
//查询指定no的Car
public Car queryByNo(int c_no ){
String c_name=null;
//使用?表示占位符
String sql="select c_name from car where c_no = "+no;
try {
//使用preparedStatement(预编译)
preparedStatement=connection.prepareStatement(sql);
//给占位符赋值
preparedStatement.setInt(1, c_no);
//执行查询
ResultSet rs=preparedStatement.executeQuery();
while(rs.next()){
c_name=rs.getString("c_name");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return new Car(c_no,c_name);
}
}
//关闭连接
public void closeMysql() throws Exception{
con.close();
}
由于想偷懒,并没有将操作数据的方法写入Dao类,此处也省略了增加、修改、删除,但大体操作也差不了。
那么做个简单的JDBC使用总结:
-加载驱动,及连接细节(必须进入相应Jar包);
- 建立连接;
- 使用preparedStatement/statement来进行操作数据,执行时使用preparedStatement/statement.executeQuery()(查询)/execute()(增、删、改);
- 关闭数据库的连接(数据涉及到资源,所以要及时的关闭)。
不是ORM,自己要写封装代码,是真的难受!!