目錄(?)[-]
- 一MyBatis簡介與配置MyBatisSpringMySql
- MyBatis簡介
- MyBatisSpringMySql簡單配置
- 搭建Spring環境
- 建立MySql資料庫
- 搭建MyBatis環境
- 建立實體類 StudentEntity
- 建立資料訪問介面
- 建立SQL對映語句檔案
- 建立MyBatis的mapper配置檔案
- 修改Spring 的配置檔案
- 測試StudentMapper
一、MyBatis簡介與配置MyBatis+Spring+MySql
MyBatis學習 之 一、MyBatis簡介與配置MyBatis+Spring+MySql
MyBatis學習 之 二、SQL語句對映檔案(1)resultMap
MyBatis學習 之 二、SQL語句對映檔案(2)增刪改查、引數、快取
MyBatis學習 之 三、動態SQL語句
MyBatis學習 之 四、MyBatis配置檔案
1.1MyBatis簡介
MyBatis 是一個可以自定義SQL、儲存過程和高階對映的持久層框架。MyBatis 摒除了大部分的JDBC程式碼、手工設定引數和結果集重獲。MyBatis 只使用簡單的XML 和註解來配置和對映基本資料型別、Map 介面和POJO 到資料庫記錄。相對Hibernate和Apache OJB等“一站式”ORM解決方案而言,Mybatis 是一種“半自動化”的ORM實現。 需要使用的Jar包:mybatis-3.0.2.jar(mybatis核心包)。mybatis-spring-1.0.0.jar(與Spring結合包)。
下載地址: http://ibatis.apache.org/tools/ibator http://code.google.com/p/mybatis/
1.2MyBatis+Spring+MySql簡單配置
1.2.1搭建Spring環境
1,建立maven的web專案; 2,加入Spring框架、配置檔案; 3,在pom.xml中加入所需要的jar包(spring框架的、mybatis、mybatis-spring、junit等); 4,更改web.xml和spring的配置檔案; 5,新增一個jsp頁面和對應的Controller; 6,測試。
可參照:http://limingnihao.iteye.com/blog/830409。使用Eclipse的Maven構建SpringMVC專案
1.2.2建立MySql資料庫
建立一個學生選課管理資料庫。 表:學生表、班級表、教師表、課程表、學生選課表。 邏輯關係:每個學生有一個班級;每個班級對應一個班主任教師;每個教師只能當一個班的班主任;
使用下面的sql進行建資料庫,先建立學生表,插入資料(2條以上)。
更多sql請下載專案原始檔,在resource/sql中。
- /* 建立資料庫 */
- CREATE DATABASE STUDENT_MANAGER;
- USE STUDENT_MANAGER;
- /***** 建立student表 *****/
- CREATE TABLE STUDENT_TBL
- (
- STUDENT_ID VARCHAR(255) PRIMARY KEY,
- STUDENT_NAME VARCHAR(10) NOT NULL,
- STUDENT_SEX VARCHAR(10),
- STUDENT_BIRTHDAY DATE,
- CLASS_ID VARCHAR(255)
- );
- /*插入學生資料*/
- INSERT INTO STUDENT_TBL (STUDENT_ID,
- STUDENT_NAME,
- STUDENT_SEX,
- STUDENT_BIRTHDAY,
- CLASS_ID)
- VALUES (123456,
- '某某某',
- '女',
- '1980-08-01',
- 121546
- )
建立連線MySql使用的配置檔案mysql.properties。
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/student_manager?user=root&password=limingnihao&useUnicode=true&characterEncoding=UTF-8
1.2.3搭建MyBatis環境
順序隨便,現在的順序是因為可以儘量的少的修改寫好的檔案。
1.2.3.1建立實體類: StudentEntity
- public class StudentEntity implements Serializable {
- private static final long serialVersionUID = 3096154202413606831L;
- private ClassEntity classEntity;
- private Date studentBirthday;
- private String studentID;
- private String studentName;
- private String studentSex;
- public ClassEntity getClassEntity() {
- return classEntity;
- }
- public Date getStudentBirthday() {
- return studentBirthday;
- }
- public String getStudentID() {
- return studentID;
- }
- public String getStudentName() {
- return studentName;
- }
- public String getStudentSex() {
- return studentSex;
- }
- public void setClassEntity(ClassEntity classEntity) {
- this.classEntity = classEntity;
- }
- public void setStudentBirthday(Date studentBirthday) {
- this.studentBirthday = studentBirthday;
- }
- public void setStudentID(String studentID) {
- this.studentID = studentID;
- }
- public void setStudentName(String studentName) {
- this.studentName = studentName;
- }
- public void setStudentSex(String studentSex) {
- this.studentSex = studentSex;
- }
- }
1.2.3.2建立資料訪問介面
Student類對應的dao介面:StudentMapper。
- public interface StudentMapper {
- public StudentEntity getStudent(String studentID);
- public StudentEntity getStudentAndClass(String studentID);
- public List<StudentEntity> getStudentAll();
- public void insertStudent(StudentEntity entity);
- public void deleteStudent(StudentEntity entity);
- public void updateStudent(StudentEntity entity);
- }
1.2.3.3建立SQL對映語句檔案
Student類的sql語句檔案StudentMapper.xml resultMap標籤:表欄位與屬性的對映。 Select標籤:查詢sql。
- <?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">
- <mapper namespace="com.manager.data.StudentMapper">
- <resultMap type="StudentEntity" id="studentResultMap">
- <id property="studentID" column="STUDENT_ID"/>
- <result property="studentName" column="STUDENT_NAME"/>
- <result property="studentSex" column="STUDENT_SEX"/>
- <result property="studentBirthday" column="STUDENT_BIRTHDAY"/>
- </resultMap>
- <!-- 查詢學生,根據id -->
- <select id="getStudent" parameterType="String" resultType="StudentEntity" resultMap="studentResultMap">
- <![CDATA[
- SELECT * from STUDENT_TBL ST
- WHERE ST.STUDENT_ID = #{studentID}
- ]]>
- </select>
- <!-- 查詢學生列表 -->
- <select id="getStudentAll" resultType="com.manager.data.model.StudentEntity" resultMap="studentResultMap">
- <![CDATA[
- SELECT * from STUDENT_TBL
- ]]>
- </select>
- </mapper>
1.2.3.4建立MyBatis的mapper配置檔案
在src/main/resource中建立MyBatis配置檔案:mybatis-config.xml。 typeAliases標籤:給類起一個別名。com.manager.data.model.StudentEntity類,可以使用StudentEntity代替。 Mappers標籤:載入MyBatis中實體類的SQL對映語句檔案。
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
- <typeAliases>
- <typeAlias alias="StudentEntity" type="com.manager.data.model.StudentEntity"/>
- </typeAliases>
- <mappers>
- <mapper resource="com/manager/data/maps/StudentMapper.xml" />
- </mappers>
- </configuration>
1.2.3.5修改Spring 的配置檔案
主要是新增SqlSession的製作工廠類的bean:SqlSessionFactoryBean,(在mybatis.spring包中)。需要指定配置檔案位置和dataSource。 和資料訪問介面對應的實現bean。通過MapperFactoryBean建立出來。需要執行介面類全稱和SqlSession工廠bean的引用。
- <!-- 匯入屬性配置檔案 -->
- <context:property-placeholder location="classpath:mysql.properties" />
- <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
- <property name="driverClassName" value="${jdbc.driverClassName}" />
- <property name="url" value="${jdbc.url}" />
- </bean>
- <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource" ref="dataSource" />
- </bean>
- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <property name="configLocation" value="classpath:mybatis-config.xml" />
- <property name="dataSource" ref="dataSource" />
- </bean>
- <!— mapper bean -->
- <bean id="studentMapper" class="org.mybatis.spring.MapperFactoryBean">
- <property name="mapperInterface" value="com.manager.data.StudentMapper" />
- <property name="sqlSessionFactory" ref="sqlSessionFactory" />
- </bean>
也可以不定義mapper的bean,使用註解:
將StudentMapper加入註解
- @Repository
- @Transactional
- public interface StudentMapper {
- }
對應的需要在dispatcher-servlet.xml中加入掃描:
- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <property name="annotationClass" value="org.springframework.stereotype.Repository"/>
- <property name="basePackage" value="com.liming.manager"/>
- <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
- </bean>
1.2.4測試StudentMapper
使用SpringMVC測試,建立一個TestController,配置tomcat,訪問index.do頁面進行測試:
- @Controller
- public class TestController {
- @Autowired
- private StudentMapper studentMapper;
- @RequestMapping(value = "index.do")
- public void indexPage() {
- StudentEntity entity = studentMapper.getStudent("10000013");
- System.out.println("name:" + entity.getStudentName());
- }
- }
使用Junit測試:
- 使用Junit測試:
- Java程式碼
- @RunWith(value = SpringJUnit4ClassRunner.class)
- @ContextConfiguration(value = "test-servlet.xml")
- public class StudentMapperTest {
- @Autowired
- private ClassMapper classMapper;
- @Autowired
- private StudentMapper studentMapper;
- @Transactional
- public void getStudentTest(){
- StudentEntity entity = studentMapper.getStudent("10000013");
- System.out.println("" + entity.getStudentID() + entity.getStudentName());
- List<StudentEntity> studentList = studentMapper.getStudentAll();
- for( StudentEntity entityTemp : studentList){
- System.out.println(entityTemp.getStudentName());
- }
- }
- }
MyBatis學習 之 一、MyBatis簡介與配置MyBatis+Spring+MySql
MyBatis學習 之 二、SQL語句對映檔案(1)resultMap
MyBatis學習 之 二、SQL語句對映檔案(2)增刪改查、引數、快取
MyBatis學習 之 三、動態SQL語句
MyBatis學習 之 四、MyBatis配置檔案