最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

Oracle:Mybatis,JDBC數(shù)據(jù)庫連接,增刪改查,提交事務(wù),解決端口號(hào)報(bào)錯(cuò)【詩書畫唱】

2021-03-09 19:53 作者:詩書畫唱  | 我要投稿




概括:

持久層框架的特點(diǎn)和創(chuàng)建Mybatis工程

PPT文本

示例(用mybatis框架像數(shù)據(jù)庫中插入一條數(shù)據(jù))

解決因?yàn)槎丝谔?hào)為1522或1521引發(fā)的IO錯(cuò)誤,查看端口號(hào)

sqlserver,mysql ,oracle各自默認(rèn)的不同的端口號(hào)

關(guān)于使用修改語句等時(shí)未提交事務(wù)后JDBC無法再修改這條數(shù)據(jù)這件事

sqlserver,mysql ,oracle各自默認(rèn)的不同的端口號(hào)

關(guān)于mybatis.xml配置文件的注意事項(xiàng)

Mybatis框架建表示例



因?yàn)閙ybatis框架,這些被我注釋的代碼都可以不用寫了,所以還是很好用的。






解決因?yàn)槎丝谔?hào)為1522或1521引發(fā)的IO錯(cuò)誤,查看端口號(hào)?START



這個(gè)是有時(shí)eclipse的控制臺(tái)中會(huì)報(bào)出的錯(cuò)誤:

這個(gè)是有時(shí)會(huì)報(bào)出的錯(cuò)誤








https://blog.csdn.net/Hellowenpan/article/details/79645173



當(dāng)然了我就沒這篇文章寫得那么麻煩了,




D:\oracle\product\10.2.0\db_1\network\ADMIN


解決因?yàn)槎丝谔?hào)為1522或1521引發(fā)的IO錯(cuò)誤,查看端口號(hào)?END





示例(用mybatis框架像數(shù)據(jù)庫中插入一條數(shù)據(jù))START

abatis

n.鹿砦,拒木,障礙物;

這里有條數(shù)據(jù)是我用jdbc插入的





Mybatis框架建表示例 START


? ? ? ? ? ? ? ? ? ??

create table Userinfo(

? ? id number primary key,

? ? act varchar2(30) not null,

? ?pwd varchar2(30) not null,

? ?birth date

);


--drop sequence seq_Userinfo

create sequence seq_Userinfo

start with 1? ? ? ?--起始值是1

increment by 1? ? ?--增長的值? ?

maxvalue 999999999 --序列號(hào)的最大值

minvalue 1? ? ? ? ?--序列號(hào)的最小值

nocycle? ? ? ? ? ? --是否循環(huán)

cache 10;? ? ? ? ? --預(yù)存



insert into Userinfo values(seq_Userinfo.nextval,'黑黑','pwd1',to_date('2020-06-06','yyyy-mm-dd'));

insert into Userinfo values(seq_Userinfo.nextval,'紅紅','pwd2',to_date('2020-06-07','yyyy-mm-dd'));

insert into Userinfo values(seq_Userinfo.nextval,'藍(lán)藍(lán)','pwd3',to_date('2020-06-08','yyyy-mm-dd'));


--select * from Userinfo


Mybatis框架建表示例 END


未插入數(shù)據(jù)時(shí)

import java.io.IOException;

import java.io.Reader;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;


import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;


import com.jy.bean.Userinfo;



