您的位置:首页 > 数据库

Mybatis 学习笔记(1.1)传统JDBC编程查询数据库

2018-01-17 15:17 513 查看
1.传统JDBC访问数据库:

Java程序都是通过JDBC去访问数据库,并对数据库进行操作的,

添加mysql jar包 

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>


public class JdbcPractice {

//slf4j是日志的门面,一般与日志库log4j结合使用,来实现自定义日志打印
private static final org.slf4j.Logger log = LoggerFactory.getLogger(JdbcPractice.class);
private Connection getConnection(){
Connection connection = null;
//class.forName 的作用是为了动态加载类到虚拟机当中,至于为什么不去执行.newInstance 去获取类对象,是因为在虚拟机加载类的时候,就已经执行了类中的静态方法,获取了类对象
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/eh_feature4?useUnicode=true&characterEncoding=utf-8";
String user = "root";
String password = "123456";
connection = DriverManager.getConnection(url,user,password);
} catch (ClassNotFoundException |SQLException ex) {
log.error("JdbcPractice",ex);
return null;
}
return connection;
}
public Doctor getDoctor(Integer doctorId){
Connection connection = getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = connection.prepareStatement("select DoctorId,Name,Gender from base_doctor where doctorId = ?");
ps.setInt(1,doctorId);
rs = ps.executeQuery();
while(rs.next()){
Doctor doctor = new Doctor();
doctor.setDoctorName(rs.getString("Name"));
doctor.setDoctorId(rs.getInt("DoctorId"));
doctor.setDoctorSex(rs.getString("Gender"));
return doctor;
}

} catch (SQLException e) {
e.printStackTrace();
return null;
}finally {
this.close(rs,ps,connection);
}
return null;
}
private void close(ResultSet rs,PreparedStatement ps,Connection connection){
try {
if(rs!=null&&!rs.isClosed()){
rs.close();
}
} catch (SQLException e) {
log.error("ResultSet rs close exception",e);
}
try {
if(ps!=null&&!ps.isClosed()){
ps.close();
}
} catch (SQLException e) {
log.error("PreparedStatement ps close exception",e);
}
try {
if(connection!=null && !connection.isClosed()){
connection.close();
}
} catch (SQLException e) {
log.error("Connection connection close exception",e);
}
}
//由于JVM在运行程序时,会先加载main函数,调用时不实例化这个对象,而是通过类名直接调用,所以用public static来调用
public static void main(String []args){
JdbcPractice jdbcPractice = new JdbcPractice();
Doctor doctor = jdbcPractice.getDoctor(13876);
System.out.println("doctor name =>"+doctor.getDoctorName());

}
}

总结:1.首先JDBC需要加载获取数据库驱动,并获取用户名密码进行连接;

           2.对该连接打开preparedStatement对象,通过该对象执行查询,返回结果到resultSet对象中

          3.使用resultSet读取数据,并转换为具体的pojo对象

          4.关闭数据库相关连接

缺点:工作量大,需要先连接到数据库,还要对connection对象,preparedstatement对象,resultSet去获取数据,并且去关闭数据库
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: