spring+ibatis+mysql简略搭建
1、Mysql准备数据(use itcast数据库)
(20), lastname varchar
(20));
2、准备POJO类
public
class
Student implements
java.io.Serializable {
private
static
final
long
serialVersionUID = 1L;
private
Integer id;
private
String firstname;
private
String lastname;
public
String getFirstname() {
return
firstname;
}
public
void
setFirstname(String firstname) {
this
.firstname = firstname;
}
public
Integer getId() {
return
id;
}
public
void
setId(Integer id) {
this
.id = id;
}
public
String getLastname() {
return
lastname;
}
public
void
setLastname(String lastname) {
this
.lastname = lastname;
}
}
3、准备3大类配置文件, 都在包configfile下面
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
<!--这是POJO映射文件的根元素
-->
<
sqlMap
namespace
="Student"
>
<!--
select元素的id属性用来标识此元素,resultClass属性的值是Java类的全限定名(即包括类的包名)。
resultClass属性可以让您指定一个Java类,根据ResultSetMetaData将其自动映射到JDBC的ResultSet。
只要是Java Bean的属性名称和ResultSet的列名匹配,属性自动赋值给列值。
parameterClass属性是参数的类型,此属性的值是Java类的全限定名(即包括类的包名)。 它是可选的,但强烈建议使用。它的目的是
限制输入参数的类型为指定的Java类,并 优化框架的性能。
-->
<
select
id
="getStudentById"
resultClass
="cn.itcast.Student"
parameterClass
="int"
>
select id,firstname,lastname from student where id=#value#
</
select
>
<
insert
id
="insertStudent"
parameterClass
="cn.itcast.Student"
>
insert into student(firstname,lastname) values(#firstname#,#lastname#)
</
insert
>
</
sqlMap
>
jdbc.url=jdbc:mysql://localhost:3306/itcast
jdbc.username=root
jdbc.password=admin
<!DOCTYPE sqlMapConfig
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<
sqlMapConfig
>
<
sqlMap
resource
="configfile/Student.xml"
/>
</
sqlMapConfig
>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<
beans
>
<!--此bean告诉Spring去哪找数据库的配置信息,因为有此Bean才出现下面用${}标记来取变量的语句
-->
<
bean
id
="propertyConfig"
class
="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
>
<
property
name
="location"
>
<
value
>
configfile/jdbc.properties</
value
>
</
property
>
</
bean
>
<!--配置一个数据源,根据上面propertyConfig指定的location去找数据库连接的配置信息
-->
<
bean
id
="dataSource"
class
="org.springframework.jdbc.datasource.DriverManagerDataSource"
>
<
property
name
="driverClassName"
>
<
value
>
${jdbc.driver}</
value
>
</
property
>
<
property
name
="url"
>
<
value
>
${jdbc.url}</
value
>
</
property
>
<
property
name
="username"
>
<
value
>
${jdbc.username}</
value
>
</
property
>
<
property
name
="password"
>
<
value
>
${jdbc.password}</
value
>
</
property
>
</
bean
>
<!--根据dataSource和configLocation创建一个SqlMapClient
-->
<
bean
id
="sqlMapClient"
class
="org.springframework.orm.ibatis.SqlMapClientFactoryBean"
>
<
property
name
="configLocation"
>
<
value
>
configfile/sql-map-config.xml</
value
>
</
property
>
<
property
name
="dataSource"
>
<
ref
bean
="dataSource"
/>
</
property
>
</
bean
>
<!--根据sqlMapClien创建一个SqlMapClient模版类
-->
<
bean
id
="sqlMapClientTemplate"
class
="org.springframework.orm.ibatis.SqlMapClientTemplate"
>
<
property
name
="sqlMapClient"
>
<
ref
bean
="sqlMapClient"
/>
</
property
>
</
bean
>
<!--将上面的模版类织入到我们的DAO对象中
-->
<
bean
id
="studentDao"
class
="cn.itcast.StudentDaoSqlMap"
>
<
property
name
="sqlMapClientTemplate"
>
<
ref
bean
="sqlMapClientTemplate"
/>
</
property
>
</
bean
>
</
beans
>
4、在Dao层使用模板类
import
org.springframework.orm.ibatis.SqlMapClientTemplate;
public
class
StudentDaoSqlMap {
private
SqlMapClientTemplate sqlMapClientTemplate;
public
SqlMapClientTemplate getSqlMapClientTemplate() {
return
sqlMapClientTemplate;
}
public
void
setSqlMapClientTemplate(
SqlMapClientTemplate sqlMapClientTemplate) {
this
.sqlMapClientTemplate = sqlMapClientTemplate;
}
// 此方法的返回值与Student.xml的select元素的resultClass对应.
public
Student getStudent(Integer id) {
return
(Student) sqlMapClientTemplate.queryForObject("getStudentById"
,
id);
// 注意:queryForObject方法返回一个Object,第一个参数与Student.xml的select元素
// 的id属性值对应,第二个参数的类型与Student.xml的select元素的parameterClass
// 属性值对应.
}
public
Object insertStudent(Student student) {
return
sqlMapClientTemplate.insert("insertStudent"
, student);
}
}
5、客户端测试:Client.java
import
org.springframework.context.ApplicationContext;
import
org.springframework.context.support.ClassPathXmlApplicationContext;
public
class
Client {
public
static
void
main(String[] args) {
ApplicationContext factory = new
ClassPathXmlApplicationContext(
"applicationContext.xml"
);
StudentDaoSqlMap studentDao = (StudentDaoSqlMap) factory
.getBean("studentDao"
);
// 插入一个student
Student student = new
Student();
student.setFirstname("tian"
);
student.setLastname("xiangdong"
);
studentDao.insertStudent(student);
// 查询出id是1的Student对象.
// Student student = studentDao.getStudent(1);
// System.out.println(student.getId());
// System.out.println(student.getFirstname());
// System.out.println(student.getLastname());
}
}
6、总结