“入门:Mybatis”的版本间差异

来自Wikioe
跳到导航 跳到搜索
第3行: 第3行:
== 关于JDBC ==
== 关于JDBC ==
=== 依赖包 ===
=== 依赖包 ===
* mysql-connector-java-5.1.7-bin.jar:Mysql驱动
* '''<code>mysql-connector-java-5.1.7-bin.jar</code>''':Mysql驱动
* ojdbc14-10.2.0.1.0.jar:Oracle驱动
* '''<code>ojdbc14-10.2.0.1.0.jar</code>''':Oracle驱动


=== JDBC步骤 ===
=== JDBC步骤 ===

2020年10月7日 (三) 18:29的版本


关于JDBC

依赖包

  • mysql-connector-java-5.1.7-bin.jar:Mysql驱动
  • ojdbc14-10.2.0.1.0.jar:Oracle驱动

JDBC步骤

  1. 加载数据库驱动;
  2. 创建并获取数据库链接;
  3. 创建statement对象;
  4. 编写sql语句;
  5. 设置sql语句中的参数(使用preparedStatement);
  6. 通过statement执行sql并获取结果;
  7. 对sql执行结果进行解析处理;
  8. 释放资源(resultSet、preparedstatement、connection);

JDBC代码

package cn.xxx.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class JdbcTest {
	
	public static void main(String[] args) {
		
		//数据库连接
		Connection connection = null;
		//预编译的Statement,使用预编译的Statement提高数据库性能
		PreparedStatement preparedStatement = null;
		//结果集
		ResultSet resultSet = null;
		
		try {
			//加载数据库驱动
			Class.forName("com.mysql.jdbc.Driver");
			//通过驱动管理类获取数据库链接
			connection =  DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "root", "admin");
            
			//定义sql语句 ?表示占位符
			String sql = "select * from user where username = ?";
			//获取预处理statement
			preparedStatement = connection.prepareStatement(sql);
            
			//设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
			preparedStatement.setString(1, "王五");
			//向数据库发出sql执行查询,查询出结果集
			resultSet =  preparedStatement.executeQuery();
            
			//遍历查询结果集
			while(resultSet.next()){
				System.out.println(resultSet.getString("id")+"  "+resultSet.getString("username"));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			//释放资源
			if(resultSet!=null){
				try {
					resultSet.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(preparedStatement!=null){
				try {
					preparedStatement.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(connection!=null){
				try {
					connection.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
}

JDBC问题

  1. 数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。
  2. 采用硬编码方式,不能灵活操作数据库,代码不易维护。
    sql语句、查询条件、preparedStatement向占有位符号传参数、结果集解析,均是硬编码方式写入代码;

Mybatis

介绍

架构

依赖包

开发入门

创建工程

依赖包

log4j.properties

SqlMapConfig.xml

po类

程序编写

查询

添加

修改

删除

Dao开发

SqlSession的使用范围

原始Dao开发方式

Mapper动态代理方式

SqlMapConfig.xml配置文件

配置内容

properties

settings

typeAliases

typeHandlers

mappers

Mapper.xml映射文件

输入映射

输出映射

动态sql

Mybatis与其他

与JDBC

与Hibernate