public class Test {


public static void main(String[] args) {

// TODO Auto-generated method stub

//? ? ? ? String drivername = "oracle.jdbc.driver.OracleDriver";

//? ? ? ? //oracle數(shù)據(jù)庫的默認(rèn)端口號(hào)1521

//? ? ? ? //連接的數(shù)據(jù)庫名字是orcl數(shù)據(jù)庫

//? ? ? ? String url = "jdbc:oracle:thin:@localhost:1521:orcl";

//? ? ? ? String username = "j190802";

//? ? ? ? String pwd = "orcl";

//? ? ? ??

//? ? ? ? Connection conn = null;

//? ? ? ? PreparedStatement pstm = null;

//? ? ? ? ResultSet rs = null;

//? ? ? ??

//? ? ? ? try {

//? ? ? ? Class.forName(drivername);

// conn = DriverManager.getConnection(url,username,pwd);

// pstm = conn.prepareStatement("select * from userinfo where id = ?");

// pstm.setInt(1, 8);

// rs = pstm.executeQuery();

// List<Userinfo>rmUserinfo = new ArrayList<Userinfo>();

// while(rs.next()) {

// Userinfo u = new Userinfo();

// //ID是userinfo表的主鍵

// u.setId(rs.getInt("ID"));

// u.setAct(rs.getString("ACT"));

// System.out.println(rs.getString("ACT"));

// u.setPwd(rs.getString("PWD"));

// u.setBirth(rs.getString("BIRTH"));

// rmUserinfo.add(u);

// }

//

// String sql = "insert into userinfo values(?,?,?,to_date(?,'yyyy-mm-dd'))";

// pstm = conn.prepareStatement(sql);

// Userinfo u = new Userinfo();

// u.setId(11);

// u.setAct("haha");

// u.setPwd("09876");

// u.setBirth("2000-7-3");

// pstm.setInt(1, u.getId());

// pstm.setString(2, u.getAct());

// pstm.setString(3, u.getPwd());

// pstm.setString(4, u.getBirth());

// int count = pstm.executeUpdate();

// System.out.println(count);

// } catch (Exception e) {

// // TODO Auto-generated catch block

// e.printStackTrace();

// } finally {

// try {

// if(rs != null) {

// rs.close();

// }

// if(pstm != null) {

// pstm.close();

// }

// if(conn != null) {

// conn.close();

// }

// } catch(Exception e) {

// e.printStackTrace();

// }

// }


//獲取主配置文件的路徑

String path = "mybatis.xml";

//讀取mybatis.xml中的配置信息,就是讀取四大連接字符串的內(nèi)容

Reader config;

try {

config = Resources.getResourceAsReader(path);

SqlSessionFactory factory =?

new SqlSessionFactoryBuilder().build(config);

//數(shù)據(jù)庫的操作對象session

SqlSession session = factory.openSession();

//調(diào)用selectAll

//執(zhí)行路徑就是映射文件的namespace屬性+'.'+id

String exePath = null;

// exePath = "com.jy.dao.UserinfoDao.selectAll";

// List<Userinfo>list = session.selectList(exePath);

// for(Userinfo u : list) {

// System.out.println(u.getAct());

// }


// exePath = "com.jy.dao.UserinfoDao.selectById";

// Userinfo u = session.selectOne(exePath,8);

// System.out.println(u.getAct());


exePath = "com.jy.dao.UserinfoDao.add";

Userinfo u = new Userinfo();

u.setId(13);

u.setAct("帥哥");

u.setPwd("666666");

u.setBirth("2000-6-06");

Integer count = session.insert(exePath,u);

//新增修改和刪除一定記得提交事務(wù)

session.commit();

System.out.println(count);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


}


package com.jy.bean;


public class Userinfo {

? ? private Integer id;

? ? private String act;

? ? private String pwd;

? ? private String birth;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getAct() {

return act;

}

public void setAct(String act) {

this.act = act;

}

public String getPwd() {

return pwd;

}

public void setPwd(String pwd) {

this.pwd = pwd;

}

public String getBirth() {

return birth;

}

public void setBirth(String birth) {

this.birth = birth;

}

}

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper

? ? PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"??

? ? "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!-- namespace就是空間名,它必須在整個(gè)項(xiàng)目中都是唯一的 -->

<mapper namespace="com.jy.dao.UserinfoDao">

? ? <!-- id必須是唯一的 -->

? ? <!-- 創(chuàng)建一個(gè)List<Userinfo>集合,變量名叫rmUserinfo -->

? ? <resultMap type="com.jy.bean.Userinfo" id="rmUserinfo">

? ? ? ? <!-- userinfo表的主鍵是id -->

? ? ? ? <!-- property指的是Userinfo類的屬性名,

? ? ? ? ? ? ?column指的是userinfo表的列名 -->

? ? ? ? <!-- u.setId(rs.getInt("ID")) -->

? ? ? ? <id property="id" column="ID" />

? ? ? ? <!-- u.setAct(rs.getInt("ACT")) -->

? ? <result property="act" column="ACT"/>

? ? <result property="pwd" column="PWD"/>

? ? <result property="birth" column="BIRTH"/>

? ? </resultMap>

? ? <!-- public List<Userinfo>selectAll() -->

? ? <select id="selectAll" resultMap="rmUserinfo">

? ? ? ? select * from userinfo

? ? </select>

? ??

? ? <!-- public Userinfo selectById(Integer id) -->

? ? <!-- mybatis框架中,占位符?使用#{}來代替 -->

? ? <select id="selectById" resultMap="rmUserinfo">

? ? ? ? select * from userinfo where id = #{id}

? ? </select>

? ??

? ? <!-- public Integer add(Userinfo u) -->

? ? <!-- 因?yàn)閰?shù)的類型是Userinfo,所以占位符中的字符串就必須是對應(yīng)的屬性名

