Mybatis初学经验----------------
Posted General 的个人博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis初学经验----------------相关的知识,希望对你有一定的参考价值。
至于myBatis的配置,上篇文章中有,就不说了。今天谈谈myBatis编写Dao层时的用法。
传统Dao层代码需求
1、在Dao层实现类中,存在大量的模板方法,能否提取模板方法,减少我们的工作量。
2、将statementId硬编码到了Dao层实现类。
采用mapper代理的方式进行Dao层的开发,需要有几个约定(约定大于配置)
1、XXXMapper.xml中namespace的值需要与Dao接口中的全类名相同。 (确定哪一个XXXMapper.xml文件)
2、XXXMapper.java 接口中的方法名与XXXMapper.xml中的statementId相同(确定使用哪个sql);
3、XXXMapper.java 接口中的方法输入参数需要与XXXMapper.xml中ParameterType定义的类型相同;
4、XXXMapper.java 接口中的方法返回值类型需要与XXXMapper.xml中resultType定义的类型相同;
具体使用方法如下:
收下建立如下的三个文件
userMapper.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.xt.mybatis.hello.Mapper.AnimalMapper">
<!—
XXXMapper.xml中namespace的值需要与Dao接口中的全类名相同。 (确定哪一个XXXMapper.xml文件)
statementId=namespace+queryAnimalInfoBySid
属性ID:标示映射文件中的sql的唯一性,ID被称为statementId
属性 parameterType: 入参参数类型
属性resultType:输出结果类型,表示单条数据记录映射成的javaBean
#{value} 表示预处理,代表占位符
${value} 表示sql字符串的拼接,将结束到的数据不加任何修饰拼装到sql中。
resultMap: 数据字段名与输出类型属性的一个对应。
type:代表输出的javaBean类
-->
<resultMap type="com.xt.mybatis.hello.Animal.entity.Animal" id="Animal">
<id column="SID" property="sid"/>
<result column="Name" property="name"/>
<result column="Kind" property="kind"/>
<result column="Number" property="number"/>
<result column="Address" property="address"/>
</resultMap>
<select id="queryAnimalInfoBySid" parameterType="int" resultMap="Animal">
select * from animal where SID=#{sid}
</select>
<insert id="insertAnimal" parameterType="com.xt.mybatis.hello.Animal.entity.Animal">
insert into animal vaules (#{sid},#{name},#{kind},#[number},#{addrss})
</insert>
<delete id="deleteAnimal" parameterType="string">
delete from animal where SID=#{sid}
</delete>
<update id="updateAnimal" >
update animal set Name=#{name},Kind="kind", Number =#{number},Address=#{address} where SID=#{sid}
</update>
</mapper>
同时你要引入你所建立的这个Mapper
在mybatis-config.xml中加入下面的代码
<mappers>
<mapper resource="com/xt/mybatis/hello/Mapper/userMapper.xml"/>
</mappers>
接口内的方法要注意了:
public interface AnimalMapper {
public List<Animal> queryAnimalInfoBySid(int sid);
/*
XXXMapper.java 接口中的方法名与XXXMapper.xml中的statementId相同(确定使用哪个sql);
XXXMapper.java 接口中的方法输入参数需要与XXXMapper.xml中ParameterType定义的类型相同;
XXXMapper.java 接口中的方法返回值类型需要与XXXMapper.xml中resultType定义的类型相同;
*/
public void insertAnimal(Animal al);
public void deleteAnimal(String sid);
public void updateAnimal(Animal al);
}
下面我们就可以进行测试了
public class mapperTest {
SqlSession ss=null;
@Before
public void Init(){
try {
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis/mybatis-config.xml"));
ss = ssf.openSession();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void queryAnimalInfoBySid(){
AnimalMapper map = ss.getMapper(AnimalMapper.class);
System.out.println("=========Animal========"+map.queryAnimalInfoBySid(1806));
ss.close();
}
}
结果如下
以上是关于Mybatis初学经验----------------的主要内容,如果未能解决你的问题,请参考以下文章