1. select
1.1 单个参数的查询
直接使用 #{参数名} 即可
/*** 根据ID查询单个用户 (查询到多个会报错)*/User selectUser(int id);//XML<select id="selectUser" resultType="user">select * from user where id = #{id}</select>
1.2 实体类作为参数查询
使用 #{属性值} 即可
List<User> selectByAgeAndName(User user);<select id="selectByAgeAndName" resultType="com.xxb.mybatisDemon.entity.User">select * from user where name = #{name} and age = #{age}</select>
1.3 多个参数的查询
mybatis 3.4.1后 允许不加 @Param 指定参数名称, 自动以入参的名称作为key
必须使用 jdk1.8
使用 #{参数名}
List<User> selectByAgeAndName1(int age, String name);<select id="selectByAgeAndName1" resultType="com.xxb.mybatisDemon.entity.User">select * from user where name = #{name} and age = #{age}</select>
1.4 查询返回map
resultType 指定 map
接口上使用 @MapKey 指定哪个属性作为map的key
/*** 将用户放置在map中* @return hashMap*/@MapKey("id")Map<String, Object> selectUserToMap();<select id="selectUserToMap" resultType="map">select * from user</select>
1.5 使用resultMap
1.5.1 简单使用
2. insert,update 和 delete
mapper文件
public interface UserMapper {/*** 添加用户* @param user* @return*/int addUser(User user);}
xml 语句
<insert id="addUser" parameterType="user">insert into user (name,age,email,user_phone)values (#{name}, #{name}, #{email}, #{userPhone})</insert>
2.1 插入获取自增ID
上面的 addUser 语句返回的 int 值为1
代表添加了一条记录
假设 user 表的 主键 是自动生成的 怎么获取到新添加数据的主键值
<insert id="addUser" parameterType="user" useGeneratedKeys="true" keyProperty="id" >insert into user (name,age,email,user_phone)values (#{name}, #{age}, #{email}, #{userPhone})</insert>
@Slf4jclass UserMapperTest {private final UserMapper userMapper;private final SqlSession session;{session = SqlSessionFactoryConfig.getSqlSession();userMapper = session.getMapper(UserMapper.class);}@Testvoid addUser(){User xxb = new User(18, "xxb", "xxb@xxb.com", "666");userMapper.addUser(xxb);log.info("数据插入后的主键为{}", xxb.getId());session.close();}}
