Oracle,Mybatis嵌套查詢(xún),對(duì)映射,外鍵,主鍵,反射的理解,關(guān)聯(lián)元素【詩(shī)書(shū)畫(huà)唱】
概括:
association關(guān)聯(lián)元素
嵌套查詢(xún)
個(gè)人對(duì)映射,外鍵,主鍵,反射的理解:集合聲明都是在屬于“主”的關(guān)鍵的部分的xml文件,其實(shí)可以聯(lián)想到外鍵的設(shè)置,比如
type表的id要設(shè)置為主鍵,就是為了使用外鍵時(shí),確認(rèn)主從的關(guān)系,有主鍵的就是屬于
“主”的關(guān)系,就是“一”的關(guān)系,在這個(gè)“主從關(guān)系”中有主鍵的表的話(huà)就是主表。
其實(shí)“映射"和”反射“的話(huà)都是打印內(nèi)容的時(shí)候就是會(huì)存在一些的主從關(guān)系的。通過(guò)哦的思考,實(shí)踐等等,我發(fā)現(xiàn)其實(shí)把”一“對(duì)”多“等的關(guān)系,理解成”主從關(guān)系“就很好理解了。
建議命名id時(shí)有區(qū)分地命名,該統(tǒng)一命名的部分就統(tǒng)一命名,不然容易搞混。


type表的id要設(shè)置為主鍵,就是為了使用外鍵時(shí),確認(rèn)主從的關(guān)系,有主鍵的就是屬于?
“主”的關(guān)系,就是“一”的關(guān)系,在這個(gè)“主從關(guān)系”中有主鍵的表的話(huà)就是主表。?
其實(shí)“映射"和”反射“的話(huà)都是打印內(nèi)容的時(shí)候就是會(huì)存在一些的主從關(guān)系的。通過(guò)哦的思考,實(shí)踐等等,我發(fā)現(xiàn)其實(shí)把”一“對(duì)”多“等的關(guān)系,理解成”主從關(guān)系“就很好理解了。



個(gè)人的理解的筆記 START
一般是在作為“一”的對(duì)象中,聲明出
?作為“多”的對(duì)象這個(gè)類(lèi)。pt就是ptype的縮寫(xiě),如果不熟的話(huà)就是
?命名具體一些,如果很熟了就簡(jiǎn)短有意義的命名。





個(gè)人對(duì)映射,外鍵,主鍵,反射的理解:集合聲明都是在屬于“主”的關(guān)鍵的部分的xml文件,其實(shí)可以聯(lián)想到外鍵的設(shè)置,比如
type表的id要設(shè)置為主鍵,就是為了使用外鍵時(shí),確認(rèn)主從的關(guān)系,有主鍵的就是屬于
“主”的關(guān)系,就是“一”的關(guān)系,在這個(gè)“主從關(guān)系”中有主鍵的表的話(huà)就是主表。
其實(shí)“映射"和”反射“的話(huà)都是打印內(nèi)容的時(shí)候就是會(huì)存在一些的主從關(guān)系的。通過(guò)哦的思考,實(shí)踐等等,我發(fā)現(xiàn)其實(shí)把”一“對(duì)”多“等的關(guān)系,理解成”主從關(guān)系“就很好理解了。

type表的id要設(shè)置為主鍵,就是為了使用外鍵時(shí),確認(rèn)主從的關(guān)系,有主鍵的就是屬于
“主”的關(guān)系,就是“一”的關(guān)系,在這個(gè)“主從關(guān)系”中有主鍵的表的話(huà)就是主表。
其實(shí)“映射"和”反射“的話(huà)都是打印內(nèi)容的時(shí)候就是會(huì)存在一些的主從關(guān)系的。通過(guò)哦的思考,實(shí)踐等等,我發(fā)現(xiàn)其實(shí)把”一“對(duì)”多“等的關(guān)系,理解成”主從關(guān)系“就很好理解了。
個(gè)人的理解的筆記 END
個(gè)人的注意事項(xiàng)的記錄 START
個(gè)人對(duì)“多對(duì)多”的理解:就是2個(gè)對(duì)象都具有本身對(duì)應(yīng)多個(gè)對(duì)方的情況,是2個(gè)相互作用的
一對(duì)多。



