MyBatis 是一个持久层框架,其作用是把 Java 对象和数据库表记录相互转换。当你使用
insert语句插入数据时,通常会传入一个 Java 实体类对象,MyBatis 会把实体类对象里的字段值和 SQL 语句里的占位符#{}进行匹配,MyBatis 会自动把User对象的这些字段值填充到 SQL 语句里。
接口 UserMapper.java:
package com.edward.dao;
import com.edward.pojo.User;
import java.util.List;
public interface UserMapper {
// 查询全部用户
List<User> getUserList();
// 查询具体用户(根据ID)
User getUserById(@Param("userId") int id);
// 插入用户
int addUser(User user);
// 修改用户
int updateUser(User user);
// 删除用户
int deleteUser(@Param("userId") int id);
}
接口实现文件 UserMapper.xml:
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace 绑定一个对应的Mapper接口-->
<mapper namespace="com.edward.dao.UserMapper">
<select id="getUserList" resultType="com.edward.pojo.User">
select * from first_sql.user
</select>
<select id="getUserById" parameterType="int" resultType="com.edward.pojo.User">
select * from first_sql.user where id = #{userId}
</select>
<insert id="addUser" parameterType="com.edward.pojo.User">
insert into first_sql.user (id, name, age, salary) values (#{userId}, #{name}, #{age}, #{salary})
</insert>
<update id="updateUser" parameterType="com.edward.pojo.User">
update first_sql.user set name=#{name}, age=#{age} where id=#{userId}
</update>
<delete id="deleteUser" parameterType="int">
delete from first_sql.user where id= #{userId}
</delete>
</mapper>
MyTest 测试类:
import com.edward.dao.UserMapper;
import com.edward.pojo.User;
import com.edward.utils.MybatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class MyTest {
@Test
public void getUser() {
SqlSession sqlSession = MybatisUtil.getSqlSession();
try {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = userMapper.getUserList();
for (User user : userList) {
System.out.println(user);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭 SqlSession
sqlSession.close();
}
}
@Test
public void getUserByid() {
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.getUserById(1);
System.out.println(user);
sqlSession.close();
}
@Test
public void addUser() {
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
int res = userMapper.addUser(new User(5, "小李子", 28, 10000));
if (res > 0) {
System.out.println("插入成功");
}
// 提交事务
sqlSession.commit();
sqlSession.close();
}
@Test
public void updateUser() {
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
int res = userMapper.updateUser(new User(3, "赵四", 37, 1000));
if (res > 0) {
System.out.println("修改成功");
}
// 提交事务
sqlSession.commit();
sqlSession.close();
}
@Test
public void deleteUser() {
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
int res = userMapper.deleteUser(3);
if (res > 0) {
System.out.println("删除成功");
}
// 提交事务
sqlSession.commit();
sqlSession.close();
}
}
如果实体类或数据库中的参数过多,应当使用 Map:

本文介绍了一个使用MyBatis实现用户增删改查功能的Java示例。包括定义UserMapper接口及其XML配置文件,通过MyTest类进行单元测试验证功能正确性。
1573

被折叠的 条评论
为什么被折叠?



