聲明:使用mybatis,自己不須要再寫dao的實現類,此處爲了保持三層架構的完整性,遂添加了接口dao的實現類java
1.增長<!-- 新增班級 --> <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
<!-- 根據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 步驟二:該修改後的實體從新插入數據庫中
<!-- 修改班級信息 --> <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>
<!-- 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>
/** * 組合查詢:根據用戶名和身份查詢用戶信息 */ 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.刪除
刪除分爲:單條數據刪除和多條數據刪除架構
<!-- 刪除學生信息 --> <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); }
<delete id = "delete" parameterType = "java.util.List"> delete from tests where id in <foreach collection="list" item = "item" open="(" separator="," close=")"> #{item} </foreach> </delete>