回顧:上個(gè)內(nèi)容我們使用配置文件進(jìn)行了一個(gè)簡(jiǎn)單的搭建峭咒,那么有幾個(gè)問(wèn)題
1.什么是包掃描?什么是起別名绅你?
1伺帘、首先,包掃描可以不用指定資源文件忌锯,而是掃描包下面的文件伪嫁。
例如:在mybatis-config.xml中的映射文件
<mappers>
<!-- 這里是映射到GoodsMapper.xml文件中-->
<!-- <mapper resource="com/ppf/mapper/GoodsMapper.xml"/>-->
<package name="com.ppf.mapper"/>
</mappers>
- 注意:這里只有一個(gè)GoodsMapper.xml文件,但是如果有多個(gè)呢偶垮?
<mapper resource="com/ppf/mapper/xxxxxMapper.xml"/>
<mapper resource="com/ppf/mapper/yyyyyMapper.xml"/>
<mapper resource="com/ppf/mapper/zzzzzMapper.xml"/>
是不是就要寫(xiě)成如上這種形式张咳?是不是很繁瑣帝洪,使用包掃描直接掃描mapper文件夾下的文件就可以。
2晶伦、起別名就是不用在映射文件中寫(xiě)全類(lèi)限定名
在mybatis-config.xml中寫(xiě)在configuration下
<typeAliases>
<package name="com.ppf.pojo"/>
</typeAliases>
在映射文件中就直接隨便起個(gè)名字碟狞,我這里就叫g(shù)oods
<select id="selectAll" resultType="goods">
select * from goods;
</select>
2.如果數(shù)據(jù)庫(kù)中的表字段和實(shí)體類(lèi)中的字段不一致呢?
這里婚陪,我首先把數(shù)據(jù)庫(kù)中的表名修改一個(gè)字段族沃,我把gname修改為name
這個(gè)問(wèn)題經(jīng)常遇到,那就是封裝的實(shí)體類(lèi)對(duì)象中的屬性和表字段不一致泌参,其實(shí)解決方法很多脆淹,我們常用的就是起別名和使用resultMap
- 1、就是在sql語(yǔ)句中將字段名稱(chēng)修改為和屬性名一致的沽一,修改GoodsMapper.xml
<select id="selectAll" resultType="goods">
select id,type,price,name as gname,description from goods;
</select>
這種方法缺點(diǎn)也很明顯盖溺,那就是如果字段過(guò)多的時(shí)候?qū)懫饋?lái)很麻煩。
- 2铣缠、使用resultMap將屬性和字段名稱(chēng)映射起來(lái)烘嘱,哪個(gè)不一樣就寫(xiě)哪一個(gè)
<?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">
<!--這里的namesapce是唯一的命名空間,這里與接口保持一致-->
<mapper namespace="com.ppf.mapper.GoodsMapper">
<resultMap id="goods" type="Goods">
<result property="gName" column="name"></result>
</resultMap>
<select id="selectAll" resultMap="goods">
select * from goods;
</select>
</mapper>
3.如何使用注解代替xml文件蝗蛙?
xml文件可以和注解配合使用蝇庭,但是簡(jiǎn)單sql一般使用注解,復(fù)雜的可以考慮xml文件
package com.ppf.mapper;
import com.ppf.pojo.Goods;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface GoodsMapper {
@ResultMap("goods")
@Select("select * from goods")
List<Goods> selectAll();
}
這就是對(duì)上次搭建的遺留的問(wèn)題進(jìn)行解決的方案捡硅,以后會(huì)越來(lái)越方便哮内,但是我們還是需要了解其中的思想。