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>