MyBatisの関係者のお問い合わせ。私はこれを行うことはできませんが、それは非常に、パニック研究のすべての種類を確認するためにどのようなネットワークのブログを教えてください、と後で非常に簡単に発見され、慌てる必要はありません、難しいことではありません。しかし、後者に比べて発見とQueryRunnerは簡単ではありませんが、唯一のJSPで使用することが後者缶は、比較的無味、HTMLページで使用することはできません。
MyBatisのも、特定のテーブルのクエリは、それを使用する方法を、私はステップバイステップでは、次のとおりです。
1.要件:ある私はので、ドキュメントレビューのインターフェースが必要(のBリストされたファイル名、 Bテーブルのアップロード時、のCテーブルファイルタイプ、のテーブル状態) 4つの分野、関連する3つのテーブル、私の最初の動的照会のエッジを行い、その後、空の後ろに仕上げ、私はより多くの古代の書き込みのいくつかのように、バネのようなフレームワークを使用していませんでした。
私は最後のページを調整するために直接移動し、書かれているバック・ページから事業を書き込むために使用されます。
2.bean、
3.FileCheckInfoMapperインタフェース(以前DAOインターフェースに相当)、
4.FileCheckInfoMapper.xml(DAOに対応する実装クラス)
構成データベース接続の設定ファイル5.設定FileCheckInfoMapper.xml実装クラスのパラメータ、
6.FileCheckInfoServiceサービスレイヤインタフェース、
7.FileCheckInfoServiceImplサービス層の実装クラス、
チューニングする8.FileCheckInfoServletサービス層、HTMLにデータを返します、
9のレジスタFileCheckInfoServletのweb.xml
サーブレットにアクセスするには10ページ、印刷データ、
私はしませんでしたので、ページ上のステッチ11のデータは、私は、このステップを書いてはいけません。
(熱狂的な、ほとんどの人はそれを隠していないので、誰が私をしたいと思い、私は、ああのようなポイントを良い感じ)
1.要件:必要(B・テーブル・ファイル名、 Bテーブルのアップロード時、 Cテーブルのファイルタイプ、テーブルの状態) これら4つの分野
2.内蔵豆ビット面倒な比較的単純な方法の後ろに来ることができないかわからない、(やって地図とQueryRunnerを使用して、私は決して忘れないよう、それは、比較的簡単です)
Beanが取得および設定する必要があり、最初の3つのBeanは、Beanが一緒に3つのテーブルを最後にある、3つのテーブルの上にあります。
public class FileCheck {
private Long fcId;
private Long fileId;
private Long checkState;
private Date checkCtime;
private Long adminId;
public FileCheck(Long fcId, Long fileId, Long checkState, Date checkCtime, Long adminId) {
super();
this.fcId = fcId;
this.fileId = fileId;
this.checkState = checkState;
this.checkCtime = checkCtime;
this.adminId = adminId;
}
}
public class FileInfo {
private Long fileId;
private String fileName;
private Date upCtime;
private Long fileState;
private Long typeId;
private Long userId;
private Long adminId;
private String md5Code;
private Long fileSize;
private String savePath;
private Long fileScore;
public FileInfo(Long fileId, String fileName, Date upCtime, Long fileState, Long typeId, Long userId, Long adminId,
String md5Code, Long fileSize, String savePath, Long fileScore) {
super();
this.fileId = fileId;
this.fileName = fileName;
this.upCtime = upCtime;
this.fileState = fileState;
this.typeId = typeId;
this.userId = userId;
this.adminId = adminId;
this.md5Code = md5Code;
this.fileSize = fileSize;
this.savePath = savePath;
this.fileScore = fileScore;
}
}
public class FileType {
private Long ftId;
private String typeName;
private String tailName;
private Long typeScore;
private Date typeCtime;
public FileType(Long ftId, String typeName, String tailName, Long typeScore, Date typeCtime) {
super();
this.ftId = ftId;
this.typeName = typeName;
this.tailName = tailName;
this.typeScore = typeScore;
this.typeCtime = typeCtime;
}
}
でも、必要なテーブルのクエリBeanは:説明、ないように読み取るために
public class FileCheckInfo {//文件审核界面三表连表查询:文件审查表+文件信息表+文件类型表
private Long fcId;
private Long fileId;
private Long checkState;
private Date checkCtime;
private Long adminId;
private FileInfo fileInfo;
private FileType fileType;
public FileCheckInfo(Long fcId, Long fileId, Long checkState, Date checkCtime, Long adminId) {
super();
this.fcId = fcId;
this.fileId = fileId;
this.checkState = checkState;
this.checkCtime = checkCtime;
this.adminId = adminId;
}
}
3.FileCheckInfoMapperインタフェース:
以前のパッケージに上記とパッケージ名の下に今あります
public interface FileCheckInfoMapper {
List<FileCheckInfo> selectFileCheckList();//前面不需要加public,因为自动会有
}
4.FileCheckInfoMapper.xml(等価DAO実装クラス):ように読み取ることがない、説明します
<?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.zcy.mapper.FileCheckInfoMapper">
<resultMap type="com.zcy.bean.FileCheckInfo" id="FileCheckInfoMap">
<id column="FC_ID" property="fcId" />
<result column="FILE_ID" property="fileId" />
<result column="CHECK_STATE" property="checkState" />
<result column="CHECK_CTIME" property="checkCtime" />
<result column="ADMIN_ID" property="adminId" />
<association property="fileInfo" javaType="com.zcy.bean.FileInfo">
<id column="FILE_ID" property="fileId" />
<result column="FILE_NAME" property="fileName" />
<result column="UP_CTIME" property="upCtime" />
<result column="FILE_STATE" property="fileState" />
<result column="TYPE_ID" property="typeId" />
<result column="USER_ID" property="userId" />
<result column="ADMIN_ID" property="adminId" />
<result column="MD5_CODE" property="md5Code" />
<result column="FILE_SIZE" property="fileSize" />
<result column="SAVE_PATH" property="savePath" />
<result column="FILE_SCORE" property="fileScore" />
</association>
<association property="fileType" javaType="com.zcy.bean.FileType">
<id column="FT_ID" property="ftId" />
<result column="TYPE_NAME" property="typeName" />
<result column="TAIL_NAME" property="tailName" />
<result column="TYPE_SCORE" property="typeScore" />
<result column="TYPE_CTIME" property="typeCtime" />
</association>
</resultMap>
<select id="selectFileCheckList" resultMap="FileCheckInfoMap">
select
a.fc_id,b.file_name,b.up_ctime,c.type_name,a.check_state
from file_check_info a
left join file_info b on a.file_id=b.file_id
left join file_type c on c.ft_id=b.type_id
</select>
</mapper>
XMLコードで書かれていない場合5.設定し、設定ファイルFileCheckInfoMapper.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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
<property name="username" value="ZCY"/>
<property name="password" value="ZCY"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 文件审核(连表查询)实现类 -->
<mapper resource="com/zcy/mapper/FileCheckInfoMapper.xml"/>
</mappers>
</configuration>
次は簡単です:
6.FileCheckInfoServiceサービスレイヤインタフェース:
public interface FileCheckInfoService {
//查询所有的文件审核
List<FileCheckInfo> selectFileCheckList();
}
7.FileCheckInfoServiceImplサービス層の実装クラス:
public class FileCheckInfoServiceImpl implements FileCheckInfoService {
@Override
public List<FileCheckInfo> selectFileCheckList() {
SqlSession session= SqlSessionUtil.getSqlSession();
FileCheckInfoMapper mapper=session.getMapper(FileCheckInfoMapper.class);
List<FileCheckInfo> fileCheckInfo=mapper.selectFileCheckList();
session.close();
return fileCheckInfo;
}
}
チューニングする8.FileCheckInfoServletサービス層、HTMLにデータを返します:
JSonMessageがここにクラスを定義して、返されたコレクションは、HashMapのタイプ、でGET、および設定することを忘れないでください
public class JsonMessage {
private int id;
private String msg;
private String location;
private Map<String, Object> dataList = new HashMap<String, Object>();
public JsonMessage(int id, String msg, String location, Map<String, Object> dataList) {
super();
this.id = id;
this.msg = msg;
this.location = location;
this.dataList = dataList;
}
public JsonMessage() {
super();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
FileCheckInfoServiceImpl impl=new FileCheckInfoServiceImpl();
List<FileCheckInfo> fileCheck=impl.selectFileCheckList();
JsonMessage msg=new JsonMessage();
//HashMap
msg.getDataList().put("fileCheck", fileCheck);
response.getWriter().println(JSONObject.toJSONString(msg));
}
9. FileCheckInfoServletは、web.xmlに登録しました:
<!-- 文件审核(连表查询) -->
<servlet>
<servlet-name>fileCheckInfo</servlet-name>
<servlet-class>com.zcy.servlet.FileCheckInfoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>fileCheckInfo</servlet-name>
<url-pattern>/fileCheckInfo.act</url-pattern>
</servlet-mapping>
比較的単純で書かれたサーブレットにアクセスするには10ページ、印刷データ、:
<script type="text/javascript">
function initFileCheck() {//文档审核表
$.ajax({
url : "fileCheckInfo.act",
type : "post",
dataType : "JSON",
success : function(data) {
console.log(data);
},
error : function(data) {
alert("请联系管理员!");
}
})
}
initFileCheck();
</script>
私はしませんでしたので、ページ上のステッチ11のデータは、私は、このステップを書いてはいけません。
12.私がいない集光ああ行う、ああ、私にいくつかの賞賛を与えるために便利な感じ、あまりにも長い間、このブログを書くことを期待していませんでした!