这是很久很久前的代码(主要发布代码),学生时代的痴狂吧……自己的第一个Ibatis案例,今天放博客,一来提醒自己最初的梦想和追求的毅力以激励自己更好地成长,二来给正打算学习Ibatis的童鞋一个参考……
一、准备工作
开发Ibatis应用第一步即是搭建自己开发的环境,主要包括:
安装数据库,这里选择mysql数据库;
创建应用,个人采用MyEclipse工具进行创建;
将mysql的驱动程序mysql-connector-java-5.0.8-bin.jar拷贝到应用的lib文件夹下;
将Ibatis的jar包ibatis-2.3.4.726拷贝到lib文件夹下面。
二、创建JavaBean类,为表现效果,本程序中还复写了toString方法,个人写的User.java如下:
package com.lch.ibatistest.entity;
public class User {
private int id;
private String uname;
private String upass;
private int id;
private String uname;
private String upass;
public String toString() {
return "姓名:" + uname + "密码:" + upass+"\n";
}
return "姓名:" + uname + "密码:" + upass+"\n";
}
public int getId() {
return id;
}
return id;
}
public void setId(int id) {
this.id = id;
}
this.id = id;
}
public String getUname() {
return uname;
}
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
this.uname = uname;
}
public String getUpass() {
return upass;
}
return upass;
}
public void setUpass(String upass) {
this.upass = upass;
}
}
this.upass = upass;
}
}
三、配置工作
以上工作完成之后,即开始配置了,配置可以根据自己所下的ibatis中doc下的范例进行,个人程序配置如下:
web.xml
web.xml为创建系统默认设置;
SqlMapConfig.xml
在应用的src目录下创建SqlMapConfig.xml文件,文件配置数据库连接信息和应用应用的实体映射文件如User.xml,具体描述请参考网上其它资料,内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
" http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
" http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<transactionManager type="JDBC" commitRequired="false">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />
<property name="JDBC.ConnectionURL"
value="jdbc:mysql://localhost:3306/test?characterEncoding=gb2312" />
<property name="JDBC.Username" value="root" />
<property name="JDBC.Password" value="198974" />
</dataSource>
</transactionManager>
<sqlMap resource="com/lch/ibatistest/entity/User.xml" />
</sqlMapConfig>
<transactionManager type="JDBC" commitRequired="false">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />
<property name="JDBC.ConnectionURL"
value="jdbc:mysql://localhost:3306/test?characterEncoding=gb2312" />
<property name="JDBC.Username" value="root" />
<property name="JDBC.Password" value="198974" />
</dataSource>
</transactionManager>
<sqlMap resource="com/lch/ibatistest/entity/User.xml" />
</sqlMapConfig>
信息配置文件User.xml
在实体User.java同目录下建立一个User.xml的文件,文件中将javaBean实体和数据库的映射做好配置,同时编写sql操作语句,个人应用中如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
" http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="User">
<!-- 简化对象返回值类型的引用 -->
<typeAlias alias="User" type="com.lch.ibatistest.entity.User" />
<!-- 当实体属性名与数据库字段名不一致时的处理方法 resultMap="userMap" -->
<resultMap class="User" id="userMap">
<!-- 属性:uname 字段:username -->
<result property="uname" column="username" />
<result property="upass" column="userpass" />
<result property="id" column="id" />
</resultMap>
<!-- 简单查询 -->
<select id="selectAllUser" resultMap="userMap">
select * from user
</select>
<!-- 通过用户Id查询 -->
<select id="selectById" resultClass="User" parameterClass="int">
select * from user where id=#id#
</select>
<!-- 第一种分页查询 -->
<select id="selectByPage" resultClass="User" parameterClass="java.util.Map">
select * from user limit #page#,#rows#
</select>
<select id="selectCount" resultClass="int">
<![CDATA[
select count(*) from user
]]>
</select>
<select id="selectUserByPage" parameterClass="java.util.Map"
resultClass="User">
select * from user limit #begin#,#max#
</select>
<select id="selectByRole" parameterClass="int" resultMap="userMap">
select * from user,role where role.id=#roleId#
</select>
<!-- 动态sql -->
<select id="DongTaiSelect" resultMap="userMap" parameterClass="user">
select * from user where
</select>
<!-- 插入用户 -->
<insert id="insertUser" parameterClass="User">
insert into user(uname,upass) values(#uname#,#upass#)
<!--
这里的#uname#,#upass#是实体类的属性
-->
</insert>
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
" http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="User">
<!-- 简化对象返回值类型的引用 -->
<typeAlias alias="User" type="com.lch.ibatistest.entity.User" />
<!-- 当实体属性名与数据库字段名不一致时的处理方法 resultMap="userMap" -->
<resultMap class="User" id="userMap">
<!-- 属性:uname 字段:username -->
<result property="uname" column="username" />
<result property="upass" column="userpass" />
<result property="id" column="id" />
</resultMap>
<!-- 简单查询 -->
<select id="selectAllUser" resultMap="userMap">
select * from user
</select>
<!-- 通过用户Id查询 -->
<select id="selectById" resultClass="User" parameterClass="int">
select * from user where id=#id#
</select>
<!-- 第一种分页查询 -->
<select id="selectByPage" resultClass="User" parameterClass="java.util.Map">
select * from user limit #page#,#rows#
</select>
<select id="selectCount" resultClass="int">
<![CDATA[
select count(*) from user
]]>
</select>
<select id="selectUserByPage" parameterClass="java.util.Map"
resultClass="User">
select * from user limit #begin#,#max#
</select>
<select id="selectByRole" parameterClass="int" resultMap="userMap">
select * from user,role where role.id=#roleId#
</select>
<!-- 动态sql -->
<select id="DongTaiSelect" resultMap="userMap" parameterClass="user">
select * from user where
</select>
<!-- 插入用户 -->
<insert id="insertUser" parameterClass="User">
insert into user(uname,upass) values(#uname#,#upass#)
<!--
这里的#uname#,#upass#是实体类的属性
-->
</insert>
<!-- Update User, using the User parameter class -->
<update id="updateUser" parameterClass="User">
update user set
uname =
#uname#,
upass = #upass#
where
id = #id#
</update>
<!-- Delete User, using an integer as the parameter class -->
<delete id="deleteUserById" parameterClass="int">
delete from user
where id = #id#
</delete>
</sqlMap>
<update id="updateUser" parameterClass="User">
update user set
uname =
#uname#,
upass = #upass#
where
id = #id#
</update>
<!-- Delete User, using an integer as the parameter class -->
<delete id="deleteUserById" parameterClass="int">
delete from user
where id = #id#
</delete>
</sqlMap>
四、测试代码
以上工作完成后即可对应用进行测试:
业务类UserManager.java主要实现业务逻辑的测试,代码如下:
package test;
import java.io.Reader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class UserManager {
public List getUserByPage(int begin,int max) throws Exception{
Reader reader=Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient client=SqlMapClientBuilder.buildSqlMapClient(reader);
Map map=new HashMap();
map.put("begin", begin);
map.put("max", max);
List list= client.queryForList("selectUserByPage",map);
return list;
}
public int getUserCount() throws Exception{
Reader reader=Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient client=SqlMapClientBuilder.buildSqlMapClient(reader);
int count = Integer.parseInt(client.queryForObject("selectCount").toString());
return count;
}
public int getUserPage(int rows) throws Exception{
int count = this.getUserCount();
int maxPage = count%rows==0 ? count/rows : count/rows+1;
return maxPage;
}
}
public List getUserByPage(int begin,int max) throws Exception{
Reader reader=Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient client=SqlMapClientBuilder.buildSqlMapClient(reader);
Map map=new HashMap();
map.put("begin", begin);
map.put("max", max);
List list= client.queryForList("selectUserByPage",map);
return list;
}
public int getUserCount() throws Exception{
Reader reader=Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient client=SqlMapClientBuilder.buildSqlMapClient(reader);
int count = Integer.parseInt(client.queryForObject("selectCount").toString());
return count;
}
public int getUserPage(int rows) throws Exception{
int count = this.getUserCount();
int maxPage = count%rows==0 ? count/rows : count/rows+1;
return maxPage;
}
}
OK,这就是第一个小案例了……
至于理论上的知识,我们一起期待吧……
本文出自 “追梦纯” 博客,请务必保留此出处http://zmcjava.blog.51cto.com/4714945/823560