Mybatis 输入输出映射
输入输出映射
输入映射parameterType
* 基本类型 * 自定义对象 * 自定义包装类
userVo包装类的dai
package com.test.bean;
public class userVo {
//包装类 除了本对象外还封装了其他信息
//表单需要全部的user 需要表单B的id name信息 一起封装
user user;
public user getUser() {
return user;
}
public void setUser(user user) {
this.user = user;
}
public String toString() {
return "userVo [user=" + user ;
}
}mapper.xml的实现
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.test.mapper.userMapper">
<select id="selectUserVoById" parameterType="userVo" resultType="user">
select * from user where u_id = #{user.u_id}
</select>
</mapper>userMapper.java 是mapper接口
package com.test.mapper;
import com.test.bean.user;
import com.test.bean.userVo;
public interface userMapper {
public user selectUserVoById(userVo vo) ;
}
userdaoTest.java 的代码
package com.test.test;
import org.junit.Test;
import com.test.ServiceFactory.sqlSession;
import com.test.bean.user;
import com.test.bean.userVo;
import com.test.mapper.userMapper;
public class userdaoTest {
@Test
public void test() {
user u = new user();
u.setU_id(15);
userVo uservo = new userVo();
uservo.setUser(u);
userMapper mapper = new sqlSession().getSqlSession().getMapper(userMapper.class);
user user = mapper.selectUserVoById(uservo);
System.out.println(uservo);
}
}
输出映射resultType
* 基本类型 * 自定义对象 * ***
部分包同上
下面是test.java 的代码
package com.test.test;
import org.junit.Test;
import com.test.ServiceFactory.sqlSession;
import com.test.mapper.userMapper;
public class userdaoTest {
@Test
public void test() {
userMapper mapper = new sqlSession().getSqlSession().getMapper(userMapper.class);
Integer i = mapper.selectUserCount();
System.out.println(i);
}
}mapper.java的代码
package com.test.mapper;
public interface userMapper {
public Integer selectUserCount();
}mapper.xml的代码
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.test.mapper.userMapper"> <select id="selectUserCount" resultType="Integer"> select count(u_id) from user </select> </mapper>
resultMap
- bean对象字段与数据表字段不匹配
- 自定义包装类
- 关联查询
测试类test.java的代码
package com.test.test;
import java.util.List;
import org.junit.Test;
import com.test.ServiceFactory.sqlSession;
import com.test.bean.Country;
import com.test.mapper.countryMapper;
public class countrydaoTest {
@Test
public void test() {
countryMapper mapper = new sqlSession().getSqlSession().getMapper(countryMapper.class);
List<Country> ls = mapper.selectAll();
for (Country country : ls) {
System.out.println(country);
}
}
}
bean country类
package com.test.bean;
public class Country {
private Integer id;
private String countryname;
private String capital;
public Integer getid() {
return id;
}
public void setid(Integer id) {
this.id = id;
}
public String getcountryname() {
return countryname;
}
public void setcountryname(String countryname) {
this.countryname = countryname;
}
public String getcapital() {
return capital;
}
public void setcapital(String capital) {
this.capital = capital;
}
public String toString() {
return "Country [id=" + id + ", countryname=" + countryname + ", capital=" + capital + "]";
}
}mapper.java 类的代码
package com.test.mapper;
import java.util.List;
import com.test.bean.Country;
public interface countryMapper {
public List<Country> selectAll();
}mapper.xml的代码 这里运用了resultMap的工具 所以正确展示所有数据
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.test.mapper.countryMapper">
<resultMap type="Country" id="country">
<result property="id" column="c_id"/>
<result property="capital" column="c_capital"/>
<result property="countryname" column="c_countryname"/>
</resultMap>
<select id="selectAll" resultMap="country">
select * from country
</select>
</mapper>
- 此处若不适用 resultMap 而使用 resultType = "Country" 结果如下 [所有字段将无法跟数据库匹配上]
<select id="selectAll" resultType="Country"> select * from country </select>
查看2道真题和解析