- 上一篇完成了MyBatis环境的搭建及第一个MyBatis程序的编写 第一个MyBatis程序 ,现在在此基础上,实现数据库的增删改查
- 以下的操作,均只需要修改接口
UserMapper
及xml配置文件UserMapper.xml
即可
- 值得一提的是,如果idea连接了数据库,下面的mapper文件写SQL语句的时候有代码提示
一、SELECT,查操作
User getUserById(Integer id);
- UserMapper.xml在命名空间为
UserMapper
的mapper
下,添加一个select
模块
<select id="getUserById" resultType="com.du.mybatis.pojo.User" parameterType="int">
select id, `name`, address
from user
where id = #{id};
</select>
id
为对应方法名,resultType
为返回的参数类型,parameterType
为方法输入参数类型
- 输入参数通过
#{id}
获得
- 测试方法
@Test
public void getUserByIdTest() {
try (SqlSession sqlSession = Utils.getSqlSession()) {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User userById = mapper.getUserById(2);
System.out.println(userById);
}
}
二、INSERT,插入操作
int insertUser(User user);
<insert id="insertUser" parameterType="com.du.mybatis.pojo.User">
insert into user(id, name, address)
values (#{id}, #{name}, #{address});
</insert>
@Test
public void insertUserTest() {
try (SqlSession sqlSession = Utils.getSqlSession()) {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int res = mapper.insertUser(new User(10, "李白", "印度"));
if (res > 0)
System.out.println("插入成功");
else
System.out.println("插入失败");
sqlSession.commit();
}
}
三、UPDATE,修改操作
int updateUser(User user);
<update id="updateUser" parameterType="com.du.mybatis.pojo.User">
update user
set name=#{name},
address = #{address}
where id = #{id};
</update>
@Test
public void updateUserTest() {
try (SqlSession sqlSession = Utils.getSqlSession()) {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int res = mapper.updateUser(new User(3, "杜甫", "西藏"));
if (res > 0)
System.out.println("更新成功");
else
System.out.println("更新失败");
sqlSession.commit();
}
}
四、DELETE,删除操作
int deleteUserByID(int id);
<delete id="deleteUserByID" parameterType="int">
delete
from user
where id = #{id};
</delete>
@Test
public void deleteUserByIdTest() {
try (SqlSession sqlSession = Utils.getSqlSession()) {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int res = mapper.deleteUserByID(2);
if (res > 0)
System.out.println("删除成功");
else
System.out.println("删除失败");
sqlSession.commit();
}
}
五、多参数输入,通过Map
实现
int deleteUserByNameAndAddress(Map<String, String> map);
<delete id="deleteUserByNameAndAddress" parameterType="map">
delete
from user
where name = #{name}
and address = #{address};
</delete>
parameterType
为 map类型(小写表示,这是一个别名)
- 直接在
#{}
中取指就好
- 测试代码
@Test
public void deleteUserByNameAndAddressTest() {
try (SqlSession sqlSession = Utils.getSqlSession()) {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String, String> map = new HashMap<String, String>();
map.put("name", "李白");
map.put("address", "印度");
int res = mapper.deleteUserByNameAndAddress(map);
if (res > 0)
System.out.println("删除成功");
else
System.out.println("删除失败");
sqlSession.commit();
}
}
六、完整代码
public interface UserMapper {
List<User> getUserList();
User getUserById(Integer id);
int insertUser(User user);
int deleteUserByID(int id);
int updateUser(User user);
int deleteUserByNameAndAddress(Map<String, String> map);
}
<?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.du.mybatis.dao.UserMapper">
<select id="getUserList" resultType="com.du.mybatis.pojo.User">
select id, `name`, address
from user;
</select>
<select id="getUserById" resultType="com.du.mybatis.pojo.User" parameterType="int">
select id, `name`, address
from user
where id = #{id};
</select>
<insert id="insertUser" parameterType="com.du.mybatis.pojo.User">
insert into user(id, name, address)
values (#{id}, #{name}, #{address});
</insert>
<delete id="deleteUserByID" parameterType="int">
delete
from user
where id = #{id};
</delete>
<update id="updateUser" parameterType="com.du.mybatis.pojo.User">
update user
set name=#{name},
address = #{address}
where id = #{id};
</update>
<delete id="deleteUserByNameAndAddress" parameterType="map">
delete
from user
where name = #{name}
and address = #{address};
</delete>
</mapper>
public class UserMapperTest {
@Test
public void getUserListTest() {
try (SqlSession sqlSession = Utils.getSqlSession()) {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.getUserList();
for (User user : userList) {
System.out.println(user);
}
}
}
@Test
public void getUserByIdTest() {
try (SqlSession sqlSession = Utils.getSqlSession()) {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User userById = mapper.getUserById(2);
System.out.println(userById);
}
}
@Test
public void insertUserTest() {
try (SqlSession sqlSession = Utils.getSqlSession()) {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int res = mapper.insertUser(new User(10, "李白", "印度"));
if (res > 0)
System.out.println("插入成功");
else
System.out.println("插入失败");
sqlSession.commit();
}
}
@Test
public void deleteUserByIdTest() {
try (SqlSession sqlSession = Utils.getSqlSession()) {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int res = mapper.deleteUserByID(2);
if (res > 0)
System.out.println("删除成功");
else
System.out.println("删除失败");
sqlSession.commit();
}
}
@Test
public void updateUserTest() {
try (SqlSession sqlSession = Utils.getSqlSession()) {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int res = mapper.updateUser(new User(3, "杜甫", "西藏"));
if (res > 0)
System.out.println("更新成功");
else
System.out.println("更新失败");
sqlSession.commit();
}
}
@Test
public void deleteUserByNameAndAddressTest() {
try (SqlSession sqlSession = Utils.getSqlSession()) {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String, String> map = new HashMap<String, String>();
map.put("name", "李白");
map.put("address", "印度");
int res = mapper.deleteUserByNameAndAddress(map);
if (res > 0)
System.out.println("删除成功");
else
System.out.println("删除失败");
sqlSession.commit();
}
}
}