| 加入myBatis |
| 事前設定: 在專案上右鍵>properties>project facets把Java換成1.6以上才能正確處理@Override |
| 【POM】 加入 <!-- com.mysql.jdbc.Driver --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.21</version> </dependency> <!-- mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.1.1</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.1.1</version> </dependency> |
| 【SpringConfig】 加入 <!-- sqlSessionFactory --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/cypherswiki?" /> <property name="username" value="kadice" /> <property name="password" value="kadice" /> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /><!-- 1、指定數據源 --> <property name="configLocation" value="/WEB-INF/config/SqlMapConfig.xml" /> </bean> <bean id="characterDataDao" class="mysite.dao.CharacterDataDao"> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean> <!-- 和Ibatis集成方式不同的有如下地方: SqlMapClient類廢棄,而使用SqlSessionFactory代替 ; 使用SqlSessionFactoryBean進行集成MyBatis。 --> |
| 建立/WEB-INF/config/SqlMapConfig.xml <?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> <settings> <setting name="cacheEnabled" value="false"/> </settings> <mappers> <mapper resource="mysite/sqlMap/characterData.xml"/> </mappers> </configuration> |
| 建立存放資料的DTO(/mysite/model/CharainfoDto.java) 以下僅供參考 package mysite.model; public class CharainfoDto { private String id; private String title; ...其他參數 public String getId() { return id; } public void setId(String id) { this.id = id; } ...其他getter&setter } |
| 建立與DTO對應的sqlMap檔(/mysite/sqlMap/characterData.xml) <?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="cypherswiki"> <resultMap id="charainfo" type="mysite.model.CharainfoDto"> <result property="id" column="ID" jdbcType="VARCHAR" /> <result property="title" column="TITLE" jdbcType="VARCHAR" /> ...中略 </resultMap> <select id="getCharainfo" parameterType="String" resultMap="charainfo" timeout="1000"> <![CDATA[ SELECT * FROM CYPHERSWIKI.CHARAINFO WHERE ID = #{id} ]]> </select> <select id="getCharaName" parameterType="String" resultType="String" timeout="1000"> <![CDATA[ SELECT charaName_ch FROM CYPHERSWIKI.CHARAINFO WHERE ID = #{id} ]]> </select> </mapper> |
| 建立存取資料的DAO&interface(/mysite/dao/CharacterDataDao.java、ICharacterDataDao.java) package mysite.dao; import org.mybatis.spring.support.SqlSessionDaoSupport; import java.sql.SQLException;import java.io.IOException; import mysite.model.CharainfoDto; public class CharacterDataDao extends SqlSessionDaoSupport implements ICharacterDataDao{ @Override public CharainfoDto getCharainfoDto(String id) throws SQLException, IOException { CharainfoDto charainfoDto = getSqlSession().selectOne("getCharainfo", id); return charainfoDto; } @Override public String getCharaName(String id) throws SQLException, IOException { String charaName = getSqlSession().selectOne("getCharaName", id); return charaName; } } |
| 建立service&interface (/mysite/service/CypherswikiService.java、ICypherswikiService.java) package mysite.service; import java.io.IOException; import java.sql.SQLException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import mysite.dao.CharacterDataDao; import mysite.model.CharainfoDto; @Service("CypherswikiService") public class CypherswikiService implements ICypherswikiService { @Autowired CharacterDataDao characterDataDao = new CharacterDataDao(); /** * 根據id取得角色中文名稱 */ @Override public String getCharaName(String id) throws SQLException, IOException { String charaName = characterDataDao.getCharaName("Loras"); return charaName; } /** * 根據id取得角色資料DTO */ @Override public CharainfoDto getCharainfo(String id) throws SQLException, IOException { CharainfoDto charaInfo = (CharainfoDto) characterDataDao.getCharainfoDto(id); return charaInfo; } } |
| 修改Controller package mysite.Controller; import java.io.IOException; import java.sql.SQLException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import mysite.model.CharainfoDto; import mysite.service.CypherswikiService; @Controller public class CypherswikiController { @Autowired CypherswikiService cypherswikiService = new CypherswikiService(); @RequestMapping("hello") public String to_hello(String user, Model model) throws SQLException, IOException { model.addAttribute("user", user); String charaName = cypherswikiService.getCharaName("Loras"); CharainfoDto charainfo =cypherswikiService.getCharainfo("Loras"); model.addAttribute("charaNameFromSqlMapping", charaName); model.addAttribute("charainfoFromSqlMapping", charainfo); return "hello"; } @RequestMapping("hello2") public String to_hello2(String user, Model model) { model.addAttribute("user", user); return "hello2"; } } |
| 修改hello.jsp <%@ page contentType = "text/html;charset=UTF-8" %> <div> <h1>Hello ${user}!!</h1> <br /> 經由myBatis取得角色名= ${charaNameFromSqlMapping}<br /> 經由myBatis取得角色全名= ${charainfoFromSqlMapping.fullName}<br /> <br /> <a href="hello2?user=你在第二頁">hello2.html</a> </div> |
2016年5月26日 星期四
加入myBatis
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言