1.resultType使用java实体类的全限定类名作为返回值
在select查询语句当中都需要返回值类型,mybatis的返回值类型就reulstType和resultMap两种。
resultType的mapper示例(Mybatis的xml配置文件):
resultType的值可以是Java实体类的全限定类名,也可是java实体类的别名,也可以是Java基本数据类型或者其包装类。
<select id="selectOneAccountById" resultType="com.galaxy.bank.pojo.Account"> select id, actno, balance, holder_name, country from bankdb.t_account where actno = #{id} </select>
Java Dao接口
Account selectOneAccountById(int id);
Java测试类:
@Test public void test01(){ SqlSession sqlSession= MybatisUtil.getSqlSession(); AccountDao dao = sqlSession.getMapper(AccountDao.class); //简单类型参数 Account account=dao.selectOneAccountById(2); System.out.println("Account:"+account); sqlSession.close(); }
Mybatis对resultType的处理方式:
- 执行SQL语句,将查询结果转化为Java对象.
- 调用实体类的无参数构造方法创建对象.
- 把ResultSet指定的列值赋值给java对象的属性.
对等的JDBC:
ResultSet rs=executeQuery("sql); while (rs.next){ Account account=new Account(); account.setId(rs.getInt("id)); account.setHolderName(rs.getString("holderName"); ... }
注意:
我们创建任意一个java实体类,保证这个java实体类的属性与SQL语句返回值的列名对应上就行。
这就是ORM(对象关系映射)的核心思想。
2.resultType使用Java实体类的别名作为返回值类型
1)需要在Mybatis的主配置文件里面定义typeAlias.
2)注意:是mybatis的主配置文件,不是mapper的xml配置文件.
2.1给某个Java实体类设置别名
<typeAliases> <typeAlias type="com.galaxy.bank.pojo.Account" alias="account"/> </typeAliases>
之后mapper的xml格式文件就可以使用"account"作为resultType的值了.
<select id="selectOneAccountById" resultType="account"> select id, actno, balance, holder_name, country from bankdb.t_account where actno = #{id} </select>
2.2给某个包,或者某几个包下的所有Java实体类设置别名.这些包中所有的类,其类名就是别名,不区分大小写。
下面给两个包中的Java实体类设置了别名.
<typeAliases> <package name="com.galaxy.pojo"/> <package name="com.galaxy.domain"/> </typeAliases>
3.resultType使用java基本数据类型作为返回值类型
mapper示例:
<select id="selectCount" resultType="int"> select count(*) from bankdb.t_account </select>
Java Dao接口:
int selectCount();