MyBatis入门初级教程(2) – 框架结构搭建
将jdbc的jar包导入工程中。下载地址:
http://download.csdn.net/detail/taomanman/6276329
1. 编写DBAccess类:
在包db下新建类,起名DBAccess。
/**
* 访问数据库类
*/
public class DBAccess {
publicSqlSession getSqlSession() throws IOException{
//通过配置文件获取数据库连接信息
Readerreader = Resources.getResourceAsReader("com/config/Configuration.xml");
//通过配置信息构建一个SqlSessionFacory
SqlSessionFactorysqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
//通过sqlSessionFactory打开一个数据库会话
SqlSessionsqlSession = sqlSessionFactory.openSession();
returnsqlSession;
}
}
看不懂的可以先复制过来,以后会讲。
2. 编写Dao层:
在dao包下创建一个名为MobilePOIDao的类:
/**
* 与MOBILE_POI表对应的数据库操作类
*command是用户输入查询关键字参数。
*/
public class MobilePOIDao {
/**
* 根据查询条件查询MOBILE_POI列表
*/
publicList<MobilePOI> queryMobilePOIList(String command){
//连接数据库
DBAccessdbAccess = new DBAccess();
SqlSessionsqlSession = null;
try{
sqlSession= dbAccess.getSqlSession();
} catch(IOException e) {
e.printStackTrace();
}catch(Exception e){
System.out.println(e.getMessage());
}finally{
sqlSession.close();
}
returnnull;
}
}}
3. 在此Dao类中暂时写一个main函数:
测试一下看看是否走的通:
publicstatic void main(String[] args){
MobilePOIDaomessageDao = new MobilePOIDao();
messageDao.queryMobilePOIList("");
}
}
Debug一下按顺序走一下看看是否走得通,是否报错。
4. 通过了之后我们开始创建写sql语句的文件:
创建编写SQL语句xml文件,并配置:
从test文件夹中拷贝一个User.xml文件作为参照,放在config下的sql包里,
User.xml的地址路径:
C:\Users\DD\Desktop\mybatis-3-mybatis-3.2.8\src\test\java\org\apache\ibatis\submitted\complex_property
并在教程第一篇的Configuration.xml中配置此sql语句的User.xml文件
<mappers>
<mapper resource="com/config/sql/User.xml"/>
</mappers>
5.编写User.xml文件:
<?xmlversion="1.0" encoding="UTF-8"?>
<!DOCTYPEmapper
PUBLIC "-//mybatis.org//DTDMapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mappernamespace="MobilePOI">
<resultMap type="com.bean.MobilePOI"id="MobilePOIResult">
<id column="POIID"jdbcType="VARCHAR" property="poiid"/><!-- 主键 -->
<result column="NAME"jdbcType="VARCHAR" property="name"/>
<result column="LON"jdbcType="VARCHAR" property="lon"/>
<result column="LAT"jdbcType="VARCHAR" property="lat"/>
</resultMap>
<select id="queryMobilePOIList"parameterType="com.bean.MobilePOI" resultMap="MobilePOIResult">
select POIID, NAME, LON, LAT
from MOBILE_POI where 1=1
</select>
</mapper>
此时先不写用前面用户传来的command查找参数。过程走通了之后我们再添加查找限定条件。
6.改写Dao:
观察sqlsession.selectList()方法的第一个参数:“MobilePOI.queryMobilePOIList”
MobilePOI是User.xml文件中space域的名称。<mapper namespace="MobilePOI">
queryMobilePOIList是SQL语句的id <select id="queryMobilePOIList"
/**
* 与MOBILE_POI表对应的数据库操作类
*/
public class MobilePOIDao {
/**
* 根据查询条件查询MOBILE_POI列表
*/
publicList<MobilePOI> queryMobilePOIList(String command){
//连接数据库
DBAccessdbAccess = new DBAccess();
List<MobilePOI>mobilePOIList = new ArrayList<MobilePOI>();
SqlSessionsqlSession = null;
try{
sqlSession= dbAccess.getSqlSession();
MobilePOImobilePOI = new MobilePOI();
mobilePOI.setName(command);
mobilePOIList= sqlSession.selectList("MobilePOI.queryMobilePOIList",mobilePOI);
}catch (IOException e) {
e.printStackTrace();
}catch(Exception e){
System.out.println(e.getMessage());
}finally{
if(sqlSession!= null){
sqlSession.close();
}
}
returnmobilePOIList;
}
}
7.写service类:
在service包下建一个名为QueryService的类:
/**
* 列表相关的业务功能
*/
public class QueryService {
/**
* 将通过dao查询的结果返回给service
* @param command
* @return 查询结果
*/
publicString queryByMobilePOI(String command){
MobilePOIDaomobilePOIDao = new MobilePOIDao();
List<MobilePOI>mobilePOIList;
mobilePOIList= mobilePOIDao.queryMobilePOIList(command);
if(mobilePOIList.size()>0){
//转成json格式
returnJSON.toJSONString(mobilePOIList);
}
return"数据库中无此结果";
}
}
为了传回前端js解析方便,我习惯将从数据库中查询到的结果列表转成json格式
其中转成json格式用的包是阿里巴巴的fastjson包,地址是
此包介绍:
8.写servlet类:
最后,编写servlet类:
在servlet包中新建一个servlet类,名为QueryServlet
创建方法:
1. 右键单击servlet包à新建àservlet
2.如果选项中没有servlet,选择【其他】à填写【servlet】à,勾选加上doGet和doPost方法,地址删除servlet前缀改为:【/QueryServlet】,(也可不改,我是习惯。)
3. 也可以自己手动创建一个普通类,让其继承HttpServlet类,填写doGet和doPost方法,并在web.xml中配置
<servlet>
<servlet-name>QueryServlet</servlet-name>
<servlet-class>com.servlet.QueryServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>QueryServlet</servlet-name>
<url-pattern>/QueryServlet</url-pattern>
</servlet-mapping>
9.发布服务,并访问servlet地址,运行程序:
发布服务:
点击图标
在浏览器中访问servlet地址:
结果:
可以用json在线格式化工具格式化一下:
未完待续。。。
下一节讲:
各个文件之间的联系与结构。