H_02mybatis入門

mybatis的概念

概念:一個持久層框架

  • 作用:ORM將sql語句映射成實體類

  • 特點:巧靈活

  • 半自動化,面向sql

  • 使用與中小型項目的開發

1.創建mybatis-config.xml文件
配置文件(xml,全局設置、數據庫連接信息等)

<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/bank?useUnicode=true&characterEncoding=utf-8"/>
        <property name="username" value="root"/>
        <property name="password" value=""/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="UserMapper.xml"/>//映射對應的文件路徑名
  </mappers>
</configuration>

2.創建映射文件UserMapper.xml


<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

  <mapper namespace="user">
  //查
    <select id="selectUser" resultType="com.zyk.entity.User">
        select * from user where uid=1;
    </select>

    //改
    <update id="updateUserById" parameterType="com.zyk.entity.User">
        UPDATE user set username="張三" where uid=1;
    </update>
    //增
    <insert id="insertUser" parameterType="com.zyk.entity.User">
        insert into user (username,password)value("趙六","123");
    </insert>
    //刪
    <delete id="deleteUserById" parameterType="com.zyk.entity.User">
        DELETE from user where uid = 10;
    </delete>

        //當類屬性與數據庫字段完全一致時可以不寫
        //不一致時就在column屬性中寫上數據庫中對應得字段名
    <resultMap id="userResultMap" type="com.zyk.entity.User">
        <result property="uid" column="uid"></result>
        <result property="username" column="username"></result>
        <result property="password" column="password"></result>
        <result property="utypeId" column="utypeId"></result>
        <result property="money" column="money"></result>

    </resultMap>
  </mapper>

其他一些屬性:

       <!-- 連接初始值,連接池啟動時創建的連接數量的初始值 -->
       <property name="initialSize" value="10" />
       <!-- 連接池的最大值,同一時間可以從池分配的最多連接數量,0時無限制 -->
       <property name="maxActive" value="100" />
       <!-- 最大空閑值.當經過一個高峰時間后,連接池可以慢慢將已經用不到的連接慢慢釋放一部分,一直減少到maxIdle為止 ,0時無限制-->
       <property name="maxIdle" value="0" />
       <!-- 最小空閑值.當空閑的連接數少于閥值時,連接池就會預申請去一些連接,以免洪峰來時來不及申請 -->
       <property name="minIdle" value="${minIdle}" />
       <!-- 是否對已備語句進行池管理(布爾值),是否對PreparedStatement進行緩存 -->
       <property name="poolPreparedStatements" value="true" />
       <!-- 是否對sql進行自動提交 -->
       <property name="defaultAutoCommit" value="true" />

實例:

public class MyTest {
    public static void main(String[] args) throws IOException {
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");//獲取主配置文件
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);//創建工廠對象
        //SqlSessionFactiory 作用域最好在應用作用域---一旦創建就應該在應用的運行期間一直存在
        //SqlSessionFactoryBuilder 作用域最好在方法作用域(局部方法變量)--一但創建了SqlSessionFactiory之后就再也用不倒了

        SqlSession sqlSession = factory.openSession();//獲取SqlSession(相當于Connection)
        int updateUserById = sqlSession.update("updateUserById");//修改
        Object obj = sqlSession.selectOne("selectUserById");//查
        int insertUser = sqlSession.insert("insertUser");//增
        int del = sqlSession.delete("deleteUserById");//刪
        sqlSession.commit();//提交 不提交數據庫數據不會發生改變
        sqlSession.close();//使用完一次必須關閉,一次請求
        //sqlsession是有生命周期,可以理解對應一次數據庫事務,基本可以理解為一次事務對應一個sqlsession。
    }
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,563評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,694評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,672評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,965評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,690評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,019評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,013評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,188評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,718評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,438評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,667評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,149評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,845評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,252評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,590評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,384評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容