id和result都映射一個(gè)單獨(dú)列的值到簡(jiǎn)單數(shù)據(jù)類(lèi)型(字符串,整型,雙精度浮點(diǎn)數(shù),日期等)的單獨(dú)屬性或字段。這兩者之間的唯一不同是id表示操作對(duì)象實(shí)例時(shí)用到的標(biāo)識(shí)屬性。用來(lái)提高程序的運(yùn)行速度,特別是緩存和嵌入結(jié)果映射(也就是聯(lián)合映射)。包含如下的屬性:

association元素:
關(guān)聯(lián)元素處理“有一個(gè)”類(lèi)型的關(guān)系。例如:學(xué)生只可以選擇一個(gè)專(zhuān)業(yè)班級(jí)。需要通過(guò)配置文件告訴MyBatis如何加載關(guān)聯(lián)。上面的例子就是一個(gè)典型的嵌套查詢(xún)的配置。





個(gè)人的注意事項(xiàng)的記錄?END
關(guān)于日志包 START


關(guān)于日志包 END
講義 START

sqlserver,mysql,oracle:關(guān)系型數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)的關(guān)系類(lèi)型:一對(duì)一,一對(duì)多(多對(duì)一),多對(duì)多
身份證號(hào)和人:通過(guò)身份證號(hào)只能找到唯一的一個(gè)人,每個(gè)人只有唯一的一個(gè)身份證號(hào)
一對(duì)多:班級(jí)和學(xué)生,一個(gè)班級(jí)中可以有很多的學(xué)生,每個(gè)學(xué)生只能在唯一的一個(gè)班級(jí)中
多對(duì)多:科目和學(xué)生:一個(gè)科目可以同時(shí)被許多學(xué)生選中,一個(gè)學(xué)生同時(shí)選多個(gè)科目
商品和訂單
角色和賬號(hào)
Person表:id,cardid(身份證號(hào)),在表中通過(guò)一個(gè)字段就可以搞定一對(duì)一的關(guān)系
Student表:id,name,sex,cid
Cls表:id,name
在表中通過(guò)外鍵引用關(guān)系就可以搞定一對(duì)多的關(guān)系
Subject表:id,sname,desc
Stuinfo表 :id,name,sex
科目和學(xué)生關(guān)系表:id,subid,stuid,score
在表中通過(guò)第三個(gè)關(guān)系表就可以搞定多對(duì)多的關(guān)系
商品和商品類(lèi)型:每個(gè)商品對(duì)應(yīng)唯一的商品類(lèi)型,每個(gè)商品類(lèi)型中可以有很多的商品(多對(duì)一)
在mybatis框架中實(shí)現(xiàn)一對(duì)多的關(guān)系
講義 END
示例 START
?--drop table Product? ? ? ? ? ? ? ??
create table Product(
? ? id number primary key,
? ? pname varchar2(30) not null,
? ?price? number(10,2),
? ptype? number
);
--drop sequence seq_Product
create sequence seq_Product
start with 1? ? ? ?--起始值是1
increment by 1? ? ?--增長(zhǎng)的值? ?
maxvalue 999999999 --序列號(hào)的最大值
minvalue 1? ? ? ? ?--序列號(hào)的最小值
nocycle? ? ? ? ? ? --是否循環(huán)
cache 10;? ? ? ? ? --預(yù)存
insert into Product values(seq_Product.nextval,'黑筆',1.5,1);
insert into Product values(seq_Product.nextval,'紅書(shū)',2.0,2);
insert into Product values(seq_Product.nextval,'掛面',3.0,3);
--select * from Product
?--drop table Protype? ? ? ? ? ? ? ??
create table Protype(
? ? id number primary key,
? ? tname varchar2(30) not null
?
);
--drop sequence seq_Protype
create sequence seq_Protype
start with 1? ? ? ?--起始值是1
increment by 1? ? ?--增長(zhǎng)的值? ?
maxvalue 999999999 --序列號(hào)的最大值
minvalue 1? ? ? ? ?--序列號(hào)的最小值
nocycle? ? ? ? ? ? --是否循環(huán)
cache 10;? ? ? ? ? --預(yù)存
insert into Protype values(seq_Protype.nextval,'筆');
insert into Protype values(seq_Protype.nextval,'書(shū)');
insert into Protype values(seq_Protype.nextval,'面');
--select * from Protype

