mapper.xml中细节

直接上代码:

接口中的抽象方法:

List<Person> findAll();

Person findOneById(Long id);

Integer findCountBySex(Boolean sex);

映射文件中对应的sql:




<mapper namespace="cn.itsource.mapper.PersonMapper">
	<select id="findAll" resultType="cn.itsource.domain.Person">
		select * from person 
	select>

	<select id="findOneById" resultType="Person">
		select * from person where id = #{id}
	select>
	
	<select id="findCount" resultType="int">
		select count(id) from person where sex = #{sex}
	select>
mapper>

你品,你细品~~~

一、属性问题
1、接口中的参数一般都是一个,
因为一般当参数个数>=2时,都会把它们封装为实体类,然后让其作为参数,在xml文件中通过.来获取值;
如果又需要传递多个对象,那么就把它们放在集合(常用List)或数组中,然后其再作为参数,myBatis会把它变成map。
总之,当只有一个参数时,标签不用写parameterType(不写一定不会错,写了反而可能会错),
并且#{id}中的id也可以随便写,写成id是为了见名知意
2、其次,sql操作的返回值resultType,当然增删改是没有返回值的就不用说,
对于查询来说,最容易混淆的就是,当查询结果为多条记录时,比如接口中的第一个方法,它的返回值是list,所以很可能mapper中的resultType就写成list了,
但正确的就应该写实体类的类型,因为myBatis会自动把多条记录放入集合中

二、别名问题
1、parameterType或者resultType本该写对应类型的全限定名,比如java.lang.Long,但是好长哦。。。所以myBatis给一些常用类就取了别名:
mapper.xml中细节_第1张图片
别名是不区分大小写的,比如long、Long、lOnG,都是表示Long,所以为什么基本类型前面要加_
2、自己写的类也是可以起别名的,是要在配置文件mybatis-config.xml里添加typeAlias标签


<configuration>
	
	<properties resource="jdbc.properties" />
	
	 
	 <typeAliases>
		
		<typeAlias type="cn.itsource.domain.Dept" alias="Dept" />
		
		
		<package name="cn.itsource.domain" />
	typeAliases>
	
configuration>

但是呢,并不提倡给自己写的类用别名,
因为项目是团队开发,可能多个包下面有相同的实体类名,这样容易造成混淆,
所以最好还是用类的全限定名

你可能感兴趣的:(java学习,xml,mybatis,java)