? ? ? ? ?(屬性名區(qū)分大小寫) -->

? ? <insert id="add" parameterType="com.jy.bean.Userinfo">

? ? ? ? insert into userinfo values(#{id},#{act},#{pwd},to_date(#{birth},'yyyy-mm-dd'))

? ? </insert>

</mapper>




<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"??

? ? "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>? ?

? ? <environments default="oracleConf">? ? ? ? ? ? ? ? ?

? ? ? ? <!-- oracle配置 -->?

? ? ? ? <environment id="oracleConf">??

? ? ? ? ? ? <transactionManager type="JDBC">?

? ? ? ? ? ? ? ? <property name="closeConnection" value="false"/>

? ? ? ? ? ? </transactionManager>?

? ? ? ? ? ? <!-- 配置數(shù)據(jù)源 -->? ? ? ?

? ? ? ? ? ? <dataSource type="POOLED">

? ? ? ? ? ? ? ? <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>? ?

? ? ? ? ? ? ? ? <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>?

? ? ? ? ? ? ? ? <property name="username" value="X"/>?

? ? ? ? ? ? ? ? <property name="password" value="sshcPwd"/>??

? ? ? ? ? ? </dataSource>? ??

? ? ? ? </environment>

? ? </environments>?

? ? <!-- 實(shí)體映射文件集合 -->?

? ? <mappers>

? ? ? ? <mapper resource="com/jy/bean/UserinfoSqlMap.xml"/>

? ? </mappers>

</configuration>





示例(用mybatis框架像數(shù)據(jù)庫中插入一條數(shù)據(jù))END

關(guān)于mybatis.xml配置文件的注意事項(xiàng) START

關(guān)于mybatis.xml配置文件的注意事項(xiàng) END


教你找下載Oracle后就自帶的jdbc包 START

D:\oracle\product\10.2.0\db_1\jdbc\lib





教你找下載Oracle后就自帶的jdbc包 END



持久層框架的特點(diǎn)和創(chuàng)建Mybatis工程 START



PPT文本:

什么是MyBatis:

MyBatis是支持普通SQL查詢,存儲(chǔ)過程和高級映射的優(yōu)秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及結(jié)果集的檢索。MyBatis使用簡單的XML或注解用于配置和原始映射,將接口和Java的POJOs(Plan Old Java Objects,普通的Java對象)映射成數(shù)據(jù)庫中的記錄。

? ? 像這種支持SQL查詢的框架叫持久層框架,與之類似功能的還有Hibernate框架


持久層框架的特點(diǎn):

Hibernate和Mybatis等都具備一些共同點(diǎn):

從配置文件(通常是XML配置文件中)得到 sessionfactory。

由sessionfactory產(chǎn)生 session。

在session中完成對數(shù)據(jù)的增刪改查和事務(wù)提交等。

在用完之后關(guān)閉session 。?

在java對象和數(shù)據(jù)庫表之間有做映射的配置文件,通常是xml 文件。


使用MyBatis:

jar包下載地址為:http://mvnrepository.com/artifact/org.mybatis/mybatis

一個(gè)簡單的Mybatis示例:


在數(shù)據(jù)庫中創(chuàng)建表stuinfo。

在工程中導(dǎo)入MyBatis框架包和數(shù)據(jù)庫驅(qū)動(dòng)包。

創(chuàng)建MyBatis框架的配置文件mybatis.xml。

創(chuàng)建stuinfo的javabean類和映射文件stuinfoMap.xml。(映射文件也在src目錄下,最好和它所映射的javabean類在一起方便管理。)

創(chuàng)建測試類,在main方法中進(jìn)行測試。

導(dǎo)入MyBatis框架包和數(shù)據(jù)庫驅(qū)動(dòng)包:

Mybatis框架支持一個(gè)框架中使用多種不同的數(shù)據(jù)庫,即在框架中同時(shí)使用兩種以上的數(shù)據(jù)庫,原則是需要用哪個(gè)數(shù)據(jù)庫,就導(dǎo)入哪種數(shù)據(jù)庫的jar包。

請?jiān)陧?xiàng)目中導(dǎo)入Mybatis框架包和數(shù)據(jù)庫驅(qū)動(dòng)包。


