这里就不再多说,直接进入增删改查配置。
新增数据
创建 User 对象的数据访问层接口,代码如下:
package com.hukanmasheng.mapper;
import com.hukanmasheng.pojo.User;
/**
* User 数据访问层接口
*/
public interface UserMapper {
/**
* 新增
* @param user
* @return
*/
void addUser(User user);
}
新增一个 addUser 方法,用于新增对象。
新增 UserMapper 接口对应的 UserMapper.xml 配置文件。放置在 resources 目录下创建的 mapper 文件夹中。文件代码如下:
<?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">
<mapper namespace="com.hukanmasheng.mapper.UserMapper">
<insert id="addUser" parameterType="com.hukanmasheng.pojo.User" >
insert into mybatis_user (id,name,pwd) values (#{id},#{name},#{pwd})
</insert>
</mapper>
说明:
1、这里的标签使用 insert
2、标签属性 id 需要和接口方法名保持一致
3、parameterType 为接口方法传入参数的全限定类名
4、SQL 语句中参数的书写格式为 #{传入参数属性名}
编写测试类代码:
package com.hukanmasheng.mapper;
import com.hukanmasheng.pojo.User;
import com.hukanmasheng.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
public class UserMapperTest {
@Test
public void testAdd()
{
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setId(4);
user.setName("wangwu");
user.setPewd("567");
mapper.addUser(user);
sqlSession.commit();
sqlSession.close();
}
}
注:这里的 MybatisUtils 类是我编写的一个获取 SqlSession 的工具类
这里还需要注意的一点,新增是事务操作,需要提交事务。所以需要增加
sqlSession.commit();
这段代码。
运行测试前数据库数据如下:
运行测试代码后数据库数据如下:
数据新增成功。
修改
修改 User 对象的数据访问层接口,新增更新User的方法,代码如下:
/**
* 更新
* @param user
*/
void updateUser(User user);
修改 UserMapper.xml 文件,增加 updateUser 方法执行的 sql,代码如下:
<update id="updateUser" parameterType="com.hukanmasheng.pojo.User">
update mybatis_user set name=#{name},pwd=#{pwd} where id=#{id}
</update>
说明:
1、这里的标签使用 update
2、标签属性 id 需要和接口方法名保持一致
3、parameterType 为接口方法传入参数的全限定类名
4、SQL 语句中参数的书写格式为 #{传入参数属性名}
编写测试类代码,如下:
@Test
public void testUpdate()
{
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setId(4);
user.setName("wang5");
user.setPewd("111");
mapper.updateUser(user);
sqlSession.commit();
sqlSession.close();
}
将数据库中 id=4,name=wangwu,pwd=567 的数据修改为 name=wang5,pwd=111
这里还需要注意的一点,修改是事务操作,需要提交事务。所以需要增加
sqlSession.commit();
这段代码。
运行测试前数据库数据如下:
运行测试代码后数据库数据如下:
数据修改成功。
删除
修改 User 对象的数据访问层接口,新增删除 User 的方法,代码如下:
/**
* 删除
* @param id
* @return
*/
int delUser(int id);
修改 UserMapper.xml 文件,增加 delUser 方法执行的 sql,代码如下:
<delete id="delUser" parameterType="int" >
delete from mybatis_user where id=#{id}
</delete>
说明:
1、这里的标签使用 delete
2、标签属性 id 需要和接口方法名保持一致
3、parameterType:接口方法传入参数如果是基础数据类型,可以简写。
4、SQL 语句中参数的书写格式为 #{传入参数名}
编写测试类代码,如下:
@Test
public void testDel()
{
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.delUser(4);
sqlSession.commit();
sqlSession.close();
}
将数据库中 id=4 的数据删除。
这里还需要注意的一点,删除是事务操作,需要提交事务。所以需要增加
sqlSession.commit();
这段代码。
运行测试前数据库数据如下:
运行测试代码后数据库数据如下:
数据删除成功。
查询全部数据
修改 User 对象的数据访问层接口,新增查询全部 User 的方法,代码如下:
/**
* 查询全部数据
* @return
*/
List<User> findAll();
修改 UserMapper.xml 文件,增加 findAll 方法执行的 sql,代码如下:
<select id="findAll" resultType="com.hukanmasheng.pojo.User">
select * from mybatis_user
</select>
说明:
1、这里的标签使用 select
2、标签属性 id 需要和接口方法名保持一致
3、resultType:接口方法返回值集合中对象的全限定类名
编写测试类代码,如下:
@Test
public void testFindAll()
{
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> all = mapper.findAll();
System.out.println(all);
sqlSession.close();
}
运行测试前数据库数据如下:
运行测试代码打印数据如下:
查询全部数据成功。
根据 ID 查询数据
修改 User 对象的数据访问层接口,新增根据 id 查询 User 的方法,代码如下:
/**
* 根据 ID 查询
* @return
*/
User findUserById(int id);
修改 UserMapper.xml 文件,增加 findById 方法执行的 sql,代码如下:
<select id="findUserById" parameterType="int" resultType="com.hukanmasheng.pojo.User">
select * from mybatis_user where id=#{id}
</select>
说明:
1、这里的标签使用 select
2、标签属性 id 需要和接口方法名保持一致
3、parameterType:接口方法传入参数如果是基础数据类型,可以简写
4、resultType:接口方法返回值全限定类名
5、SQL 语句中参数的书写格式为 #{传入参数名}
编写测试类代码,如下:
@Test
public void testFindById()
{
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.findUserById(1);
System.out.println(user);
sqlSession.close();
}
运行测试前数据库数据如下:
运行测试代码打印数据如下:
查询 id=1 的数据成功。
MyBatis 入门之增删改查整理完成