package com.SSHC.bean;
//一對(duì)多中的一:
public class Product {
? ? private Integer id;
? ? private String pname;
? ? private Double price;
? ? private Integer ptype;
? ? //pt就是關(guān)系屬性(數(shù)據(jù)庫(kù)沒(méi)pt這一列):
? ? private Protype pt;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public Integer getPtype() {
return ptype;
}
public void setPtype(Integer ptype) {
this.ptype = ptype;
}
public Protype getPt() {
return pt;
}
public void setPt(Protype pt) {
this.pt = pt;
}
}

package com.SSHC.bean;
import java.util.List;
public class Protype {
? ? private Integer id;
? ? private String tname;
? ??
? ? //反向關(guān)聯(lián)屬性
? ? private List<Product>plist;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTname() {
return tname;
}
public void setTname(String tname) {
this.tname = tname;
}
public List<Product> getPlist() {
return plist;
}
public void setPlist(List<Product> plist) {
this.plist = plist;
}
}

package com.SSHC.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.SSHC.dao.ProductDao">
? ? <!-- id必須是唯一的 -->
? ? <resultMap type="Product" id="rmProduct">
? ? ? ? <id property="id" column="ID" />
? ? <result property="pname" column="PNAME"/>
? ? <result property="price" column="PRICE"/>
? ? <result property="ptype" column="PTYPE"/>
? ? <!-- 配置一對(duì)多的關(guān)系映射 -->
? ? <!--
? ? ? ?property就是指的Product對(duì)應(yīng)的唯一的商品類(lèi)型對(duì)象
? ? ? ?column就是指從Product表中查詢(xún)的商品類(lèi)型id取自Product表的哪個(gè)列
? ? ? ?select就是指需要執(zhí)行的商品類(lèi)型的查詢(xún)語(yǔ)句
? ? -->
? ? <association property="pt" column="PTYPE"
? ? ? ? select="com.SSHC.dao.ProtypeDao.selectById" >
? ? ? ? <id property="id" column="ID" />
? ? ? ? <result property="tname" column="TNAME" />
? ? </association>
? ? </resultMap>
? ? <!-- public List<Product>selectAll() -->
? ? <select id="selectAll" resultMap="rmProduct">
? ? ? ? select * from product
? ? </select>
? ? <!-- public List<Product>selectByTid(Integer tid) -->
? ? <select id="selectByTid" resultMap="rmProduct">
? ? ? ? select * from product where ptype = #{tid}
? ? </select>
</mapper>

<?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.SSHC.dao.ProtypeDao">
? ? <!-- id必須是唯一的 -->
? ? <resultMap type="Protype" id="rmProtype">
? ? ? ? <id property="id" column="ID" />
? ? <result property="tname" column="TNAME"/>
? ? <!--
? ? property指的就是Protype屬性中的關(guān)系屬性名?
? ? javaType指的就是plist的類(lèi)型是一個(gè)ArrayList
? ? column指的就是商品類(lèi)型id取自Protype表中的哪個(gè)列
? ? ofType指的就是plist中存放的對(duì)象類(lèi)型
? ? select指的就是需要執(zhí)行的查詢(xún)語(yǔ)句
? ? -->
? ? <collection property="plist" javaType="ArrayList"?
? ? column="ID"
? ? ? ? ofType="Product"?
? ? ? ? select="com.SSHC.dao.ProductDao.selectByTid">
? ? </collection>
? ? </resultMap>
? ? <!-- public Protype selectById(Integer id) -->
? ? <select id="selectById" resultMap="rmProtype">
? ? ? ? select * from protype where id = #{id}
? ? </select>
? ? <!-- public List<Protype>selectAll() -->
? ? <select id="selectAll" resultMap="rmProtype">
? ? ? ? select * from protype
? ? </select>
</mapper>

