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

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对象,使用对象获取属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值