輸入映射
parameterType
常規 pojo類 pojo的封裝類
將mapper中的所有方法中的參數提取出來放到一個包裝類中,開發mapper的時候所有的參數如果有就傳這個包裝類類型。
在包裝類中,加上對應的參數類型。在mapper.xml中使用Ognl的方式去讀取參數。
package cn.hd.param;
import cn.hd.pojo.User;
public class QueryVo {
private User user;
private Integer id;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
<select id="findUserByNameAndSex" parameterType="cn.hd.param.QueryVo"
resultType="cn.hd.pojo.User">
SELECT * FROM t_user WHEREname=#{user,id} AND sex={user,id}
</select>
public interface UserMapper {
User findUserById(QueryVo queryVo);
Integer add(QueryVo queryVo);
List<User>findUserByNameAndSex(QueryVo queryVo);
}
@Test
public void fun1() throws IOException {
InputStream in = Resources.getResourceAsStream("cn/hd/param/sqlMapConfig.xml");
SqlSessionFactory sessionFactory= new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession =sessionFactory.openSession();
UserMapper mapper =sqlSession.getMapper(UserMapper.class);
QueryVo queryVo = new QueryVo();
List<User> user =mapper.findUserByNameAndSex(queryVo);
System.out.println(user);
sqlSession.close();
}
}
輸出映射
兩種方式
1. resultType
如果數據庫中的字段和實體類中保持一致,使用該屬性。
你想要的數據在實體類和數據庫中保持一致。
2. resultMap
你想要的數據在實體類和數據庫中的字段不一致的時候,又想拿到這個值,就要自己手動映射。
Sql語句中resultMap中的參數和上面的resultMap中的id保持一致。Type就是要轉化的類型。 id主鍵 result普通主鍵
Column數據庫字段名 property實體類的屬性名 JavaType實體類類型 jdbcType數據庫類型 TypeHandler類型控制器
<resultMap id="newUsers" type="cn.hd.pojo.newUser">
<id column="id" property="userId"></id>
<result column="name" property="name"></result>
</resultMap>
<select id="find" resultMap="newUsers">
SELECT * FROM t_user
</select>