为了账号安全,请及时绑定邮箱和手机立即绑定

Mybaits从零单排-3

标签:
Java MySQL

Mybatis前篇之JDBC

一、JDBC

java database connection (java操作数据库的标准接口)

以Mysql为例(Innodb存储引擎),操作步骤如下:

1、加载mysql数据库驱动

Class.forName("com.mysql.jdbc.Driver");

2、获取连接对象

Connection conn = DriverManager.getConnection(url,username,password);

3、获取数据库操作对象

PreparedStatement stat = conn.prepareStatement(SQL);

4、SQL

stat.executeQuery()/executeUpdate();

5、返回结果

ResultSet

6、关闭连接对象

conn.close()

二、代码实现(查询数据、插入数据)

package com.imooc.util;

import org.junit.jupiter.api.Test;

import java.sql.*;

public class JDBCUtil {
    private static String url;
    private static String driverClassName;
    private static String username;
    private static String password;

    private static Connection connection;
    private static PreparedStatement ps;
    private static ResultSet rs;
    private static String sql;
    static {
        url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8";
        driverClassName = "com.mysql.jdbc.Driver";
        username = "root";
        password = "root";
    }

    public static Connection init() {
        try {
            //通过反射,JVM加载Driver类,执行Driver类的static静态块(注册驱动)
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(url,"root","root");
        } catch ( ClassNotFoundException e ) {
            System.out.println("驱动类加载失败");
            e.printStackTrace();
        } catch ( SQLException e ) {
            System.out.println("创建连接对象失败");
            e.printStackTrace();
        }
        return connection;
    }

    @Test
    public  void testSel() {
        connection = JDBCUtil.init();
        String sql = "select * from tb_user";
        try {
            ps = connection.prepareStatement(sql);
            rs = ps.executeQuery();
            User user = new User();
            while (rs.next()){
                user.setId(rs.getInt("id"));
                user.setName(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                System.out.println(user);
            }
        } catch ( SQLException e ) {
            e.printStackTrace();
        }finally {
            try {
                rs.close();
                ps.close();
                connection.close();
            } catch ( SQLException e ) {
                e.printStackTrace();
            }
        }
    }

    @Test
    public void testIns(){
        try {
            connection = JDBCUtil.init();
            String sql = "insert into tb_user(username,password) values(?,?)";
            ps = connection.prepareStatement(sql);
            User user = new User();
            user.setName("erpAdmin");
            user.setPassword("erp123!!");
            ps.setString(1,user.getName());
            ps.setString(2,user.getPassword());
            ps.executeUpdate();
            System.out.println("插入成功");
        } catch ( SQLException e ) {
            e.printStackTrace();
        }
    }
}

class User{
    private int id;
    private String name;
    private String password;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

https://img1.sycdn.imooc.com//5c14eba60001284405040186.jpg

https://img1.sycdn.imooc.com//5c14fc020001ffab06330172.jpg

https://img1.sycdn.imooc.com//5c14fc1700012a7706030241.jpg

三、**JDBC的缺点**(引入ORM框架例如:Mybaits的原因)

1、SQL语句和Java代码耦合。

2、需要不断的set/get参数至实体对象。

3、获得连接的代码几乎一样,重复性极高。


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消