Mybatis、JDBC、Habernate、Mybatis+Spring的Mysql數據庫操做實例

一、數據庫操做實例:java

public static void JDBCTest() throws Exception {
		Connection conn = null;
		String url = "jdbc:mysql://localhost:3306/mysql_learn?"
				+ "user=root&password=123qwe&useUnicode=true&characterEncoding=utf8";
		String selectSql = "select id,name,sex,is_del as isDel from mysql_learn.t_user where name like '%王%'";
		// 1、加載驅動
		try {
			Class.forName("com.mysql.jdbc.Driver");
			System.out.println("加載驅動成功!");
			// 成功加載後,會將Driver類的實例註冊到DriverManager類中。

			// 2、創建鏈接
			conn = DriverManager.getConnection(url);
			// 3、建立Statement對象
			// •要執行SQL語句,必須得到java.sql.Statement實例,Statement實例分爲如下3種類型:
			// 一、執行靜態SQL語句。一般經過Statement實例實現。
			// 二、執行動態SQL語句。一般經過PreparedStatement實例實現。
			// 三、執行數據庫存儲過程。一般經過CallableStatement實例實現。具體的實現方式:
			// Statement stmt = con.createStatement() ;
			// PreparedStatement pstmt = con.prepareStatement(sql) ;
			// CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}")
			// ;
			
			Statement stmt = conn.createStatement();
			// 4、執行SQL
			// Statement接口提供了三種執行SQL語句的方法:executeQuery 、executeUpdate和execute
			// 一、ResultSet executeQuery(String sqlString):執行查詢數據庫的SQL語句
			// ,返回一個結果集(ResultSet)對象。
			// 二、int executeUpdate(String sqlString):用於執行INSERT、UPDATE或
			// DELETE語句以及SQL DDL語句,如:CREATE TABLE和DROP TABLE等
			// 三、execute(sqlString):用於執行返回多個結果集、多個更新計數或兩者組合的 語句。
			// 具體實現的代碼:
			// ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
			// int rows = stmt.executeUpdate("INSERT INTO ...") ;
			// boolean flag = stmt.execute(String sql) ;
			ResultSet resultSet = stmt.executeQuery(selectSql);

			// 5、結果集處理
			// 兩種狀況:
			// 一、執行更新返回的是本次操做影響到的記錄數。
			// 二、執行查詢返回的結果是一個ResultSet對象。
			// • ResultSet包含符合SQL語句中條件的全部行,而且它經過一套get方法提供了對這些行中數據的訪問。
			// • 使用結果集(ResultSet)對象的訪問方法獲取數據:
			// while(rs.next()){
			// String name = rs.getString("name") ;
			// String pass = rs.getString(1) ; // 此方法比較高效
			// }
			// (列是從左到右編號的,而且從列1開始)
			List<User> users = new ArrayList();
			while (resultSet.next()) {
				User user = new User();
				resultSet.getLong(1);
				resultSet.getString(2);
				resultSet.getInt(3);
				resultSet.getInt(4);
				System.out.println("姓名:" + resultSet.getString(2));// 入若是返回的是int類型能夠用getInt()
				users.add(user);
			}

			// 6、關閉鏈接 操做完成之後要把全部使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲
			// 明順序相反:
			// 一、關閉記錄集
			// 二、關閉聲明
			// 三、關閉鏈接對象
			if (resultSet != null) { // 關閉記錄集
				resultSet.close();
			}
			if (stmt != null) { // 關閉聲明
				stmt.close();
			}
			if (conn != null) { // 關閉鏈接對象
				conn.close();
			}
		} catch (ClassNotFoundException e) {
			System.out.println("找不到驅動程序類 ,加載驅動失敗!");
			e.printStackTrace();
		} catch (SQLException e) {
			System.out.println("MySQL操做錯誤!");
			e.printStackTrace();
        } finally {
		    conn.close();
        }

	}



二、Mybatis數據庫操做實例:mysql

public static void myBatisTest() {
		try {
			// 一、建立讀取配置文件myBatis-config.xml的輸入流
			String resource = "myBatis-config.xml";
			Reader reader = Resources.getResourceAsReader(resource);
			// 二、建立SqlSessionFactory
			SqlSessionFactory factory = new SqlSessionFactoryBuilder()
					.build(reader);
			// 三、建立SQLSession
			SqlSession session = factory.openSession();
			// 四、調用mapper文件插入數據,須要將mapper文件加載到配置文件(myBatis-config.xml)中
			User user = new User();
			user.setName("王靖坤");
			user.setSex(1);
			user.setIsDel(0);
			session.insert("com.qding.mybatis.learn.model.User.insert", user);
			System.out.println(user.getId());
			System.out.println(user.getName());
			session.commit();
			session.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
相關文章
相關標籤/搜索