博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从JDBC程序看为什么需要Mybatis
阅读量:7070 次
发布时间:2019-06-28

本文共 3551 字,大约阅读时间需要 11 分钟。

package com.xuebusi.jdbc;import java.sql.*;/** *  从JDBC程序看为什么需要Mybatis * *  1.加载驱动程序和数据库连接所需要的url、用户名和密码都是写死在程序中的, *      后期更换数据库的话还要修改程序。所以最好是定义到外部的配置文件中; * *  2.SQL语句也是写死在程序中: *      (1)后期如果需要修改SQL语句的话,必须修改程序,重新编译; *      (2)无法达到代码重用的作用; *      (3)解决方案:最好将SQL语句也能够写死在配置文件; * *  3.给SQL语句设置参数有问题: *      (1)参数写死了,不便于维护,最好能够从外部传递进来; *      (2)需要判断参数的类型,很繁琐,最好能够自动进行判断; *      (3)需要手动判断参数的位置(角标),繁琐,最好能够自动判断; * *  4.遍历结果集也存在问题: *      (1)需要判断结果字段的类型,麻烦; *      (2)需要手动指定字段名称,麻烦; *      最好能够直接将结果集映射为JavaBean; * *  5.释放资源也有问题,频繁的创建连接和关闭连接,造成资源浪费,影响系统性能,最好能够使用连接池; * *  而Mybatis正好可以解决上述JDBC程序所存在的一系列问题。 * Created by SYJ on 2017/2/14. */public class JdbcTest {    public static void main(String[] args) {        Connection connection = null;        PreparedStatement preparedStatement = null;        ResultSet resultSet = null;        try {            //加载驱动            Class.forName("com.mysql.jdbc.Driver");            //创建数据库连接            String url = "jdbc:mysql://localhost:3306/xuebusi";            String user = "root";            String password = "root";            connection = DriverManager.getConnection(url, user, password);            //创建PreparedStatement            String sql = "SELECT * FROM tb_user WHERE id > ? limit ?";            preparedStatement = connection.prepareStatement(sql);            //给上面的SQL语句设置第一个参数            //注意参数角标是从1开始的            preparedStatement.setLong(1, 1L);            //给上面的SQL语句设置第二个参数,分页参数            preparedStatement.setInt(2, 5);            //执行查询            resultSet = preparedStatement.executeQuery();            //遍历结果集            while (resultSet.next()){                String username = resultSet.getString("username");                String pass = resultSet.getString("password");                String phone = resultSet.getString("phone");                String email = resultSet.getString("email");                Date created = resultSet.getDate("created");                Date updated = resultSet.getDate("updated");                System.out.println("username:" + username + ",password:" + pass + ",phone:"                        + phone + ",email:" + email + ",created:" + created + ",updated:" + updated);            }        } catch (Exception e) {            e.printStackTrace();        } finally {            //释放资源            if (null != resultSet) {                try {                    resultSet.close();                } catch (SQLException e) {                    e.printStackTrace();                }            }            if (null != preparedStatement){                try {                    preparedStatement.close();                } catch (SQLException e) {                    e.printStackTrace();                }            }            if (null != connection){                try {                    connection.close();                } catch (SQLException e) {                    e.printStackTrace();                }            }        }    }}

 

/** 数据库表结构 */CREATE TABLE `tb_user` (  `id` bigint(20) NOT NULL AUTO_INCREMENT,  `username` varchar(50) NOT NULL COMMENT '用户名',  `password` varchar(32) NOT NULL COMMENT '密码,加密存储',  `phone` varchar(20) DEFAULT NULL COMMENT '注册手机号',  `email` varchar(50) DEFAULT NULL COMMENT '注册邮箱',  `created` datetime NOT NULL,  `updated` datetime NOT NULL,  PRIMARY KEY (`id`),  UNIQUE KEY `username` (`username`) USING BTREE,  UNIQUE KEY `phone` (`phone`) USING BTREE,  UNIQUE KEY `email` (`email`) USING BTREE) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COMMENT='用户表';

 

转载于:https://www.cnblogs.com/jun1019/p/6399182.html

你可能感兴趣的文章
感谢2011
查看>>
power shell 远程连接
查看>>
你的灯还亮着吗
查看>>
android手机在slackware linux上的调试
查看>>
mysql性能优化配置
查看>>
JavaScript继承方式详解
查看>>
解决win7旗舰版无法打开微软论坛
查看>>
烂泥:高负载均衡学习haproxy之安装与配置
查看>>
路由方式通过Iptables解决内网绑定的公网IP问题
查看>>
Ubuntu配置DNS
查看>>
我的友情链接
查看>>
我的碎碎念
查看>>
pymysql添加更新数据没效果
查看>>
TuShare -财经数据接口包
查看>>
数据之加密与解密
查看>>
冷门java程序员的理念
查看>>
JavaScript实现X秒后自动跳转
查看>>
extjs formPanel里的元素居中显示
查看>>
PHP系列(十)GD库
查看>>
android笔记3-文件读取
查看>>