总结:
- 输入映射有:string(包装类、基本数据类型等同)、自定义的object、Map<String,Object>
- 输出映射有:string(包装类、基本数据类型等同)、自定义的object、Map<String,Object>
输入输出映射的具体实现方式,以下附代码讲解。
- 编写一个实体类
public class Province {
private Integer provinceId;
private String provinceName;
private String provincePy;
private int delFlag;
public Province() {
}
public Province(String provinceName, String provincePy) {
this.provinceName = provinceName;
this.provincePy = provincePy;
}
public Integer getProvinceId() {
return provinceId;
}
public void setProvinceId(Integer provinceId) {
this.provinceId = provinceId;
}
public String getProvinceName() {
return provinceName;
}
public void setProvinceName(String provinceName) {
this.provinceName = provinceName;
}
public String getProvincePy() {
return provincePy;
}
public void setProvincePy(String provincePy) {
this.provincePy = provincePy;
}
public int getDelFlag() {
return delFlag;
}
public void setDelFlag(int delFlag) {
this.delFlag = delFlag;
}
@Override
public String toString() {
return "Province{" +
"provinceId=" + provinceId +
", provinceName='" + provinceName + '\'' +
", provincePy='" + provincePy + '\'' +
", delFlag=" + delFlag +
'}';
}
}
- 编写接口
public interface IProvinceDao {
/**
* 添加省份
*
* @param provinceName 输入映射:string(包装类、基本数据类型等同)
* @return
* @throws Exception
*/
public int addProvince(String provinceName) throws Exception;
/**
* 添加省份
*
* @param province 输入映射:自定义的object
* @return
* @throws Exception
*/
public int addProvince1(Province province) throws Exception;
/**
* 添加省份
*
* @param map 输入映射:Map<String,Object>
* @return
* @throws Exception
*/
public int addProvince2(Map<String, Object> map) throws Exception;
/**
* 根据省份名称查询省份信息
* @param provinceName
* @return 输出映射:自定义的Oject
* @throws Exception
*/
public Province findProvince(String provinceName) throws Exception;
/**
* 根据省份名称查询省份信息
* @param provinceName
* @return 输出映射:Map<String,Object>
* @throws Exception
*/
public Map<String,Object> findProvince1(String provinceName) throws Exception;
/**
* 查询省份信息的总记录数
* @return 输出映射:基本数据类型、包装类、String
* @throws Exception
*/
public int count() throws Exception;
}
- 编写映射器
<?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">
<!--namespace:关联对应的dao接口全限定名(包名+类名)-->
<mapper namespace="com.lpc.mybatis.dao.IProvinceDao">
<resultMap id="findProvinceResult" type="Province">
<id property="provinceId" column="province_id"></id>
<result property="provinceName" column="province_name"></result>
<result property="provincePy" column="province_py"></result>
<result property="delFlag" column="del_flag"></result>
</resultMap>
<!--添加省份,输入映射:string-->
<insert id="addProvince" parameterType="string">
insert into provinces(province_name) value(#{provinceName})
</insert>
<!--添加省份,输入映射:自定义的Object-->
<insert id="addProvince1" parameterType="Province">
insert into provinces(province_name,province_py) value (#{provinceName},#{provincePy})
</insert>
<!--添加省份,输入映射:Map<String,Object>-->
<insert id="addProvince2" parameterType="map">
<!--value中放的是map中的key,执行的时候,通过key可以拿到value-->
insert into provinces(province_name,province_py) value (#{provinceName},#{provincePy})
</insert>
<!--通过省份名称查询省份信息;输出映射:自定义的object-->
<select id="findProvince" parameterType="string" resultMap="findProvinceResult">
select * from provinces where province_name=#{provinceName}
</select>
<!--通过省份名称查询省份信息;输出映射:Map<String,Object>-->
<select id="findProvince1" parameterType="string" resultType="map">
select * from provinces where province_name=#{provinceName}
</select>
<!--查询省份表的总记录数;输出映射:基本数据类型,包装类,String-->
<select id="count" resultType="int">
select count(province_id) from provinces
</select>
</mapper>
- mybatis核心配置同上一篇一样,在此就不进行附加了
- 编写测试类
public class ProvinceTest {
private SqlSession session;
private IProvinceDao provinceDao;
@Before
public void init() throws IOException {
//获取文件
InputStream resource= Resources.getResourceAsStream("SqlMapperConfig.xml");
//创建SqlSessionFactory
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(resource);
//创建session,操作statement
session=factory.openSession(true);
//创建IUserDao
provinceDao=session.getMapper(IProvinceDao.class);
}
/**
* 输入映射,针对基本数据类型、包装类、String
*/
@Test
public void addProvince(){
try {
int row=provinceDao.addProvince("汉东省");
System.out.println(row>0?"省份信息插入成功":"省份信息插入失败");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 输入映射,针对自定义的Object
*/
@Test
public void addProvince1(){
try {
int row=provinceDao.addProvince1(new Province("汉西省","hanxi"));
System.out.println(row>0?"省份信息插入成功":"省份信息插入失败");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 输入映射,Map<String,Object>
*/
@Test
public void addProvince2(){
try {
Map<String,Object> map=new HashMap<>();
map.put("provinceName","汉北省");
map.put("provincePy","hanbei");
int row=provinceDao.addProvince2(map);
System.out.println(row>0?"省份信息插入成功":"省份信息插入失败");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 输出映射:自定义的Object
*/
@Test
public void findProvince(){
try {
Province province=provinceDao.findProvince("北京");
System.out.println(province);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 输出映射:Map<String,Object>
*/
@Test
public void findProvince1(){
try {
Map<String,Object> map=provinceDao.findProvince1("北京");
Set<String> key=map.keySet();
for (String k:key){
System.out.print(k);
System.out.println("\t"+map.get(k));
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 输出映射:基本数据类型、包装类、String
*/
@Test
public void count(){
try {
int count=provinceDao.count();
System.out.println(count);
} catch (Exception e) {
e.printStackTrace();
}
}
@After
public void destroy(){
//关闭session,释放资源
session.close();
}
}