Mybatis

namespace

配置文件中namespace中的名称为对应Mapper接口或者Dao接口的完整包名,必须一致!

select

选择,查询语句

  • id:就是对应的namespace中的方法名
  • resultType:Sql语句执行的返回值
  • parameterType:参数类型

需求:根据id查询用户

1、在UserMapper中添加对应方法

1
2
3
4
5
6
public interface UserMapper {
//查询全部用户
List<User> selectUser();
//根据id查询用户
User selectUserById(int id);
}

2、在UserMapper.xml中添加Select语句

1
2
3
<select id="selectUserById" resultType="com.kuang.pojo.User">
select * from user where id = #{id}
</select>

3、测试类中测试

1
2
3
4
5
6
7
8
@Test
public void tsetSelectUserById() {
SqlSession session = MybatisUtils.getSession(); //获取SqlSession连接
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.selectUserById(1);
System.out.println(user);
session.close();
}

注意点:增删改需要提交事务

错误分析

  1. 标签不要匹配错
  2. resource绑定mapper,必须用/

万能的Map

假设实体类或者数据库的表,字段,或者参数过多时,我们应考虑使用Map。。。实战中考虑用一下,不易排错

Map传递参数,直接在sql中取出key即可 【parameterType =”map”】

对象传递参数,直接在sql取对象的属性即可 【parameterType = ”Object“】

只有一个基本类型参数的情况下,可以直接在sql取到

多个参数用map,或注解

模糊查询怎么写

  1. 在java代码执行时,传递通配符%%

    Lsit<User> userList = mapper.getUserLike("%李%");

  2. 在sql拼接时使用通配符

    select * from user where name like "%"#{value}"#"