1. select

1.1 单个参数的查询

直接使用 #{参数名} 即可

  1. /**
  2. * 根据ID查询单个用户 (查询到多个会报错)
  3. */
  4. User selectUser(int id);
  5. //XML
  6. <select id="selectUser" resultType="user">
  7. select * from user where id = #{id}
  8. </select>

1.2 实体类作为参数查询

使用 #{属性值} 即可

  1. List<User> selectByAgeAndName(User user);
  2. <select id="selectByAgeAndName" resultType="com.xxb.mybatisDemon.entity.User">
  3. select * from user where name = #{name} and age = #{age}
  4. </select>

1.3 多个参数的查询

mybatis 3.4.1后 允许不加 @Param 指定参数名称, 自动以入参的名称作为key
必须使用 jdk1.8
使用 #{参数名}

  1. List<User> selectByAgeAndName1(int age, String name);
  2. <select id="selectByAgeAndName1" resultType="com.xxb.mybatisDemon.entity.User">
  3. select * from user where name = #{name} and age = #{age}
  4. </select>

1.4 查询返回map

resultType 指定 map
接口上使用 @MapKey 指定哪个属性作为map的key

  1. /**
  2. * 将用户放置在map中
  3. * @return hashMap
  4. */
  5. @MapKey("id")
  6. Map<String, Object> selectUserToMap();
  7. <select id="selectUserToMap" resultType="map">
  8. select * from user
  9. </select>

1.5 使用resultMap

1.5.1 简单使用

2. insert,update 和 delete

mapper文件

  1. public interface UserMapper {
  2. /**
  3. * 添加用户
  4. * @param user
  5. * @return
  6. */
  7. int addUser(User user);
  8. }

xml 语句

  1. <insert id="addUser" parameterType="user">
  2. insert into user (name,age,email,user_phone)
  3. values (#{name}, #{name}, #{email}, #{userPhone})
  4. </insert>

2.1 插入获取自增ID

上面的 addUser 语句返回的 int 值为1
代表添加了一条记录
假设 user 表的 主键 是自动生成的 怎么获取到新添加数据的主键值

  1. <insert id="addUser" parameterType="user" useGeneratedKeys="true" keyProperty="id" >
  2. insert into user (name,age,email,user_phone)
  3. values (#{name}, #{age}, #{email}, #{userPhone})
  4. </insert>
  1. @Slf4j
  2. class UserMapperTest {
  3. private final UserMapper userMapper;
  4. private final SqlSession session;
  5. {
  6. session = SqlSessionFactoryConfig.getSqlSession();
  7. userMapper = session.getMapper(UserMapper.class);
  8. }
  9. @Test
  10. void addUser(){
  11. User xxb = new User(18, "xxb", "xxb@xxb.com", "666");
  12. userMapper.addUser(xxb);
  13. log.info("数据插入后的主键为{}", xxb.getId());
  14. session.close();
  15. }
  16. }