您的位置:首页 > 其它

mybatis(1)--对于jdbc的回顾以及其缺点总结

2017-07-16 15:11 190 查看
mybatis是对原生的jdbc的封装,是一个持久层框架

那么为什么要用mybatis,首先我们来看看原生jdbc的操作

jdbc:

首先打开eclipse,创建工程

加入mysql的jar包

创建JdbcTest类

打开SQLyog,创建 数据库mybatis,创建表user

SHOW CREATE TABLE USER
CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(32) NOT NULL COMMENT '用户名称',
`birthday` DATE DEFAULT NULL COMMENT '生日',
`sex` CHAR(1) DEFAULT NULL COMMENT '性别',
`address` VARCHAR(256) DEFAULT NULL COMMENT '地址',
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8


package com.ddd.mybatis.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
* @author Dan
*原生态的jdbc
*/
public class JdbcTest {
public static void main(String[] args) {
//数据库连接
Connection conn=null;
//预编译(如果下次执行sql相同则不用编译,直接执行)的statement,使用它可以提高sql的执行效率
PreparedStatement ps=null;
//结果集
ResultSet rs=null;
try {
//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//获取数据库连接
conn=DriverManager.getConnection
("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8","root", "1234");
//定义sql语句
String sql="select * from user where username=?";
//获取预处理的statement
ps=conn.prepareStatement(sql);
//设置参数,(序号,值),其中序号从1开始
ps.setString(1, "小明");
//执行结果
rs=ps.executeQuery();
//遍历结果集打印输出
while(rs.next()){
System.out.println(rs.getString("id")+rs.getString("username"));
}

} catch (Exception e) {
e.printStackTrace();
}finally{//释放资源
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

}


缺点总结:

1.数据库连接,使用时就创建,不使用就立即释放,对数据库频繁开启关闭数据库,造成数据库资源浪费,影响性能

解决:使用数据库连接池

2.sql是写死的(硬编码),但需求是不断变化的,代码复用度不高,不利于维护

解决:使用xml配置文件来写sql,如果sql变化了,不用对Java代码重新编译

3.设置参数ps.setString(1, “小明”);这儿是写死的

解决:把sql语句的参数占位符全部配置在xml中去

4.结果集的遍历rs.getString(“id”)+rs.getString(“username”)这儿是写死的

解决:将结果集映射成Java对象,使用对象获取属性
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatis