1、实用小例子
1.1、删增改查
resultType 查询返回结果集
1.1.1、编写Mapper接口类
public interface UserMapper {
//查询所有
List<User> getUserAll();
//根据id查询所有
User getUserById(int id);
//添加用户
int addUser(User user);
//删除用户
int delUser(int id);
//更新用户
int updUser(User updUser);
}
1.1.2、Mapper.xml
<select id="getUserAll" resultType="User">
select * from mybatis.`user`
</select>
<select id="getUserById" resultType="User">
select * from mybatis.`user` where id = #{id}
</select>
<insert id="addUser" parameterType="User">
INSERT INTO mybatis.`user` VALUES(#{id},#{name},#{pwd})
</insert>
<delete id="delUser" parameterType="int">
DELETE FROM mybatis.`user` WHERE id = #{id}
</delete>
<update id="updUser" parameterType="User">
UPDATE mybatis.`user` AS u SET u.id = #{id} , u.`name` = #{name} , pwd = #{pwd} WHERE u.id = #{id}
</update>
1.1.3、编写测试代码
@Test
public void getUserAll(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userAll = mapper.getUserAll();
for (User user : userAll) {
System.out.println(user.toString());
}
sqlSession.close();
}
@Test
public void getUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserById(1);
System.out.println(user.toString());
sqlSession.close();
}
@Test
public void addUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int rowCount = mapper.addUser(new User(8,"23ds","dc"));
sqlSession.commit();
sqlSession.close();
}
@Test
public void delUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int rowCount = mapper.delUser(7);
sqlSession.commit();
sqlSession.close();
}
@Test
public void updUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int rowCount = mapper.updUser(new User(1,"32fdc","451652200."));
sqlSession.commit();
sqlSession.close();
}
1.2、万能map
Mapper接口
int addUserMap(Map<String ,Object >map );
//返回多条记录封装成一个map,key是这条记录的主键,value是记录封装后的javabean
//告诉mybatis封装这个map的时候使用哪个属性作为主键
@MapKey(value = "id")
Map<Integer , Object> getUserAllMap();
Mapper.xml
<!--万能map-->
<insert id="addUserMap" parameterType="map">
INSERT INTO mybatis.`user` VALUES(#{id} ,#{name},#{password})
</insert>
<select id="getUserAllMap" resultType="map">
select * from mybatis.`user`
</select>
测试类
@Test
public void getUserAllMap(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<Integer, Object> map = mapper.getUserAllMap();
System.out.println(map.toString());
sqlSession.close();
}
@Test
public void addUserMap(){
//万能map
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String , Object> map = new HashMap<>();
map.put("id",7);
map.put("name","123ds");
map.put("password","234rwefsd");
int rowCount = mapper.addUserMap(map);
System.out.println(rowCount);
sqlSession.commit();
sqlSession.close();
}
1.3、实体类和数据库对应不上
resultMap 重新映射查询结果集
parameterType 传入对象时,SQL语句要和实体类名称对应
<resultMap id="UserMap" type="com.lm.pojo.User">
<result column="pwd" property="password"/>
<!--数据库字段 实体类字段-->
</resultMap>
<update id="updateUser" parameterType="User">
UPDATE mybatis.`user` AS u SET u.id = #{id} , u.`name` = #{name} , pwd = #{password} WHERE u.id = #{id}
</update>
<delete id="deleteUser" parameterType="int">
DELETE FROM mybatis.`user` WHERE id = #{id}
</delete>
<insert id="addUser" parameterType="User">
INSERT INTO mybatis.`user` VALUES(#{id} ,#{name},#{password})
</insert>