一、查詢列表操作
在前面一篇文章中我們講到了使用接口的方式編程,並實現了一個簡單的查詢操作,當只需要查詢一條指定記錄時,使用該方式查詢就可以。此處,只講解關於mybatis查詢一個列表時的操作,此時數據庫中的數據:
首先,在UserMapper接口中添加queryUserList方法
:
public List<User> queryUserList(String name)
在User.xml配置文件中定義一個resultMap標籤,在select標籤中引入:
<resultMap type="User" id="userResultMap">
<id column="id" property="id"/>
<!-- 當數據庫列名和對象屬性值相同時,不指定屬性映射關係也是可以的 -->
<result column="name" property="name"/>
<result column="sex" property="sex"/>
<result column="address" property="address"/></resultMap>
<!-- 注意:select標籤中不存在 resultType而是用resultMap,resultMap值與resultMap標籤的id值相匹配-->
<select id="queryUserList" parameterType="string" resultMap="userResultMap">
select * from t_user where name like #{name}
</select>
測試代碼:
public void testQueryList(){
SqlSession session = sqlSessionFactory.openSession();
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
List<User> userList = userMapper.queryUserList("%小%");
for (User user : userList) {
System.out.println(user);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(session != null){
session.close();
}
}
}
執行結果:
二、添加操作
在UserMapper接口中添加方法:
public void addUser(User user);
在User.xml文件中配置:
<insert id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
insert into t_user(name,sex,address) values(#{name},#{sex},#{address})
</insert>
注:id和parameterType分別對應的是UserMapper中addUser(User user)的方法名和參數類型。以#{name}的形式引用User參數中的name屬性,mabatis通過反射機制讀取User的name屬性,#{name}中name大小寫敏感。
useGeneratedKeys設置 爲”true”表明要MyBatis獲取由數據庫自動生成的主鍵;keyProperty=”id”指定把獲取到的主鍵值注入到Student的id屬性。
測試代碼:
public void testAdd(){
SqlSession session = sqlSessionFactory.openSession();
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
User user = new User();
user.setName("小強");
user.setSex('男');
user.setAddress("四川德陽");
userMapper.addUser(user);
session.commit();
System.out.println(user);
} catch (Exception e) {
e.printStackTrace();
}finally{
if(session!=null){
session.close();
}
}
}
執行結果:
數據庫數據:
注:在執行保存操作後需要提交事務,否則數據將不會保存到數據庫。由執行結果可以看出,在執行保存操作後輸出user對象,得到了保存到數據庫後該條數據的id。
三、更新操作
在UserMapper接口中添加方法:
public void updateUser(User user);
配置User.xml文件:
<update id="updateUser" parameterType="User">
update t_user set name=#{name},sex=#{sex},address=#{address} where id=#{id}
</update>
測試代碼:
public void testUpdate(){
SqlSession session = sqlSessionFactory.openSession();
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
User user = userMapper.selectUserById(4);
user.setAddress("四川綿陽");
userMapper.updateUser(user);
session.commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
if(session!=null){
session.close();
}
}
}
運行結果(數據庫中小強的address屬性原本是四川德陽):
四、刪除操作
在UserMapper接口中添加方法:
public void deleteUser(int id);
配置User.xml文件:
<delete id="deleteUser" parameterType="int">
delete from t_user where id=#{id}
</delete>
測試代碼:
public void testDelete(){
SqlSession session = sqlSessionFactory.openSession();
try {
UserMapper userMapper = session.getMapper(UserMapper.class);
userMapper.deleteUser(4);
session.commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
if(session!=null){
session.close();
}
}
}
執行結果(id爲4的小強的數據被刪除,數據庫只剩兩條數據):
至此,mybatis實現對數據庫簡單的增刪改查操作就算完成了!