destroy-method="close">
--数据库连接池配置-->
--初始化连接数量-->
--最大连接数量-->
--最大空闲连接数量-->
--最小空闲连接数量-->
--sqlSessionFactory-->
--MyBatis在spring中Bean的配置,都是固定的-->
--
//注销刚刚上面Spring的配置
配置实现类,注入数据源
配置service类,注入上面的实现类
-->
这里需要指明SqlMapConfig.xml文件的路径
4.编写在SqlMapConfig.xml文件中vo类对应的DAO类对应的xml文件。
这个xml中定义在这张表上所有进行的CRUD操作的具体SQL语句,也就是实现类在实现所操作的sql语句都是在这个文件里面所读取的。
说白了就是一个SQL语句集合的文件。
具体模板如下:
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEmapper
PUBLIC"-//ibatis.apache.org//DTDMapper3.0//EN"
"http:
//ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
--namespace的作用是为这张表取一个名字,好在impl类中进行访问-->
--插入一行数据-->
INSERTINTOMAJORTABLE(MAJORNAME,INCOLLEGE,STARTSELECTDATE,ENDSELECTDATE)VALUES
(#{majorName},#{inCollege},#{startSelectDate},#{endSelectDate})
--删除一条数据-->
DELETEFROMMAJORTABLEWHEREMAJORID=#{id}
--更新一条数据-->
UPDATEMAJORTABLESETMAJORNAME=#{majorName},INCOLLEGE=#{inCollege},
STARTSELECTDATE=#{startSelectDate},
ENDSELECTDATE=#{endSelectDate}WHEREMAJORID=#{majorId};
--查询该表的总行数-->
SELECTCOUNT(*)FROMMAJORTABLEWHEREISDELETED='0'
--查询一条数据-->
SELECTMAJORID,MAJORNAME,INCOLLEGE,STARTSELECTDATE,
ENDSELECTDATE,ISDELETEDFROMMAJORTABLEWHEREMAJORID=#{id}
--查询一组数据-->
SELECTMAJORID,MAJORNAME,INCOLLEGE,STARTSELECTDATE,
ENDSELECTDATE,ISDELETEDFROMMAJORTABLEWHEREISDELETED=0
但是我这次不会写这么多,我只是做个搭建测试,我的TestTable.xml文件内内容如下:
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEmapper
PUBLIC"-//ibatis.apache.org//DTDMapper3.0//EN"
"http:
//ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
--namespace的作用是为这张表取一个名字,好在impl类中进行访问-->
--插入一行数据-->
INSERTINTOTESTTABLE(ID,NAME)VALUES(#{id},#{name})
这里要注意,MYBATIS中的mapper文件中$和#有区别的
假如mapper中有如下的语句:
INSERTINTOCOLLEGETABLE(COLLEGENAME,COLLEGEDESCRIPTION)
VALUES($(#){collegeName},$(#){collegeDescription})
a)$表示取值,那么从mapper文件中读取这个sql语句为:
INSERTINTOCOLLEGETABLE(COLLEGENAME,COLLEGEDESCRIPTION)VALUES(aaa,bbbb)
不是问号,而是具体的值
这个时候读取的SQL是讲我们的值设置到了sql语句,就没有占位符?
b)#表示占位符,那么从mapper文件中读取的该sql语句如:
INSERTINTOANNOUNCEMENT(TITLE,CONTENT)VALUES(?
?
)
所以搞不好就会报错:
Cause:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
Unknowncolumn'aaa'in'fieldlist'
5.重新编写一个ITestTableDAO的实现类ITestTableDAOImpl2.java,这里,我所有的DAO设计有点问题,但是不影响实现,希望大家以后不要像我这样写。
我懒得从前面改了。
在DAO接口中的时候就把所有方法的参数带上,我这儿没有带上,所以有点难看。
packageorg.yhb.vo.impl;
importorg.apache.ibatis.session.SqlSession;
importorg.yhb.vo.TestTable;
importorg.yhb.vo.dao.ITestTableDAO;
publicclassITestTableDAOImpl2implementsITestTableDAO{
privateSqlSessionsession;
publicSqlSessiongetSession(){
returnsession;
}
//将刚刚配置的Spring中ID为sqlSession的bean注入该实现类
publicvoidsetSession(SqlSessionsession){
this.session=session;
}
publicvoiddoInsert(){
TestTabletest=newTestTable();
test.setId
(2);
test.setName("yuanmomo2");
this.session.insert("org.yhb.vo.dao.mapper.TestTable.doInsert",test);
}
}
6.重新编写一个ITestTableDAOsevice类:
ITestTableDAOService2.java
packageorg.yhb.vo.service;
importorg.yhb.vo.dao.ITestTableDAO;
importorg.yhb.vo.impl.ITestTableDAOImpl2;
publicclassITestTableDAOService2implementsITestTableDAO{
privateITestTableDAOImpl2testImpl;
publicITestTableDAOImpl2getTestImpl(){
returntestImpl;
}
//这个setter和重要,setter方式只spring在实现注入的时候调用的方法
publicvoidsetTestImpl(ITestTableDAOImpl2testImpl){
this.testImpl=testImpl;
}
publicvoiddoInsert(){
this.testImpl.doInsert();
}
}
7.剩下就是将我们刚刚写的第二个实现类配置到Spring的配置文件中去,让service调用我们刚刚编写的类,而不是前一个。
对ApplicationContext.xml做如下修改:
xmlversion="1.0"encoding="UTF-8"?
>
//www.springframework.org/schema/beans"
xmlns:
xsi="http:
//www.w3.org/2001/XMLSchema-instance"
xmlns:
context="http:
//www.springframework.org/schema/context"
xmlns:
aop="http:
//www.springframework.org/schema/aop"
xmlns:
tx="http:
//www.springframework.org/schema/tx"
xsi:
schemaLocation="http:
//www.springframework.org/schema/beans
http:
//www.springframework.org/schema/beans/spring-beans-2.5.xsd
http:
//www.springframework.org/schema/contexthttp:
//www.springframework.org/schema/context/spring-context-2.5.xsd
http:
//www.springframework.org/schema/aop
http:
//www.springframework.org/schema/aop/spring-aop-2.5.xsd
http:
//www.springframework.org/schema/txhttp:
//www.springframework.org/schema/tx/spring-tx-2.5.xsd">
--这个地方开始放置所有bean的配置信息-->
--配置jdbc.properties文件的位置信息-->
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
--读取jdbc.properties文件,配置数据源-->
destroy-method="close">
--数据库连接池配置-->
--初始化连接数量-->
--最大连接数量-->
--最大空闲连接数量-->
--最小空闲连接数量-->
--sqlSessionFactory-->
--MyBatis在spring中Bean的配置,都是固定的-->
--配置实现类,注入数据源-->
--配置service类,注入上面的实现类-->
8.修改TestServlet,
packageorg.yhb.test;
importjava.io.IOException;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpSer