CRUD(增刪改查)–mybatis的核心
搭建好mybatis環境以後可以實現對數據庫的增刪改查等操作
結構目錄
1.namespace
namespace中的包名要和Dao/mapper接口中的包名一致!
2.過程
- id:就是對應的namespace中的方法名
- parameterType:參數類型
- resultType:sql語句執行的返回值
1.編寫接口
package com.superman.dao;
import com.superman.pojo.User;
import java.util.List;
public interface UserMapper {
//查詢全部用戶
List<User> getUserList();
//根據用戶id查詢
User getUserById(int id);
//增加一個用戶
int addUser(User user);
//修改一個用戶
int updateUser(User user);
//刪除一個用戶
int deleteUser(int id);
}
2.填寫對應的mapper中的sql語句
<?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">
<!--namespace=綁定一個對應的Dao/Mapper接口-->
<mapper namespace="com.superman.dao.UserMapper">
<!--select查詢語句-->
<select id="getUserList" resultType="com.superman.pojo.User">
select * from mybatis.user;
</select>
<select id="getUserById" resultType="com.superman.pojo.User" parameterType="int">
select * from mybatis.user where id=#{id};
</select>
<!--對象中的屬性,可以直接取出來-->
<insert id="addUser" parameterType="com.superman.pojo.User">
insert into mybatis.user(id,username,birthday,sex,address) values (#{id},#{username},#{birthday},#{sex},#{address});
</insert>
<!--修改數據庫中的某個參數-->
<update id="updateUser" parameterType="com.superman.pojo.User">
update mybatis.user set username=#{username},address=#{address},birthday=#{birthday} where id=#{id};
</update>
<!--刪除數據庫中的一個用戶-->
<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id=#{id};
</delete>
</mapper>
3.測試
package com.superman.dao;
import com.superman.pojo.User;
import com.superman.utils.MybatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class UserDaoTest {
@Test
public void test() {
//第一步:獲得sqlsession對象
SqlSession sqlSession = MybatisUtil.getSqlSession();
//方式一:執行SQL
UserMapper mapper=sqlSession.getMapper(UserMapper.class);
List<User> userList=mapper.getUserList();
for (User user : userList) {
System.out.println(user);
}
//關閉SqlSession
sqlSession.close();
}
@Test
public void getUserById(){
SqlSession sqlSession=MybatisUtil.getSqlSession();
UserMapper mapper=sqlSession.getMapper(UserMapper.class);
User user=mapper.getUserById(1);
System.out.println(user);
sqlSession.close();
}
@Test
public void addUser(){
SqlSession sqlSession=MybatisUtil.getSqlSession();
UserMapper mapper=sqlSession.getMapper(UserMapper.class);
mapper.addUser(new User(5,"caiji","20201005","男","北京"));
List<User> userList=mapper.getUserList();
for (User user : userList) {
System.out.println(user);
}
//提交事務,負責數據庫將不會發生變化,即使輸出打印時顯示插入成功
sqlSession.commit();
sqlSession.close();
}
@Test
public void updateUser(){
SqlSession sqlSession=MybatisUtil.getSqlSession();
UserMapper mapper=sqlSession.getMapper(UserMapper.class);
mapper.updateUser(new User(5,"zhaoxuan","20201515","女","太谷"));
sqlSession.commit();
sqlSession.close();
}
@Test
public void deleteUser(){
SqlSession sqlSession=MybatisUtil.getSqlSession();
UserMapper mapper=sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(5);
sqlSession.commit();
sqlSession.close();
}
}
注意點:
執行sql語句時,增刪改必須要提交事務,sqlSession.commit();,否則無法對數據庫產生語句效果
代碼中沒有使用mybatis中建議的代碼格式,但是每次都需要在最後加上sqlSession.close();