創(chuàng)建MyBatis框架的配置文件mybatis.xml:

為了簡單起見,我們暫時(shí)將Mybatis的配置文件放在src目錄下。

注意:當(dāng)進(jìn)行框架整合以后,這個(gè)文件可能會(huì)被刪除掉。該文件名沒有特殊要求。以下代碼片段是框架對數(shù)據(jù)庫連接字符串進(jìn)行處理。

創(chuàng)建javabean:

根據(jù)stuinfo表的字段創(chuàng)建一個(gè)javabean,該javabean的類名為Stuinfo,即表名首字母大寫,駝峰式命名。


創(chuàng)建javabean的映射文件:

在前面創(chuàng)建的Stuinfo類所在的包中,繼續(xù)創(chuàng)建映射文件,注意該文件的名字最好遵守項(xiàng)目團(tuán)隊(duì)制定的規(guī)范,例如規(guī)定該文件名是以被映射的java類名拼接上SqlMap.xml而成的。


添加映射文件到mybatis.xml中:

對于映射文件,如果你不通過代碼告訴Mybatis框架它在哪里,是沒有辦法讀取到的,所以,我們還需要通過修改mybatis.xml文件告訴框架該如何找到映射文件。

打開mybatis.xml,添加如下的代碼:


檢查:

工程的文件層次結(jié)構(gòu)如下:


測試:

創(chuàng)建一個(gè)帶有main方法的測試類,在方法中添加如下的代碼:



總結(jié):

比較我們以前寫的JDBC代碼和使用mybatis框架的代碼,說說他們的差別。


作業(yè):



搭建一個(gè)Mybatis框架項(xiàng)目,通過Mybatis框架查詢出被連接數(shù)據(jù)庫中某個(gè)表的所有數(shù)據(jù)。(使用oracle或者sqlserver試試)


持久層框架的特點(diǎn)和創(chuàng)建Mybatis工程 END



主配置文件和加載properties配置文件 START

Mybatis框架中有三種配置文件:

主配置文件(mybatis.xml)

數(shù)據(jù)庫配置文件(db.properties)

映射文件(SqlMap.xml)

注意:在框架中,除了使用xml文件進(jìn)行配置以外,還有一種配置文件也使用得很廣泛,那就是properties文件。


在MyBatis中可以通過配置environment元素的子元素transactionManage來指定事務(wù)管理器類型:

1、JDBC:直接簡單使用了JDBC的提交和回滾設(shè)置。它依賴于從數(shù)據(jù)源得到的連接來管理事務(wù)范圍。

2、MANAGED:幾乎沒做什么。它從來不提交或回滾一個(gè)連接。而它會(huì)讓容器來管理事務(wù)的整個(gè)生命周期(比如Spring或JEE應(yīng)用服務(wù)器的上下文)。默認(rèn)情況下它會(huì)關(guān)閉連接。然而一些容器并不希望這樣,因此如果你需要從連接中停止它,將closeConnection屬性設(shè)置為false。




