Mybatis入門(二) 使用mydatis進行增刪改操作
阿新 • • 發佈:2021-08-29
1,使用idea建立一個maven專案,匯入以下依賴,分別為資料庫依賴,mybatis依賴,單元測試,註解工具包(後兩個依賴可以不匯入)。
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.10</version> </dependency>
2,在資料庫中建立user表,以及建立一個對應的類(該類需要屬性私有,有無參構造,get/set方法,可使用@data註解),如下:
3,編寫mapper標籤中配置的介面。分別對應增刪改
public interface userDao {
public int insertUser(user user);
public void updateUser(user user);
public void deletsUser(int id);
}
4,編寫XML配置檔案:編寫sql語句,以及配置第三步編寫的類,方法
mapper裡namespace對應是第三步的介面類,包含了三個標籤insert,update,delete,分別對應sql中增改刪,每個標籤中的id對應了這個介面的方法,
paramterType為傳入引數,可以傳入一個具體類,sql語句中使用#{}來代替展位符,#{id}對應了user類中id屬性!刪除的例子中,paramterType引數為int,#{id},id對應的呼叫改方法時傳入的引數!
<mapper namespace="com.hys.mybatis.dao.userDao">
<insert id="insertUser" parameterType="com.hys.mybatis.pojo.user">
insert into school.user (id,name,pwd) values (#{id},#{name},#{pwd})
</insert>
<update id="updateUser" parameterType="com.hys.mybatis.pojo.user">
update school.user set pwd=#{pwd} where id=#{id}
</update>
<delete id="deleteUser" parameterType="int">
delete from school.user where id=#{id}
</delete>
</mapper>
5 程式碼測試,其中sqlsession的獲取,可以看我第一篇文章Mybatis入門(一),sqlsession這個物件獲取是固定的,把獲取的程式碼寫在一個工具類,省得每次寫
sqlsession獲取上面所寫的mapper,然後呼叫具體方法進行測試。除了查詢,增刪改都需要進行事務!!!!,需要提交!!!
@Test
public void insertUser(){
SqlSession sqlSession = mybatisUtil.getSqlSession();
userDao mapper = sqlSession.getMapper(userDao.class);
mapper.insertUser(new user(7, "趙六", "123456"));
sqlSession.commit();
sqlSession.close();
}
@Test
public void updateUser(){
SqlSession sqlSession = mybatisUtil.getSqlSession();
userDao mapper = sqlSession.getMapper(userDao.class);
mapper.updateUser(new user(2,"88888","8888888"));
sqlSession.commit();
sqlSession.close();
}
@Test
public void deleteUser(){
SqlSession sqlSession = mybatisUtil.getSqlSession();
userDao mapper = sqlSession.getMapper(userDao.class);
mapper.deleteUser(2);
sqlSession.commit();
sqlSession.close();
}