1.namespace
namespace中的包名要和mapper接口的包名一致
2. select
选择,查询语句
id:对应的namespace中的方法名
resultType:Sql语句执行的返回值
parameterType:参数类型
2.1、编写接口
//根据id查询用户
User getUserById(int id);
2.2、编写对应的mapper中的sql语句
<select id="getUserById" resultType="com.dai.pojo.User" parameterType="int">
select * from mybatis.user where id = #{id}
</select>
2.3、测试
@Test
public void testId(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User userById = mapper.getUserById(2);
System.out.println(userById);
sqlSession.close();
}
3.insert
<insert id="insertUser" parameterType="com.dai.pojo.User">
insert into user (id, name, pwd)
values (#{id},#{name},#{pwd});
</insert>
4.update
<update id="updateUser" parameterType="com.dai.pojo.User">
update user set `name` =#{name},pwd=#{pwd} where id=#{id}
</update>
5.delete
<delete id="deleteUser" parameterType="int">
delete from user where id = #{id}
</delete>
注意:增删改需要提交事务
6.万能Map
假设,我们的实体类,或者数据库中的表,字段或者参数过多,我们应当考虑使用Map
//依靠Map来查询用户
Map getUserById2(Map<String,Object> map);
<select id="getUserById2" resultType="Map" parameterType="Map">
select * from mybatis.user where id = #{id}
</select>
@Test
public void testId2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("id",2);
Map userById2 = mapper.getUserById2(map);
System.out.println(userById2);
sqlSession.close();
}
Map传递参数,直接在sql中取出key即可
对象传递参数,直接在sql中取对象的属性即可
只有一个基本类型参数的情况下,可以直接在sql中取到
模糊查询:
1.Java代码执行的时候,会传递通配符 % %
List<User> userList = mapper.getUserLike("%李%");
2.在sql拼接中使用通配符
select * from mybatis.user where name like "%"#{value}"%"