如何快速学习使用mybatis以及总结
生活随笔
收集整理的這篇文章主要介紹了
如何快速学习使用mybatis以及总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
第一步 讓我來介紹下初學者怎么快速更好的使用mybatis這個框架?
使用mybatis的話,每個Dao就對于一個相應的xml文件,我來給個例子個大家看,先要配置好環境。在application.xml里面 <!-- c3p0 connection pool configuration 數據庫的配置 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close"><property name="driverClass" value="${jdbc.driverClass}" /> <!-- 數據庫驅動 --><property name="jdbcUrl" value="${jdbc.url}" /> <!-- 連接URL串 --><property name="user" value="${jdbc.user}" /> <!-- 連接用戶名 --><property name="password" value="${jdbc.password}" /> <!-- 連接密碼 --><property name="initialPoolSize" value="${jdbc.initialPoolSize}" /> <!-- 初始化連接池時連接數量為5個 --><property name="minPoolSize" value="${jdbc.minPoolSize}" /> <!-- 允許最小連接數量為5個 --><property name="maxPoolSize" value="${jdbc.maxPoolSize}" /> <!-- 允許最大連接數量為20個 --><property name="numHelperThreads" value="20" /> <!-- 允許最大連接數量為20個 --><property name="maxStatements" value="100" /> <!-- 允許連接池最大生成100個PreparedStatement對象 --><property name="maxIdleTime" value="3600" /> <!-- 連接有效時間,連接超過3600秒未使用,則該連接丟棄 --><property name="acquireIncrement" value="2" /> <!-- 連接用完時,一次產生的新連接步進值為2 --><property name="acquireRetryAttempts" value="5" /> <!-- 獲取連接失敗后再嘗試10次,再失敗則返回DAOException異常 --><property name="acquireRetryDelay" value="600" /> <!-- 獲取下一次連接時最短間隔600毫秒,有助于提高性能 --><property name="testConnectionOnCheckin" value="true" /> <!-- 檢查連接的有效性,此處小弟不是很懂什么意思 --><property name="idleConnectionTestPeriod" value="1200" /> <!-- 每個1200秒檢查連接對象狀態 --><property name="checkoutTimeout" value="10000" /> <!-- 獲取新連接的超時時間為10000毫秒 --></bean><!-- 創建SqlSessionFactory,同時指定數據源 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /></bean><!-- 配置事務管理器 --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean><!--創建數據映射器,數據映射器必須為接口 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="annotationClass" value="org.springframework.stereotype.Repository" /><property name="basePackage" value="com.shishuo.studio.dao" /></bean>然后我在dao層寫個類 ? package com.shishuo.studio.dao; import java.util.List; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import com.shishuo.studio.entity.TagSkill; import com.shishuo.studio.entity.vo.TagSkillVo; @Repository public interface TagSkillDao {/*** 增加* * @param tagSkill* @return*/public int addTagSkill(TagSkill tagSkill);/*** 刪除* * @param skillId* @return*/public int deleteTagSkill(@Param("skillId") long skillId);/*** * 通過SkillId修改名字*/public int updateNameBySkillId(@Param("skillId") long skillId,@Param("name") String name);/*** 通過Id查詢* * @param skillId* @return*/public TagSkillVo getTagSkillByTagId(@Param("skillId") long skillId);/*** 通過名字查詢* * @param name* @param rows* @return*/public TagSkillVo getTagSkillByName(@Param("name") String name);/*** 通過userId得到所有所有自己的技能* * @param userId* @return*/public List<TagSkillVo> getTagSkillListByUserId(@Param("userId") long userId); } 然后再就是對應的XML文件 TagSkill.xml <?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"><mapper namespace="com.shishuo.studio.dao.TagSkillDao"><!-- ############################## --><!-- ###### 增加 ###### --><!-- ############################## --><insert id="addTagSkill" parameterType="com.shishuo.studio.entity.TagSkill">insert into tag_skill(name,content,status,createTime)values(#{name},#{content},#{status},#{createTime})<selectKey resultType="long" keyProperty="skillId">SELECT LAST_INSERT_ID() </selectKey></insert><!-- ############################## --><!-- ###### 刪除 ###### --><!-- ############################## --><delete id="deleteTagSkill" parameterType="Long">delete from tag_skill where skillId=#{skillId}</delete><!-- ############################## --><!-- ###### 修改 ###### --><!-- ############################## --><update id="updateNameBySkillId">update tag_skill set name=#{name} where skillId=#{skillId}</update><!-- ############################## --><!-- ###### 查詢 ###### --><!-- ############################## --><select id="getTagSkillByTagId" parameterType="Long"resultType="com.shishuo.studio.entity.vo.TagSkillVo">select * from tag_skill where skillId=#{skillId}</select><select id="getTagSkillByName" resultType="com.shishuo.studio.entity.vo.TagSkillVo">select * from tag_skill where name=#{name} </select><select id="getTagSkillListByUserId" resultType="com.shishuo.studio.entity.vo.TagSkillVo">SELECT tags.skillId,tags.name,tags.content,tags.status,tags.createTime FROM shishuo.tag_skill tags,shishuo.teacher_skill teas where tags.skillId=teas.tagSkillId and userId=#{userId};</select> </mapper> 使用經驗
1、要記得在TagSkillDao這個類前添加@Repository這個注解,實體的意思
2、你發現了沒有,在xml文件里面的id在那個dao層類里面對應的方法名,然后就是在那個XML文件里面,resultType這個參數里面和對應方法里面的返回數據類型想匹配,記住,如果方法返回是int,記得寫Internet,是包裝類型,不然會出錯的,如果是返回對象的話,或者返回一個對象的集合,resultType里面就要寫這個對象,如果是沒有返回的可以不需要寫,在dao層里面的方法需要傳參數的話,需要寫parameterType,但是一定要記住是包裝類型,不是基本數據類型,在dao層里面的方法如果是要增加,就傳一個對象過來,不需要寫注解,如果是通過Id刪除的話,比如public int deleteTagSkill(@Param("skillId") long skillId);我們在xml文件里面
? <delete id="deleteTagSkill" parameterType="Long">delete from tag_skill where skillId=#{skillId} </delete> public int deleteTagSkill(@Param("skillId") long skillId); ?這個#{skillId}就相當于我們函數里面的參數skillId,其它的增刪改查都類似。
這些都是一些基本的用法,不知道講明白了沒有,如果不懂的加我QQ:2657607916
?
總結
以上是生活随笔為你收集整理的如何快速学习使用mybatis以及总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android之玩转选项卡(TabHos
- 下一篇: 如何快速学习freemarker以及使用