国王陛下万万岁

导航

 

 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();

 

posted on 2022-10-08 23:45  国王陛下万万岁  阅读(3881)  评论(0编辑  收藏  举报