生活随笔
收集整理的這篇文章主要介紹了
MyBatis映射文件1(增删改、insert获取自增主键值)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
增刪改
????Mybatis為我們提供了<insert>、<update>、<delete>標簽來對應(yīng)增刪改操作
在接口中寫增刪改的抽象方法
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就是參數(shù)類型,而我們通過#{字段名}的方式來傳遞對象中的屬性,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();?? ????????}?? ????}?? 這里我們要自動提交數(shù)據(jù),我們也可以選擇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也支持,當然它的底層,其實就是這個函數(shù),我們僅需在<insert>標簽里添加屬性即可
useGeneratedKeys="true"
使用自增主鍵獲取主鍵值策略,接著用keyProperty這個屬性,指定對應(yīng)主鍵屬性,也就是Mybatis獲取到逐漸使以后將它賦給JavaBean的對應(yīng)屬性
<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
?
轉(zhuǎn)載于:https://www.cnblogs.com/figsprite/p/10733000.html
總結(jié)
以上是生活随笔為你收集整理的MyBatis映射文件1(增删改、insert获取自增主键值)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。