web開發(fā)日記-JDBC

有點(diǎn)高產(chǎn)了呵曹。。何暮。


jdbc編程流程
package com.webtest.jdbc;

import java.sql.*;

/**
 * Created by elijahliu on 2017/2/18.
 */
public class JDBCTest {

    public static void main(String[] args) {
        String sql = "SELECT * FROM tbl_user";
        //代表當(dāng)前數(shù)據(jù)庫(kù)鏈接
        Connection conn = null;
        //代表sql語(yǔ)句
        Statement st = null;

        //代表返回?cái)?shù)據(jù)
        ResultSet rs = null;

        try {
//           Class.forName ("com.mysql.jdbc.Driver");//注冊(cè)mysql驅(qū)動(dòng)
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsp_db","root","123456");//設(shè)置鏈接
            st = conn.createStatement();//代表statement套件
            rs = st.executeQuery(sql);//執(zhí)行sql語(yǔ)句返回結(jié)果
            while (rs.next()) {//逐條讀取數(shù)據(jù)奄喂,直到
                System.out.println(rs.getInt("id"));

                System.out.println(rs.getString("name"));
                System.out.println(rs.getString("password"));

            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                rs.close();
                st.close();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }


    }
}

ps:必須在工程依賴中添加mysql-jdbc.jar的包。

基礎(chǔ)操作 增刪改查

package com.webtest.jdbc;

import java.sql.*;

/**
 * Created by elijahliu on 2017/2/18.
 */
public class JDBCTest {
    public static Connection getConnection() {
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsp_db", "root", "123456");//設(shè)置鏈接

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;

    }
    public static void insert(){
        Connection conn = getConnection();
        String sql = "INSERT INTO tbl_user(name,password,email)"+"VALUES('Tom','123456','tom@gmail.com')";
        try {
            Statement st = conn.createStatement();
            int cout = st.executeUpdate(sql);//運(yùn)行插入sql語(yǔ)句海洼,返回受影響條目數(shù)字 跨新,executeUpdate可以執(zhí)行insert update delete ddl語(yǔ)句
            System.out.println("向用戶表中插入了" + cout + " 條記錄");
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }


    }
    public static void update(){
        Connection conn = getConnection();
        String sql = "UPDATE tbl_user SET email = 'tom@126.com' WHERE name = Tom";
        try {
            Statement st = conn.createStatement();
            int cout = st.executeUpdate(sql);//運(yùn)行插入sql語(yǔ)句,返回受影響條目數(shù)字 贰军,executeUpdate可以執(zhí)行insert update delete ddl語(yǔ)句
            System.out.println("向用戶表中更新了" + cout + " 條記錄");
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }
    public static void delete(){
        Connection conn = getConnection();
        String sql = "DELETE FROM tbl_user WHERE name = 'Tom'";
        try {
            Statement st = conn.createStatement();
            int cout = st.executeUpdate(sql);//運(yùn)行插入sql語(yǔ)句玻蝌,返回受影響條目數(shù)字 ,executeUpdate可以執(zhí)行insert update delete ddl語(yǔ)句
            System.out.println("向用戶表中刪除了" + cout + " 條記錄");
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }


    public static void main(String[] args) {
        String sql = "SELECT * FROM tbl_user";
        //代表當(dāng)前數(shù)據(jù)庫(kù)鏈接
        Connection conn = null;
        //代表sql語(yǔ)句
        Statement st = null;

        //代表返回?cái)?shù)據(jù)
        ResultSet rs = null;

        try {
//           Class.forName ("com.mysql.jdbc.Driver");//注冊(cè)mysql驅(qū)動(dòng)
            conn = getConnection();
            st = conn.createStatement();//代表statement套件
            rs = st.executeQuery(sql);//執(zhí)行sql語(yǔ)句返回結(jié)果
            while (rs.next()) {//逐條讀取數(shù)據(jù)词疼,直到
                System.out.println(rs.getInt("id"));

                System.out.println(rs.getString("name"));
                System.out.println(rs.getString("password"));

            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                rs.close();
                st.close();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        //插
        insert();
        update();
        delete();
    }
}

JDBC編程之事務(wù)處理

事務(wù)

在多用戶對(duì)同一數(shù)據(jù)進(jìn)行同時(shí)操作時(shí)俯树,對(duì)數(shù)據(jù)的更改會(huì)出現(xiàn)不同步的問題,破壞數(shù)據(jù)的一致性贰盗。而事務(wù)就是進(jìn)行并發(fā)控制的基本單位许饿,事務(wù)是一個(gè)操作序列,這些操作要么都執(zhí)行要么都不執(zhí)行舵盈,是一個(gè)不可分割的工作單位陋率。比如銀行轉(zhuǎn)賬的工作球化,一個(gè)賬戶扣錢,一個(gè)賬戶加錢瓦糟,要么都執(zhí)行筒愚,要么都不執(zhí)行。在每個(gè)事務(wù)結(jié)束時(shí)都能保證數(shù)據(jù)的一致性菩浙。

對(duì)于coder來說巢掺,事務(wù)也可以說是一組連續(xù)的sql操作,要么對(duì)數(shù)據(jù)進(jìn)行永久性的更改劲蜻,要么不更改陆淀。

事務(wù)的特征

原子性

事務(wù)中包含的操作被看作一個(gè)邏輯單元,要么全部成功先嬉,要么全部失敗轧苫。事務(wù)的所有元素作為一個(gè)整體提交或回滾。事務(wù)的操作是不可分割的疫蔓。

一致性

事務(wù)開始之前和事務(wù)結(jié)束之后含懊,數(shù)據(jù)庫(kù)都處于一致性狀態(tài),數(shù)據(jù)庫(kù)完整性沒有被破壞鳄袍。

隔離性

對(duì)數(shù)據(jù)庫(kù)修改的各個(gè)事務(wù)是相互隔離的绢要,獨(dú)立的,不能由一個(gè)事務(wù)而去影響其他事務(wù)拗小。

持久性

是說重罪,事務(wù)完成之后,對(duì)于數(shù)據(jù)的影響是永久的哀九,即使系統(tǒng)出現(xiàn)故障也會(huì)一直保留剿配,真實(shí)的修改了數(shù)據(jù)庫(kù)。

事務(wù)的語(yǔ)句

  • 開始事務(wù):BEGIN TRANSACTION
  • 提交事務(wù):COMMIT TRANSACTION
  • 回滾事務(wù): ROLLBACK TRANSACTION

例子:添加id為10的一條成員記錄阅束,再添加一條id為1的地址記錄呼胚,因?yàn)閕d為1的條目已經(jīng)存在,則會(huì)發(fā)生主鍵沖突異常息裸。所以在main中使用conn.rollback進(jìn)行回滾操作蝇更。

package com.webtest.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * Created by elijahliu on 2017/2/18.
 */
public class TransactionTest {
    public static Connection getConnection() {
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsp_db", "root", "123456");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }

    public static void insertUserData(Connection conn) throws SQLException {
        String sql = "INSERT INTO tbl_user(id,name,password,email)" +
                "VALUES(10,'Tom','123456','tom@gmail.com')";
        Statement st = null;

        st = conn.createStatement();
        int count = st.executeUpdate(sql);
        System.out.println("向用戶表中插入了" + count + "條記錄");
        //在這里的最后不需要進(jìn)行conn.close(),在main方法中一起關(guān)掉就好

    }

    public static void insertAddressData(Connection conn) throws SQLException {
        String sql = "INSERT INTO tbl_address(id,city,country,user_id)" +
                "VALUES(1,'shanghai''china','10')";

        Statement st = conn.createStatement();
        int count = st.executeUpdate(sql);
        System.out.println("向地址表中插入了" + count + "條記錄");

        //在這里的最后不需要進(jìn)行conn.close()呼盆,在main方法中一起關(guān)掉就好


    }

    public static void main(String[] args) {
        Connection conn = null;
        try {
            conn = getConnection();
            conn.setAutoCommit(false);//禁止事務(wù)的自動(dòng)提交

            insertUserData(conn);
            insertAddressData(conn);

            conn.commit();//提交事務(wù)
        } catch (SQLException e) {
            System.out.println("===============捕獲到異常================");
            e.printStackTrace();
            try {
                conn.rollback();
                System.out.println("===========事務(wù)回回滾成功===============");
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
        } finally {
            try {
                if (conn != null) {

                    conn.close();

                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

用戶表
地址表

JDBC之程序優(yōu)化

前面的程序都是在程序中“硬配置”年扩,其實(shí)可以創(chuàng)建一個(gè)配置文件來進(jìn)行存儲(chǔ),也就是.properties文件访圃。
首先建立dbconfig.properties

driver=com.mysql.jdbc.Driver
dburl=jdbc\:mysql\://localhost\:3306/jsp_db
user=root
password=123456

ConnectionFactory.java

package com.webtest.util;

import com.mysql.jdbc.Driver;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

/**
 * Created by elijahliu on 2017/2/18.
 */
public class ConnectionFactory {
    private static String driver;
    private static String dburl;
    private static String user;
    private static String password;

    private Connection conn;

    private static final ConnectionFactory factory = new ConnectionFactory();//聲明一個(gè)這個(gè)類的成員變量

    static {
        Properties prop = new Properties();//定義一個(gè)properties厨幻,適用于儲(chǔ)存文件中的鍵值對(duì)的
        try {
            InputStream in = ConnectionFactory.class.getClassLoader()
                    .getResourceAsStream("dbconfig.properties");
            prop.load(in);
        } catch (Exception e) {
            System.out.println("============配置文件讀取錯(cuò)誤=============");

        }
        driver = prop.getProperty("driver");
        dburl = prop.getProperty("dburl");
        user = prop.getProperty("user");
        password = prop.getProperty("password");

    }

    private ConnectionFactory(){

    }
    public static ConnectionFactory getInstance(){
        return factory;
    }
    public Connection makeConnection(){
        try {
            conn = DriverManager.getConnection(dburl, user, password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
}

ConnectionFactory.java

package com.webtest.util;

import com.mysql.jdbc.Driver;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

/**
 * Created by elijahliu on 2017/2/18.
 */
public class ConnectionFactory {
    private static String driver;
    private static String dburl;
    private static String user;
    private static String password;

    private Connection conn;

    private static final ConnectionFactory factory = new ConnectionFactory();//聲明一個(gè)這個(gè)類的成員變量

    static {
        Properties prop = new Properties();//定義一個(gè)properties,適用于儲(chǔ)存文件中的鍵值對(duì)的
        try {
            InputStream in = ConnectionFactory.class.getClassLoader()
                    .getResourceAsStream("dbconfig.properties");
            prop.load(in);
        } catch (Exception e) {
            System.out.println("============配置文件讀取錯(cuò)誤=============");

        }
        driver = prop.getProperty("driver");
        dburl = prop.getProperty("dburl");
        user = prop.getProperty("user");
        password = prop.getProperty("password");

    }

    private ConnectionFactory(){

    }
    public static ConnectionFactory getInstance(){//在這里使用了單例模式,只允許有一個(gè)Connection鏈接
        return factory;
    }
    public Connection makeConnection(){
        try {
            conn = DriverManager.getConnection(dburl, user, password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
}

DTO類

data transfer object數(shù)據(jù)傳輸對(duì)象况脆,用于遠(yuǎn)程調(diào)用等對(duì)象需要大量調(diào)用的地方饭宾。
創(chuàng)建三個(gè)DTO類

IdEntity.java

package com.webtest.entity;

/**
 * Created by elijahliu on 2017/2/18.
 */
public abstract class IdEntity {
    protected long id;
    public long getId(){
        return id;
    }

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

}
//此方法相當(dāng)于核心抽象類

Address.java

package com.webtest.entity;

/**
 * Created by elijahliu on 2017/2/18.
 */
public class Address extends IdEntity {
    private String city;
    private String country;
    private String userId;

    @Override
    public String toString() {
        return "Address{" +
                "city='" + city + '\'' +
                ", country='" + country + '\'' +
                ", userId='" + userId + '\'' +
                '}';
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }
}

User.java

package com.webtest.entity;

import com.sun.javafx.geom.transform.Identity;

/**
 * Created by elijahliu on 2017/2/18.
 */
public class User extends IdEntity {
    private String name;

    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;
    }

    public String getEmaill() {
        return emaill;
    }

    public void setEmaill(String emaill) {
        this.emaill = emaill;
    }

    private String password;
    private String emaill;

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

DAO類

data access object數(shù)據(jù)訪問對(duì)象,主要是用來封裝數(shù)據(jù)庫(kù)中的表格了,將數(shù)據(jù)庫(kù)中的數(shù)據(jù)轉(zhuǎn)化為DTO類看铆。

創(chuàng)建UserDao、 dao/impl/UserDaoimpl笆搓、
com.webtest.Test/UserDaoTest.java三個(gè)文件性湿。

UserDao.interface

package com.webtest.dao;

import com.webtest.entity.User;

import java.sql.Connection;
import java.sql.SQLException;

/**
 * Created by elijahliu on 2017/2/18.
 */
public interface UserDao {
    public void save(Connection conn, User user) throws SQLException;
    public void update(Connection conn,Long id,User user) throws SQLException;

    public void delete(Connection conn, User user) throws SQLException;

    //需要編寫相應(yīng)的實(shí)現(xiàn),這是典型的面向接口的編程满败,接口只定義外觀和行為
}

UserDaoimpl.java (UserDao的實(shí)現(xiàn)類)

package com.webtest.dao.impl;

import com.webtest.dao.UserDao;
import com.webtest.entity.User;

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

/**
 * Created by elijahliu on 2017/2/18.
 */
public class UserDaoimpl implements UserDao {

    /*
    * 保存用戶信息
    * */

    @Override
    public void save(Connection conn, User user) throws SQLException {
        PreparedStatement ps = conn.prepareCall("INSERT INTO  tbl_user(name,password,email) VALUES (?,?,?)");
        ps.setString(1,user.getName());
        ps.setString(2, user.getPassword());
        ps.setString(3,user.getEmaill());
        ps.execute();

        //這里使用的PreparedStatement是jdbc用來執(zhí)行的sql查詢語(yǔ)句的api之一,用于執(zhí)行參數(shù)化的查詢
        //叹括?是占位符算墨,下面的setString方法,是用來替換占位符的汁雷。將user對(duì)象中的數(shù)據(jù)填補(bǔ)到sql語(yǔ)句中
        //從而進(jìn)行正確的查詢净嘀,所以最后ps.execute() 執(zhí)行。
    }

    /*
    *
    * 根據(jù)指定的id更新用戶信息
    * */


    @Override
    public void update(Connection conn, Long id, User user) throws SQLException {

        PreparedStatement ps = conn.prepareStatement("UPDATE tbl_user SET name=?,password=?,email=? WHERE id=?");

        ps.setString(1, user.getName());
        ps.setString(2, user.getPassword());
        ps.setString(3, user.getEmaill());
        ps.setLong(4, id);

        ps.execute();

    }

    /*
    *
    * 刪除制定的用戶信息
    *
    * */

    @Override
    public void delete(Connection conn, User user) throws SQLException {
        PreparedStatement ps = conn.prepareStatement("DELETE FROM tbl_user WHERE id=?");
        ps.setLong(1, user.getId());
        ps.execute();


    }
}

UserDaoTest.java

package com.webtest.Test;

import com.webtest.dao.UserDao;
import com.webtest.dao.impl.UserDaoimpl;
import com.webtest.entity.User;
import com.webtest.util.ConnectionFactory;

import java.sql.Connection;
import java.sql.SQLException;

/**
 * Created by elijahliu on 2017/2/18.
 */
public class UserDaoTest {
    public static void main(String[] args) {
        Connection conn = null;
        try {
            conn = ConnectionFactory.getInstance().makeConnection();

            conn.setAutoCommit(false);//關(guān)閉連接事務(wù)的自動(dòng)提交

            UserDao userDao = new UserDaoimpl();
            User tom = new User();
            tom.setName("Tom");
            tom.setPassword("123456");
            tom.setEmaill("tom@gmail.com");

            userDao.save(conn,tom); //調(diào)用持久層存儲(chǔ)

            conn.commit();//事務(wù)提交
        } catch (SQLException e) {
            try {
                conn.rollback();//存在異常則進(jìn)行事務(wù)回滾
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            e.printStackTrace();
        }

    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末侠讯,一起剝皮案震驚了整個(gè)濱河市挖藏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌厢漩,老刑警劉巖膜眠,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異溜嗜,居然都是意外死亡宵膨,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門炸宵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辟躏,“玉大人,你說我怎么就攤上這事土全∩铀觯” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵裹匙,是天一觀的道長(zhǎng)瑞凑。 經(jīng)常有香客問我,道長(zhǎng)幻件,這世上最難降的妖魔是什么拨黔? 我笑而不...
    開封第一講書人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上篱蝇,老公的妹妹穿的比我還像新娘贺待。我一直安慰自己,他們只是感情好零截,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開白布麸塞。 她就那樣靜靜地躺著,像睡著了一般涧衙。 火紅的嫁衣襯著肌膚如雪哪工。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評(píng)論 1 285
  • 那天弧哎,我揣著相機(jī)與錄音雁比,去河邊找鬼。 笑死撤嫩,一個(gè)胖子當(dāng)著我的面吹牛偎捎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播序攘,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼茴她,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了程奠?” 一聲冷哼從身側(cè)響起丈牢,我...
    開封第一講書人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瞄沙,沒想到半個(gè)月后己沛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡帕识,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年泛粹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肮疗。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡晶姊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出伪货,到底是詐尸還是另有隱情们衙,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布碱呼,位于F島的核電站蒙挑,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏愚臀。R本人自食惡果不足惜忆蚀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧馋袜,春花似錦男旗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至泽台,卻和暖如春什荣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背怀酷。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工稻爬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人胰坟。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓因篇,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親笔横。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法咐吼,類相關(guān)的語(yǔ)法吹缔,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法锯茄,異常的語(yǔ)法厢塘,線程的語(yǔ)...
    子非魚_t_閱讀 31,587評(píng)論 18 399
  • JDBC概述 在Java中,數(shù)據(jù)庫(kù)存取技術(shù)可分為如下幾類:JDBC直接訪問數(shù)據(jù)庫(kù)肌幽、JDO技術(shù)晚碾、第三方O/R工具,如...
    usopp閱讀 3,530評(píng)論 3 75
  • 1. 簡(jiǎn)介 1.1 什么是 MyBatis 喂急? MyBatis 是支持定制化 SQL格嘁、存儲(chǔ)過程以及高級(jí)映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,429評(píng)論 0 4
  • 【同讀一本書】 2016-07-15-053 《這是我的船》 一旦領(lǐng)導(dǎo)者與組織中的其他人確立了新的“社會(huì)契約”,他...
    楊健effort閱讀 555評(píng)論 0 1
  • (三) 安合家中普通廊移,父親安華 母親何楊糕簿,父母恩愛 家中還有一姐 名曰安風(fēng) 姐妹性情長(zhǎng)相相差甚遠(yuǎn) 安合隨父...
    解體閱讀 230評(píng)論 0 0