Mybatis 在配置Mybatis 的datasource 和sessionFactoryjava
org.springframework.jdbc.datasource.DriverManagerDataSourcegit
org.mybatis.spring.SqlSessionFactoryBeangithub
以後要使用接口調用xml裏的sql語句 還需申明 Mybatis的Mapper掃描包以及 sessionfactoryspring
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 掃描本包下面的MapperDao(接口)託管給Spring IOC --> <property name="basePackage" value="com.zx.Dao"></property> <property name="sqlSessionFactoryBeanName" value="sessionFactory"></property> </bean>
這樣 就能夠直接經過@Autowired 將對應的Mapper接口租入使用sql
附上幾個註解的解釋 和用法session
@Repository註解:用於標註數據訪問組件,即DAO組件 @Service註解:用於標註業務層組件 @Controller註解:用於標註控制層組件(如struts中的action) @Component註解:泛指組件,當組件很差歸類的時候,咱們能夠使用這個註解進行標註。
@Controllermybatis
@Controller("Bean的名稱")app
定義控制層Bean,如Actionui
@Service .net
@Service("Bean的名稱")
定義業務層Bean
@Repository
@Repository("Bean的名稱")
定義DAO層Bean
@Component
定義Bean, 很差歸類時使用.
--自動裝配Bean (選用一種註解就能夠)
@Autowired (Srping提供的)
默認按類型匹配,自動裝配(Srping提供的),能夠寫在成員屬性上,或寫在setter方法上
@Autowired(required=true)
必定要找到匹配的Bean,不然拋異常。 默認值就是true
@Autowired
@Qualifier("bean的名字")
按名稱裝配Bean,與@Autowired組合使用,解決按類型匹配找到多個Bean問題。
@Resource JSR-250提供的
默認按名稱裝配,當找不到名稱匹配的bean再按類型裝配.
能夠寫在成員屬性上,或寫在setter方法上
能夠經過@Resource(name="beanName") 指定被注入的bean的名稱, 要是未指定name屬性, 默認使用成員屬性的變量名,通常不用寫name屬性.
@Resource(name="beanName")指定了name屬性,按名稱注入但沒找到bean, 就不會再按類型裝配了.
@Inject 是JSR-330提供的
按類型裝配,功能比@Autowired少,沒有使用的必要。
--定義Bean的做用域和生命過程
@Scope("prototype")
值有:singleton,prototype,session,request,session,globalSession
@PostConstruct
至關於init-method,使用在方法上,當Bean初始化時執行。
@PreDestroy
至關於destory-method,使用在方法上,當Bean銷燬時執行。
--聲明式事務
@Transactional
關於Spring Boot 經過註解註冊託管Bean的時候 他默認掃描的是入口類Application.class的同包下的類
若是Application類所在的包爲:io.github.gefangshuai.app
,則只會掃描io.github.gefangshuai.app
包及其全部子包,若是service或dao所在包不在io.github.gefangshuai.app
及其子包下,則不會被掃描!
也就是不會註冊成爲Bean經過自動注入註解注入的時候就會出錯
這個時候 咱們須要用
@ComponentScan(basePackages={"com.zx"})
手動設置掃描的包 而後就會找到該包下面全部申明爲Bean的類 進入IOC託管