Mybatis 学习 (1) jdbc的使用

实习已经半年多了,从刚进入公司开始接触到框架,其中ORM框架Hibernate、mybatis。到目前为止,都会用,但是具体的原理不懂,所以开始系统的学习一下。先从mybatis开始。

参照 《深入浅出Mybatis技术原理与实战——杨开振》,代码:https://github.com/yangyang5214/mybatis

       

        传统的jdbc编程

Java程序都是通过JDBC(Java Data Base Connectivity连接数据库的,这样就可以通过Sql对数据库编码。

       传统的jdbc编程主要分为下面几步:
	1、连接数据库,注册驱动和数据库信息
	2、操作Connection,打开Statement对象
	3、通过Statement执行sql,返回结果到ResultSet对象。
	4、使用ResultSet读取数据,然后通过代码转换为pojo对象。
	5、关闭数据库相关资源。
	
下面以一个根据id查询用户的例子看一下具体的实现:
 
  
 1、基础数据,表的创建        
 
  
CREATE TABLE USER (
  id INT PRIMARY KEY AUTO_INCREMENT,
  username VARCHAR (10),
  age LONG,
  pwd VARCHAR (10)
);

INSERT INTO USER(username,age,pwd)
    VALUES ('爬爬',20,111),
      ('殃殃','10',222),
      ('祸祸','30',333)
 
  
 
  
2、具体实现
 
  
public class JdbcTest {
    public static void main(String[] args) {
        JdbcTest jdbcTest = new JdbcTest();
        UserDto userDto = jdbcTest.getUserById(1);
        System.out.println(userDto);
    }

    /**
     * 注册驱动和数据库相关信息
     * @return
     */
    public Connection getConnection(){
        Connection connection = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/mybatis";
            String username = "root";
            String pwd = "admin";
            connection = DriverManager.getConnection(url,username,pwd);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }

    /**
     * 通过Statement执行sql,返回结果到resultSet对象
     * @param userId
     * @return
     */
    public UserDto getUserById(long userId){
        Connection connection = getConnection();
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "SELECT * FROM user where id = ?";
        try {
            ps = connection.prepareStatement(sql);
            ps.setLong(1,userId);
            rs = ps.executeQuery();
            while (rs.next()){
                UserDto userDto = new UserDto();
                userDto.setId(rs.getLong("id"));
                userDto.setAge(rs.getLong("age"));
                userDto.setUsername(rs.getString("username"));
                userDto.setPwd(rs.getString("pwd"));
                return userDto;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            colse(rs,ps,connection);
        }
        return null;
    }

    /**
     * 关闭数据库相关资源
     * @param rs
     * @param ps
     * @param connection
     */
    public void colse(ResultSet rs,PreparedStatement ps,Connection connection){
        try {
            if (rs != null && !rs.isClosed()){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (ps != null && !ps.isClosed()){
                try {
                    ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (connection != null && !connection.isClosed()){
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

3、UserDto类
 
  
public class UserDto {

    private long id;
    private String username;
    private String pwd;
    private long age;

    public long getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public long getAge() {
        return age;
    }

    public void setAge(long age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "UserDto{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", pwd='" + pwd + '\'' +
                ", age=" + age +
                '}';
    }
}

4、结果
 
  
       
 
  
  

猜你喜欢

转载自blog.csdn.net/qq_30009669/article/details/73258745
今日推荐