简单类型的映射
返回的是简单基本类型
接口中的定义
int getAdminCount();//返回数据库总共还几条数据
xml中具体的实现
<select id="getAdminCount" resultType="int">
select count(*) from admin
</select>
这里我选用了测试的一个jar包,就直接用来测试了,没有试用main方法。
@Test//返回数据港总共还几条数据
public void find3() {
SqlSession sqlSession = MybatisUtil.getSqlSession();
AdminMapper mapper = sqlSession.getMapper(AdminMapper.class);
int count = mapper.getAdminCount();
System.out.println(count);
sqlSession.commit();
sqlSession.close();
}
测试结果
返回多组数据
在数据库当中,查找多组的数据,就需要接受,而接受主要就靠的是集合来接受数据库所返回的数据。
接口中的定义:
/*多张表*/
List<Admin> getAdminList();//返回的数据以集合的形式
//查询的结果是一个集合,这边通过List自动封装为集合
Mybatis中xml的定义:
<select id="getAdminList" resultType="Admin">
select * from admin
</select>
这里我选用了测试的一个jar包,就直接用来测试了,没有试用main方法。
@Test//传递的是列,返回的是集合
public void findList() {
SqlSession sqlSession = MybatisUtil.getSqlSession();
AdminMapper mapper = sqlSession.getMapper(AdminMapper.class);
List<Admin> adminList = mapper.getAdminList();
System.out.println(adminList);
sqlSession.commit();
sqlSession.close();
}
这里我试用了日志来返回查看数据库返回了几条的数据,并具体打印出来
POJO对象输出映射
POJO (Plain Old Java Objects,普通的 Java 对象)
如果数据库中表的列名和类中的属性名完全相同,则Mybatis会自动的将查询结果封装到这个POJO的对象当中去
如果java中使用了标准的驼峰命名,则数据库中也使用的是标准的下划线连接命名法,这样就可以开始全局的设置实现自动转换。
<settings>
<!--开启从经典的数据库名到java驼峰命名之间的转换
user_name==>userName-->
<!--驼峰命名自动映射-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
public User findUserInfoById(int id)
<select id="findAdminInfoById" parameterType="int" resultType="User">
select * from dmin where id=#{id}
</select>
复杂类型的返回
resultMap
特殊情况下,数据库的列名和属性名就是不一致,就要解决这个映射的问题。
那么这里就是使用resultMap。resultMap就是结果集的映射。就是自定义的一种映射
但是resultMap主要多用于多表关联。
定义 resultMap
resultMap中的的标签主要有个id(映射主键)和result(映射非主键)
column表示的数据库中的数据列名,property表示的是类中定义的属性名
如果类中的属性名和数据库中的列名一致,可以不用将全部的数据写在resultMap当中
只写一些所需要的数据名之间的联系,一样的是不用写的。
<!--resultMap就是对结果集的映射-->
<!--column表示的数据库中的数据列名,property表示的是类中定义的属性名-->
<!--如果类中的属性名和数据库中的列名一致,可以不用将全部的数据写在resultMap当中
只写一些所需要的数据名之间的联系-->
<resultMap id="one" type="Admin">
<id column="id" property="id"></id>
<result column="account" property="account"></result>
<result column="password" property="password"></result>
<result column="sex" property="sex"></result>
</resultMap>
- resutlMap 的 id 属性是 resutlMap 的唯一标识,本例中定义为 “one”。
- resutlMap 的 id 属性是映射的 POJO 类。
- id 标签映射主键,result 标签映射非主键。
- property 设置 POJO 的属性名称,column 映射查询结果的列名称
使用resultMap
<select id="getAdminById" resultMap="one">
select * from admin where id = #{id}
</select>
输出的映射不是resultType,而是resultMap,resultMap的值填写定义好id的resultMap值
再定义一个resultMap值对应的resultMap值
<resultMap id="one" type="Admin">
<id column="id" property="id"></id>
<result column