pom.xml
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>3.2.13.RELEASE</version> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>3.2.13.RELEASE</version> </dependency>
※下載spring-jdbc是因為我執行出現找不到類別的問題,所以下載這個包
※Annotation設定
applicationContext.xml
<context:component-scan base-package="\" /> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl" /> <property name="username" value="username" /> <property name="password" value="password" /> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> </bean> <bean id="dao" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="dao.IDeptDAO" /> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean>
IDeptDAO.java
public interface IDeptDAO {
@Select("SELECT * FROM DEPT")
public List<Dept> findAll();
// @Select("SELECT * FROM DEPT WHERE DEPTNO = #{pk}")
// public Dept findByPK(@Param("pk") int deptno);
//
// @Insert("INSERT INTO DEPT(DEPTNO, DNAME, LOC) VALUES (60, 'aaa', 'bbb')")
// public void insert();
//
// @Update("UPDATE DEPT SET DNAME = 'AAA', LOC = 'BBB' WHERE DEPTNO = 60")
// public void update();
//
// @Delete("DELETE FROM DEPT WHERE DEPTNO = 60")
// public void delete();
}
測試類
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
for (String s : ctx.getBeanDefinitionNames()) {
System.out.println(s);
}
IDeptDAO mfb = (IDeptDAO) ctx.getBean("dao");
List<Dept> list = mfb.findAll();
for (Dept dept : list) {
System.out.println("deptNo=" + dept.getDeptNo());
System.out.println("dName=" + dept.getdName());
System.out.println("loc=" + dept.getLoc());
System.out.println();
}
ctx.close();
※因為有sqlSessionFactory,所以dao可以直接強轉
※在 Service 寫 private IDeptDAO xxx; 然後 setter,最後上面放注入的 annotation 即可抓到
※XML設定
DeptDaoImpl.java
@Repository
public class DeptDaoImpl implements IDeptDAO {
@Autowired
public SqlSessionTemplate sqlSession;
public List<Dept> findAll() {
return sqlSession.selectList("xxx.getDept");
}
}
※XML設定比較麻煩,要多個實作類別,還要有設定檔(mybatis-config.xml)或mapping檔(Dept.xml)
applicationContext.xml
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- <property name="configLocation" value="classpath:mybatis-config.xml" /> --> <property name="mapperLocations" value="classpath:Dept.xml" /> </bean> <bean id="dao" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory" /> </bean>
※將dao換成SqlSessionTemplate,當然dataSource還是要,因為沒變就不寫了
※sqlSessionFactory增加屬性,configLocation和mapperLocations大部分的情況選其一即可,因為mybatis-config.xml可以如下設定:
<mappers> <mapper resource="Dept.xml" /> </mappers>
※因為目前的設定還不需要,所以我選擇用mapperLocations就夠了
Dept.xml
<mapper namespace="xxx"> <select id="getDept" resultType="vo.Dept"> SELECT * FROM DEPT </select> </mapper>
※DeptDaoImpl.java的字串要namespace.id,和沒整合前一樣,沒什麼特別
測試類
IDeptDAO mfb = (IDeptDAO) ctx.getBean("deptDaoImpl");
※getBean就選新加的class就搞定了
沒有留言:
張貼留言