environment元素的子元素dataSource元素使用基本的JDBC數(shù)據(jù)源接口來配置JDBC連接對象的資源。通過它的type屬性來指定內(nèi)建的數(shù)據(jù)源類型,type屬性包含三種配置:

UNPOOLED:實(shí)現(xiàn)每次被請求時(shí)簡單打開和關(guān)閉連接。

POOLED:JDBC連接對象的數(shù)據(jù)源連接池的實(shí)現(xiàn),用來避免創(chuàng)建新的連接實(shí)例時(shí)必要的初始連接和認(rèn)證時(shí)間。當(dāng)前Web應(yīng)用程序用來快速響應(yīng)請求很流行的方法。

JNDI:實(shí)現(xiàn)為了使用如Spring或應(yīng)用服務(wù)器這類的容器,容器可以集 中或在外部配置數(shù)據(jù)源,然后放置一個(gè)JNDI上下文的引用。




主配置文件和加載properties配置文件?END

講義 START



Struts2:升級servlet為action。

Mybatis:持久層框架,數(shù)據(jù)庫框架。減少jdbc樣板代碼的編寫。


jdbc連接ORACLE數(shù)據(jù)庫:

"1、數(shù)據(jù)庫驅(qū)動(dòng)包(安裝oracle數(shù)據(jù)庫時(shí)就有了

【安裝目錄】\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar)"

"2、四大連接字符串

drivername=oracle.jdbc.driver.OracleDriver

url=jdbc:oracle:thin:@localhost:1521:orcl

username=j190802

password=orcl"

3、編寫代碼


搭建Mybatis框架步驟:

1、導(dǎo)入框架包:mybatis-3.3.0.jar

2、將主配置文件mybatis.xml文件放到src目錄下(主配置文件名不要改)

針對于每個(gè)表進(jìn)行操作:

3、創(chuàng)建對應(yīng)表的bean類

4、創(chuàng)建表的映射文件

5、在主配置文件中注冊映射文件







講義 END

sqlserver,mysql ,oracle各自默認(rèn)的不同的端口號(hào) START

?sqlserver默認(rèn)端口號(hào)為:1433

URL:"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dbname"

DRIVERNAME:"com.microsoft.jdbc.sqlserver.SQLServerDriver";



mysql 默認(rèn)端口號(hào)為:3306

URL:jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=gbk

DRIVERNAME:"com.mysql.jdbc.Driver";



oracle 默認(rèn)端口號(hào)為:1521

URL:"jdbc:oracle:thin:@localhost :1521:orcl";

DRIVERNAME:"oracle.jdbc.driver.OracleDriver";


sqlserver,mysql ,oracle各自默認(rèn)的不同的端口號(hào) END



關(guān)于使用修改語句等時(shí)未提交事務(wù)后JDBC無法再修改這條數(shù)據(jù)這件事 START




關(guān)于使用修改語句等時(shí)未提交事務(wù)后JDBC無法再修改這條數(shù)據(jù)這件事 END


Oracle:Mybatis,JDBC數(shù)據(jù)庫連接,增刪改查,提交事務(wù),解決端口號(hào)報(bào)錯(cuò)【詩書畫唱】的評論 (共 條)

分享到微博請遵守國家法律
香格里拉县| 平舆县| 轮台县| 岳池县| 双江| 若尔盖县| 伊吾县| 宣城市| 永清县| 乾安县| 宁阳县| 额济纳旗| 清苑县| 宁化县| 潼关县| 汉川市| 象州县| 东乡族自治县| 丹棱县| 怀化市| 延寿县| 平昌县| 绵阳市| 开平市| 蒙自县| 亚东县| 馆陶县| 长岭县| 苏州市| 家居| 曲麻莱县| 沛县| 砚山县| 云梦县| 西昌市| 临江市| 绍兴县| 惠水县| 金乡县| 东至县| 徐水县|