<?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">
<!-- namespa"src/com/SSHC/bean/UserinfoSqlMap.xml"ce就是空間名,它必須在整個(gè)項(xiàng)目中都是唯一的 -->
<mapper namespace="com.SSHC.dao.UserinfoDao">
? ? <!-- id必須是唯一的 -->
? ? <!-- 創(chuàng)建一個(gè)List<Userinfo>集合,變量名叫rmUserinfo -->
? ? <resultMap type="Userinfo" id="rmUserinfo">
? ? ? ? <!-- userinfo表的主鍵是id -->
? ? ? ? <!-- property指的是Userinfo類(lèi)的屬性名,
? ? ? ? ? ? ?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>
? ? <!-- 可以重復(fù)的使用 -->
? ? <sql id="whereCls">
? ? ? ? where id = #{id}
? ? </sql>
? ? <!-- public List<Userinfo>selectAll() -->
? ? <select id="selectAll" resultMap="rmUserinfo">
? ? ? ? select * from userinfo
? ? </select>
? ??
? ? <!-- public Userinfo selectById(Integer id) -->
? ? <!-- mybatis框架中,占位符?使用#{}來(lái)代替 -->
? ? <select id="selectById" resultMap="rmUserinfo">
? ? ? ? select * from userinfo <include refid="whereCls"></include>
? ? </select>
? ??
? ? <!-- public Integer add(Userinfo u) -->
? ? <!-- 因?yàn)閰?shù)的類(lèi)型是Userinfo,所以占位符中的字符串就必須是對(duì)應(yīng)的屬性名
? ? ? ? ?(屬性名區(qū)分大小寫(xiě)) -->
? ? <insert id="add" parameterType="Userinfo">
? ? ? ? insert into userinfo?
values(seq_userinfo.nextval,
#{act},#{pwd},to_date(#{birth},'yyyy-mm-dd'))
? ? </insert>
? ? <!-- mysql的新增:keyProperty表示自動(dòng)增長(zhǎng)的列的列名叫什么 -->
? ? <insert id="addMySQL" parameterType="Userinfo"
? ? ? ? useGeneratedKeys="true" keyProperty="id">
? ? ? ? insert into userinfo (act,pwd,birth)?
? ? ? ? values(#{act},#{pwd},#{birth})
? ? </insert>
? ??
? ? <!-- public Integer update(Userinfo u) -->
? ? <update id="update" parameterType="Userinfo">
? ? ? ? update userinfo set act = #{act},pwd = #{pwd},birth = to_date(#{birth},'yyyy-mm-dd')
? ? ? ? <include refid="whereCls"></include>
? ? </update>
? ? <!-- public Integer deleteById(Integer id) -->
? ? <delete id="deleteById">
? ? ? ? delete from userinfo <include refid="whereCls"></include>
? ? </delete>
</mapper>

/** CTRL+F:
?* 在使用Mybatis框架前要用的JDBC的代碼,使用Mybatis框架后
就不必使用
下面的內(nèi)容是通過(guò)for的嵌套的遍歷打印出
2個(gè)表的內(nèi)容
?* */
package ZSGC;
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 java.util.Scanner;
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.SSHC.bean.Product;
import com.SSHC.bean.Protype;
import com.SSHC.bean.Userinfo;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
/** 在使用Mybatis框架前要用的JDBC的代碼,使用Mybatis框架后
就不必使用 START*/
//? ? ? ? String drivername = "oracle.jdbc.driver.OracleDriver";
//? ? ? ? //oracle數(shù)據(jù)庫(kù)的默認(rèn)端口號(hào)1521
//? ? ? ? //連接的數(shù)據(jù)庫(kù)名字是orcl數(shù)據(jù)庫(kù)
//? ? ? ? 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();
// }
// }
/** 在使用Mybatis框架前要用的JDBC的代碼,使用Mybatis框架后
就不必使用 END*/
//為了獲取主配置文件的路徑而去聲明一個(gè)path的變量:
String path = "mybatis.xml";
//讀取mybatis.xml中的配置信息,就是讀取四大連接字符串的內(nèi)容:
Reader config;
try {
config = Resources.getResourceAsReader(path);
SqlSessionFactory factory =?
new SqlSessionFactoryBuilder().build(config);
//數(shù)據(jù)庫(kù)的操作對(duì)象session(這個(gè)是自己命名的):
SqlSession session = factory.openSession();
//調(diào)用selectAll
//執(zhí)行路徑就是映射文件的namespace屬性+'.'+id
while(true){
System.out.print("請(qǐng)選擇操作:1.查詢(xún)"
+ "Userinfo表的所有內(nèi)容 "
+ ",2.查詢(xún)ProductDao表的所有內(nèi)容,"
+ "\n 3.嵌套查詢(xún),"
+ "4.UserinfoDao的id查詢(xún),"
+ "\n"
+ "5.Oracle中的UserinfoDao表的運(yùn)用序列的新增,"
+ "\n 6.MySQL中的UserinfoDao表的運(yùn)用自增的新增 ,"
+ "\n 7.UserinfoDao表的修改,"
+ "\n8.根據(jù)ID刪除UserinfoDao表的內(nèi)容");
? ?Scanner input = new Scanner(System.in);
? ?int num = input.nextInt();
? ?System.out.println(num);
? ?String exePath = null;
if(num==1){
exePath = "com.SSHC.dao.UserinfoDao.selectAll";
List<Userinfo>list = session.selectList(exePath);
for(Userinfo u : list) {
System.out.println(u.getId()+" "+u.getAct()+" "+u.getBirth()
+" "+u.getPwd());
}
}
if(num==2){
exePath = "com.SSHC.dao.ProductDao.selectAll";
List<Product>lt = session.selectList(exePath);
for(Product p : lt) {
System.out.println(p.getPname());
Integer ptype = p.getPtype();
//還要進(jìn)行一次查詢(xún)才可以將商品類(lèi)型中文名稱(chēng)查詢(xún)出來(lái)
// Protype pt = session
// .selectOne("com.SSHC.dao.ProtypeDao.selectById",ptype);
// System.out.println(pt.getTname());
System.out.println(p.getPt().getTname());
}
}
if(num==3){
/**下面的內(nèi)容是通過(guò)for的嵌套的遍歷打印出
2個(gè)表的內(nèi)容 START */
exePath = "com.SSHC.dao.ProtypeDao.selectAll";
List<Protype>ls = session.selectList(exePath);
for(Protype pt : ls){
System.out.println(pt.getTname());
List<Product>plist = pt.getPlist();
for(Product p : plist) {
System.out.println(p.getPname());
}
}
/**下面的內(nèi)容是通過(guò)for的嵌套的遍歷打印出
2個(gè)表的內(nèi)容 END */
}
if(num==4){
exePath = "com.SSHC.dao.UserinfoDao.selectById";
Userinfo u = session.selectOne(exePath,1);
System.out.println(u.getAct());
}
if(num==5){
exePath = "com.SSHC.dao.UserinfoDao.add";
Userinfo u = new Userinfo();
u.setAct("詩(shī)書(shū)畫(huà)唱");
u.setPwd("999");
u.setBirth("2009-9-20");
Integer count = session.insert(exePath,u);
//新增修改和刪除一定記得提交事務(wù)
session.commit();
System.out.println(count);
}
if(num==6){
exePath = "com.SSHC.dao.UserinfoDao.addMySQL";
Userinfo u = new Userinfo();
u.setAct("詩(shī)書(shū)畫(huà)唱");
u.setPwd("666");
u.setBirth("1999-7-7");
Integer count = session.insert(exePath,u);
//新增修改和刪除一定記得提交事務(wù)
session.commit();
System.out.println(count);
}
if(num==7){
Userinfo u = new Userinfo();
u.setId(11);
u.setAct("測(cè)試賬號(hào)");
u.setPwd("555555");
u.setBirth("1998-11-29");
exePath = "com.SSHC.dao.UserinfoDao.update";
Integer count = session.update(exePath,u);
//新增修改和刪除一定記得提交事務(wù)
session.commit();
System.out.println(count);
}
if(num==8){
exePath = "com.SSHC.dao.UserinfoDao.deleteById";
Integer count = session.delete(exePath,8);
//新增修改和刪除一定記得提交事務(wù)
session.commit();
System.out.println(count);
}
}} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

oracle_drivername=oracle.jdbc.driver.OracleDriver
oracle_url=jdbc:oracle:thin:@localhost:1521:orcl
oracle_username=X
oracle_password=sshcPwd
mysql_drivername=com.mysql.jdbc.Driver
mysql_url=jdbc:mysql://localhost:3306/j190802?useUnicode=true&characterEncoding=GBK2312
mysql_username=root
mysql_password=1
sqlserver_drivername=com.microsoft.sqlserver.jdbc.SQLServerDriver
sqlserver_url=jdbc:sqlserver://localhost:1433;databaseName=cervs
sqlserver_username=sa
sqlserver_password=

log4j.rootLogger=DEBUG,Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d[%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

<?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>??
? ? <!-- 讀取指定的properties文件中的內(nèi)容 -->
? ? <properties resource="db.properties"></properties>?
? ? <!-- 給類(lèi)取一個(gè)簡(jiǎn)短的別名 -->
? ? <typeAliases>
? ? ? ? <package name="com.SSHC.bean"/>
? ? </typeAliases>
? ? <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_drivername}"/>? ?
? ? ? ? ? ? ? ? <property name="url" value="${oracle_url}"/>?
? ? ? ? ? ? ? ? <property name="username" value="${oracle_username}"/>?
? ? ? ? ? ? ? ? <property name="password" value="${oracle_password}"/>??
? ? ? ? ? ? </dataSource>? ??
? ? ? ? </environment>
? ? ? ? <!-- mysql配置 -->
? ? ? ? <environment id="mysqlConf">
? ? ? ? ? ? <!-- 事務(wù)配置 -->
? ? ? ? ? ? <transactionManager type="JDBC">?
? ? ? ? ? ? ? ? <property name="closeConnection" value="false"/>
? ? ? ? ? ? </transactionManager>?
? ? ? ? ? ? <!-- 配置數(shù)據(jù)源 -->? ? ? ?
? ? ? ? ? ? <dataSource type="POOLED">
? ? ? ? ? ? ? ? <property name="driver" value="${mysql_drivername}"/>? ?
? ? ? ? ? ? ? ? <property name="url" value="${mysql_url}"/>?
? ? ? ? ? ? ? ? <property name="username" value="${mysql_username}"/>?
? ? ? ? ? ? ? ? <property name="password" value="${mysql_password}"/>??
? ? ? ? ? ? </dataSource>
? ? ? ? </environment>
? ? </environments>?
? ? <!-- 實(shí)體映射文件集合 -->?
? ? <mappers>
? ? ? ? <!-- 告訴mybatis框架,映射文件放在什么地方 -->
? ? ? ? <mapper resource="com/SSHC/bean/UserinfoSqlMap.xml"/>
? ? ? ? <mapper resource="com/SSHC/bean/ProductSqlMap.xml"/>
? ? ? ? <mapper resource="com/SSHC/bean/ProtypeSqlMap.xml"/>
? ? </mappers>
</configuration>
