Mybatis的输入映射和输出映射

一、输入映射

  通过parameterType指定输入参数类型,类型可以是简单类型、HashMap、pojo的包装类型。

  1、简单类型

  映射文件:



  接口文件:

//根据id查询用户的接口
public User findUserById(int id) throws Exception;
  测试文件:

public void findUserById(){
//创建SqlSession对象
SqlSession sqlSession = sessionFactory.openSession();
try {
/**
* 执行SqlSession对象的方法
* 第一个参数为:映射文件中的namespace+.+statement id
* 第二个参数为:要传入的参数值
*/
User user = sqlSession.selectOne("test.findUserById",1);
System.out.println(user);
} catch (Exception e) {
e.printStackTrace();
}finally {

}
}

  2、HashMap类型

  映射文件:


  接口文件:

//根据id查询用户的接口
public User findUserByHm(HashMap hashMap) throws Exception;
  测试文件:

public void findUserByHm(){
SqlSession sqlSession = sessionFactory.openSession();
try {
HashMap<String,Integer> hashMap = new HashMap<>();
hashMap.put("id",10);
User user = sqlSession.selectOne("test.findUserByHm",hashMap);
System.out.println(user);
} catch (Exception e) {
e.printStackTrace();
}finally {

}
}

 3、pojo类型:###

  pojo文件:

public class UserVo {
private User user;
private Shop shop;

@Override
public String toString() {
return "UserVo{" +
"user=" + user +
", shop=" + shop +
'}';
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

public Shop getShop() {
return shop;
}

public void setShop(Shop shop) {
this.shop = shop;
}
}
  映射文件:


  接口文件:

//根据商品id查询用户的接口
public User findUserByShop(UserVo userVo) throws Exception;
  测试文件:

public void findUserByShop(){
SqlSession sqlSession = sessionFactory.openSession();
try {
UserVo userVo = new UserVo();
Shop shop = new Shop();
shop.setId(1);
userVo.setShop(shop);
User user = sqlSession.selectOne("test.findUserByShop",userVo);
System.out.println(user);
} catch (Exception e) {
e.printStackTrace();
}finally {

}
}

二、输出映射

  通过resultType指定输出参数类型,只有查询出来的列名和pojo中的属性名一致时,该列才可以和Java对象映射成功。
  如果查询出来的列名和pojo中的属性名称全部不一致,则不会创建pojo对象。
  只有查询出来的列名和pojo中的属性有一个一致,就会创建pojo对象。
  如果查询出来的列名中有和属性名称不一致的,则该列不会和pojo的属性进行映射。

  1、简单类型

  映射文件:


  接口文件:

//根据用户名查询用户数量
public int findUserCountByName(String name) throws Exception;
  测试文件:

public void findUserCountByName(){
SqlSession sqlSession = sessionFactory.openSession();
try {
int count = sqlSession.selectOne("test.findUserCountByName","小明");
System.out.println(count);
} catch (Exception e) {
e.printStackTrace();
}finally {

}
}

  2、pojo类型

  映射文件:


  接口文件:

//根据用户名查询用户
public List findUserByName(String name) throws Exception;
  测试文件:

public void findUserByName(){
SqlSession sqlSession = sessionFactory.openSession();
try {
List list = sqlSession.selectList("test.findUserByName","小明");
for (User user:list) {
System.out.println(user);
}
} catch (Exception e) {
e.printStackTrace();
}finally {

}
}

  3、resultMap类型

  pojo文件:

public class UserVo {
private User user;
private Shop shop;

@Override
public String toString() {
return "UserVo{" +
"user=" + user +
", shop=" + shop +
'}';
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

public Shop getShop() {
return shop;
}

public void setShop(Shop shop) {
this.shop = shop;
}
}
  映射文件:














  接口文件:

//根据商品id查询用户和商品的接口
public List findVoByShop(UserVo userVo) throws Exception;
  测试文件:

public void findVoByShop(){
SqlSession sqlSession = sessionFactory.openSession();
try {
UserVo userVo = new UserVo();
User user = new User();
user.setId(10);
userVo.setUser(user);
List userVo1 = sqlSession.selectList("test.findVoByShop",userVo);
for (UserVo uservo: userVo1
) {
System.out.println(uservo);
}
} catch (Exception e) {
e.printStackTrace();
}finally {

}
}

posted @ 2017-07-27 08:25  一条路上的咸鱼  阅读(1067)  评论(0)    收藏  举报