Mybatis实现增删改查-mybatis的核心
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();
还没有评论,来说两句吧...