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托管