日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MyBatis映射文件1(增删改、insert获取自增主键值)

發布時間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MyBatis映射文件1(增删改、insert获取自增主键值) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

增刪改

????Mybatis為我們提供了<insert>、<update>、<delete>標簽來對應增刪改操作

在接口中寫增刪改的抽象方法

  • void?addEmp(Employee?e);??
  • void?updateEmp(Employee?e);??
  • void?deleteEmp(Employee?e);??
  • 在映射文件中寫sql語句

  • <insert?id="addEmp"?parameterType="com.figsprite.bean.Employee">??
  • ????insert?into?tb_employee(last_name,email,gender)??
  • ????values(#{lastName},#{email},#{gender})??
  • </insert>??
  • <update?id="updateEmp"?parameterType="com.figsprite.bean.Employee">??
  • ????update?tb_empolyee??
  • ??????set?last_name=#{lastName},email=#{email},gender=#{genser}??
  • ??????where?id=#{id}??
  • </update>??
  • <delete?id="deleteEmp"?parameterType="com.figsprite.bean.Employee">??
  • ????delete?from?tb_employee?where?id=#{id}??
  • </delete>
  • 顧名思義,parameterType就是參數類型,而我們通過#{字段名}的方式來傳遞對象中的屬性,resultType允許使用String、Boolean等基本類型包作為返回值

    測試

  • @Test??
  • ????public?void?test3()?throws?IOException{??
  • ????????SqlSessionFactory?sqlSessionFactory?=?getSqlSessionFactory();??
  • ????????SqlSession?openSession?=?sqlSessionFactory.openSession();??
  • ????????Employee?e?=?new?Employee();??
  • ????????e.setGender("1");??
  • ????????e.setLastName("Hello");??
  • ????????e.setEmail("qwewqeqw");??
  • ????????e.toString();??
  • ????????try?{??
  • ????????????EmployeeMapper?mapper?=?openSession.getMapper(EmployeeMapper.class);??
  • ????????????mapper.addEmp(e);??
  • ????????????openSession.commit();??
  • ????????}finally?{??
  • ????????????openSession.close();??
  • ????????}??
  • ????}??
  • ?

  • @Test??
  • ????public?void?test4()?throws?IOException{??
  • ????????SqlSessionFactory?sqlSessionFactory?=?getSqlSessionFactory();??
  • ????????SqlSession?openSession?=?sqlSessionFactory.openSession();??
  • ????????Employee?e?=?new?Employee();??
  • ????????e.setId(1);??
  • ????????e.setGender("0");??
  • ????????e.setEmail("qwq");??
  • ????????e.setLastName("Jerry");??
  • ????????try?{??
  • ????????????EmployeeMapper?mapper?=?openSession.getMapper(EmployeeMapper.class);??
  • ????????????mapper.updateEmp(e);??
  • ????????????openSession.commit();??
  • ????????}finally?{??
  • ????????????openSession.close();??
  • ????????}??
  • ????}??
  • 這里我們要自動提交數據,我們也可以選擇SqlSession openSession = sqlSessionFactory.openSession(true); 這樣就不用手動提交了。

  • @Test??
  • public?void?test5?()throws?IOException{??
  • ????SqlSessionFactory?sqlSessionFactory?=?getSqlSessionFactory();??
  • ????SqlSession?openSession?=?sqlSessionFactory.openSession();??
  • ????Employee?e?=?new?Employee();??
  • ????e.setId(1);??
  • ????try{??
  • ????????EmployeeMapper?mapper?=?openSession.getMapper(EmployeeMapper.class);??
  • ????????mapper.deleteEmp(e);??
  • ????????openSession.commit();??
  • ????}finally?{??
  • ????????openSession.close();??
  • ????}??
  • }?
  • insert獲取自增主鍵值

    ????我們在上面的例子中可以看到,我們插入時候并沒有指定id,因為我們id是通過自增方式,JDBC里面提供了這樣的方法

    ResultSet getGeneratedKeys()

    MyBatis也支持,當然它的底層,其實就是這個函數,我們僅需在<insert>標簽里添加屬性即可

    useGeneratedKeys="true"

    使用自增主鍵獲取主鍵值策略,接著用keyProperty這個屬性,指定對應主鍵屬性,也就是Mybatis獲取到逐漸使以后將它賦給JavaBean的對應屬性

  • <insert?id="addEmp"?parameterType="com.figsprite.bean.Employee"??
  • ????useGeneratedKeys="true"?keyProperty="id">??
  • 讓我們做個測試

    @Test??

    public?void?test3()?throws?IOException{??

    ????SqlSessionFactory?sqlSessionFactory?=?getSqlSessionFactory();??

    ????SqlSession?openSession?=?sqlSessionFactory.openSession();??

    ????Employee?e?=?new?Employee();??

    ????e.setGender("1");??

    ????e.setLastName("Hello");??

    ????e.setEmail("qwewqeqw");??

    ????e.toString();??

    ????try?{??

    ????????EmployeeMapper?mapper?=?openSession.getMapper(EmployeeMapper.class);??

    ????????mapper.addEmp(e);??

    ????????openSession.commit();??

    ????????System.out.println(e.getId());??

    ????}finally?{??

    ????????openSession.close();??

    ????}??

    }?

    如果我們沒有寫useGenerateKeys和KeyProperty,那么上述代碼打印出來的將會是null

    ?

    轉載于:https://www.cnblogs.com/figsprite/p/10733000.html

    總結

    以上是生活随笔為你收集整理的MyBatis映射文件1(增删改、insert获取自增主键值)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。