MyBatis的CRUD
namespace
UserMapper.xml 中的 namespace
的包名要和接口中的包名一致,指向 UserMapper 接口。
<?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的 包名要和接口中的包名一致,指向 UserMapper 接口-->
<mapper namespace="com.klaus.dao.UserMapper">
<select id="getUser" resultType="com.klaus.pojo.User">
select * from mybatis.user;
</select>
</mapper>
select
查询语句。
- id:对应 namespace 中的方法名
- resultType:Sql 语句执行的返回值类型
- parameterType:参数类型
需要使用传入的参数时,使用 #{parameter} 代替,parameter 和前面 UserMapper 接口中传入的参数名一致。
package com.klaus.dao;
import com.klaus.pojo.User;
public interface UserMapper {
// 根据 id 查询用户
User getUserById(int id);
}
<select id="getUserById" resultType="com.klaus.pojo.User" parameterType="int">
<!-- #{id}这个id和前面 UserMapper 接口中的 参数名 保持一致-->
select * from mybatis.user where id = #{id};
</select>
Insert
插入语句.
package com.klaus.dao;
import com.klaus.pojo.User;
public interface UserMapper {
// 增加用户
int addUser(User user);
}
<!-- 对象中的属性可以直接取出来 -->
<insert id="addUser" parameterType="com.klaus.pojo.User">
insert into mybatis.user (id, name, pwd)
values (#{id}, #{name}, #{pwd})
</insert>
delete
删除语句。
<delete id="deleteUser" parameterType="int">
delete
from mybatis.user
where id = #{id};
</delete>
package com.klaus.dao;
import com.klaus.pojo.User;
public interface UserMapper {
// 删除用户
int deleteUser(int id);
}
update
更新语句。
<update id="updateUser" parameterType="com.klaus.pojo.User">
update mybatis.user
set name = #{name},
pwd=#{pwd}
where id = #{id};
</update>
package com.klaus.dao;
import com.klaus.pojo.User;
public interface UserMapper {
// 修改用户
int updateUser(User user);
}
过程
-
编写接口函数
-
编写对应 mapper.xml 中的 sql 语句
-
测试
3.1 测试时, 增删改需要提交事务
使用Map
使用Map添加用户,可以不把对象的所有信息都填进去。在更新信息时,如果只更新一项,没必要创建一个全新的pojo对象赋值。
相较于对象传参:
Map 传参,直接在 sql 中取出 key 即可;
对象传参,直接在 sql 中取出属性即可。
package com.klaus.dao;
import com.klaus.pojo.User;
public interface UserMapper {
// 通过 Map 传参,增加用户
int addUserByMap(Map<String, Object> map);
}
<insert id="addUserByMap" parameterType="map">
insert into mybatis.user (name)
values (#{userName});
</insert>
@Test
public void testUpdateUser(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.updateUser(new User(4, "klaus02", "123459"));
// 增删改需要提交事务
sqlSession.commit();
sqlSession.close();
}
模糊查询
package com.klaus.dao;
import com.klaus.pojo.User;
public interface UserMapper {
// 模糊查询
List<User> getUserList(String value);
}
<select id="getUserList" resultType="com.klaus.pojo.User">
select *
from mybatis.user
where name like "%"#{value}"%";
</select>
本文来自博客园,作者:klaus08,转载请注明原文链接:https://www.cnblogs.com/klaus08/p/15104977.html