MyBatis入门——基本CRUD代码编写
Tips:请先阅读MyBatis入门——第一个MyBatis项目搭建文章
https://blog.csdn.net/Gauss7/article/details/115264612
一、简介
1. MyBatis
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。
MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
2. CRUD
crud是指在做计算处理时的增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。
crud主要被用在描述软件系统中数据库或者持久层的基本操作功能。
二、代码编写
1. select
- id:就是对应的namespace中的方法名;
- resultType:SQL语句执行的返回值;
- parameter:参数类型。
具体流程:
① 编写接口
//根据ID查询用户
User getUserById(int id);
② 编写对应的mapper中的sql语句
<select id="getUserById" parameterType="int" resultType="com.twy.pojo.User">
select * from user where id = #{id}
</select>
③ 测试
@Test
public void getUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserById(1);
System.out.println(user);
sqlSession.close();
}
2. insert
具体流程:
① 编写接口
//插入一个用户
int addUser(User user);
② 编写对应的mapper中的sql语句
<insert id="addUser" parameterType="com.twy.pojo.User">
insert into user(id, name, age, sex, addr) values (#{id}, #{name}, #{age}, #{sex}, #{addr});
</insert>
③ 测试
@Test
public void addUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int res = mapper.addUser(new User(4, "张三", 20, "M", "珠海"));
//测试插入成功
if (res > 0){
System.out.println("插入成功!");
}
//提交事务
sqlSession.commit();
sqlSession.close();
}
3. update
具体流程:
① 编写接口
//修改用户
int updateUser(User user);
② 编写对应的mapper中的sql语句
<update id="updateUser" parameterType="com.twy.pojo.User">
update user set name=#{name}, age=#{age}, sex=#{sex}, addr=#{addr} where id=#{id}
</update>
③ 测试
//修改用户
@Test
public void updateUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.updateUser(new User(4,"李四", 21, "M", "珠海"));
sqlSession.commit();
sqlSession.close();
}
4. delete
具体流程:
① 编写接口
//删除用户
int deleteUser(int id);
② 编写对应的mapper中的sql语句
<delete id="deleteUser" parameterType="int">
delete from user where id=#{id}
</delete>
③ 测试
//删除用户
@Test
public void deleteUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(4);
sqlSession.commit();
sqlSession.close();
}
三、注意点
1. namespace
namespace中的包名要和Dao/mapper接口的包名一致。
2. 增删改需要提交事务
sqlSession.commit();