mybatis增刪改查

聲明:使用mybatis,自己不須要再寫dao的實現類,此處爲了保持三層架構的完整性,遂添加了接口dao的實現類java

1.增長
  • sql語句–>有默認返回類型,通常是int(表示影響行數的意思)
      
<!-- 新增班級 -->
<insert id="addClass" parameterType="Clazz">
  <!-- 使用序列 -->
  <selectKey keyProperty="cid" order="BEFORE" resultType="int">
    select seq_class1.nextval from dual
  </selectKey>
  insert into class1 values(#{cid},#{cname})
</insert>
  • 對應的方法
/** * 新增班級,此處返回值類型int/void 均可以 */
public int addClass(Clazz clazz) {
  SqlSession session = super.getSqlSession();
  return session.insert("com.dao.IClassDao.addClass",clazz);
}
2.修改

進行修改,需分兩步進行sql

2.1 步驟一:根據要修改實體的id,將該實體全部信息從數據庫中查詢出來

  • sql語句–>需指定返回值類型
<!-- 根據id獲取班級信息 -->
<select id="getClassById" parameterType="int" resultType="Clazz">
  select * from class1 where cId=#{cid}
</select>
  • 對應的方法
/** * 修改前得先獲取該班級的全部信息 */
public Clazz getClassById(int cId) {
  SqlSession session = super.getSqlSession();
  return session.selectOne("com.dao.IClassDao.getClassById",cId);
}
2.2 步驟二:該修改後的實體從新插入數據庫中
  • sql語句–>需指定參數類型,默認返回類型爲int,不用在sql語句聲明返回值,不然報錯
<!-- 修改班級信息 -->
<update id="updateClass" parameterType="Clazz">
  update class1 set cName=#{cname} where cId=#{cid}    
</update>
  • 對應的方法
/** * 修改班級信息,此處返回值類型int/void 均可以 */
public int updateClass(Clazz clazz) {
  SqlSession session = super.getSqlSession();
  return session.update("com.dao.IClassDao.updateClass",clazz);
}
3.查詢

  查詢主要是按查詢條件進行查詢:通常分爲根據id查詢;根據name進行查詢(這裏表中的字段name能夠重複);組合查詢;無查詢條件查詢
  類型一:根據id進行查詢
    例子同修改的步驟一
  類型二:根據name進行查詢
- sql語句–>需指定參數類型和返回值類型數據庫

<!-- 根據姓名獲取學生信息 -->
<select id="getStudentsBysName" parameterType="String" resultType="Student">
  select * from student1 where sName=#{sname}
</select>
  • 對應的方法
/** * 根據姓名獲取學生信息 */
public List<Student> getStudentsBysName(String sName) {
  SqlSession session = super.getSqlSession();
  return session.selectList("com.dao.IStudentDao.getStudentsBysName",sName);
}

小結:類型一和類型二的區別在於:方法的返回值不一樣,前者的返回值是惟一的,後者的返回值通常是一個集合
類型三:組合查詢
    需指定映射關係及類型–>map的鍵和值的名字保持一致,並和實體類的屬性保持一致,不然運行時會報錯session

<parameterMap type="java.util.Map" id="paramUserMap">
  <parameter property="userName" javaType="String"></parameter>
  <parameter property="userPass" javaType="String"></parameter>
</parameterMap>
  • sql語句–>需指定參數類型和返回值類型
<!-- id的值對應該類中的方法名 -->
<select id="getUsersByNamePass" parameterMap="paramUserMap" resultType="User">
  select * from user1 where 1=1
  <if test="userName != null and userName != ‘‘">
    and userName=#{userName}
  </if>
  <if test="userPass != null and userPass != ‘‘ ">
  and userPass=#{userPass}
  </if>
</select>
  • 對應的方法–>傳入的是一個map集合
/** * 組合查詢:根據用戶名和身份查詢用戶信息 */
public List<User> getUsersByNamePass(Map user) {
  SqlSession session = super.getSqlSession();
  return session.selectList("com.dao.IUserDao.getUsersByNamePass", user);
}

類型四:獲取表中全部的數據
- sql語句–>需指定返回值類型mybatis

<!-- 獲取全部的班級信息 -->
<select id="getAllClasses" resultType="Clazz">
  select * from class1
</select>
  • 對應的方法
/** * 獲取全部的班級 */
public List<Clazz> getAllClasses() {
  SqlSession session = super.getSqlSession();
  return session.selectList("com.dao.IClassDao.getAllClasses");
}
4.刪除

  刪除分爲:單條數據刪除和多條數據刪除架構

4.1 類型一:單條數據刪除

  • sql語句–>需指定參數類型(默認返回int類型)
<!-- 刪除學生信息 -->
<delete id="deleteStudentBysId" parameterType="int">
  delete from student1 where sId=#{sid}
</delete>
  • 對應的方法
/** * 刪除學生信息 */
public int deleteStudentBysId(int sId) { 
  SqlSession session = super.getSqlSession();
  return session.delete("com.dao.IStudentDao.deleteStudentBysId", sId);
}

4.2 類型二:刪除多條數據–未測試

  • sql語句–>需指定參數類型(默認返回int類型)
<delete id = "delete" parameterType = "java.util.List"> 
  delete from tests where id in 
  <foreach collection="list" item = "item" open="(" separator="," close=")">
    #{item} 
  </foreach> 
</delete>

歡迎加入214821336!!!

相關文章
相關標籤/搜索