//i-Batis现已正式更名为MyBatis

//以Mysql为例,仅为了测试就把文件都丢到一个包下

1.配置环境,导入jdbc包和i-Batis包

2.构建实体Hero

package test;

public class Hero {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString()
{
return "id="+id+",name="+name+"\n";
}
}

 

2.构建DAO接口

package test;
import java.util.List;
public interface DAO {
public List<Hero> selectAllHero();
public Hero selectHeroById(int id);
public boolean addHero(Hero h);
public boolean delById(int id);
}

 

3.创建Impl用于定义DAO中的函数

package test;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import test.*;
public class Impl implements DAO{
private static final Object Hero = null;
private static SqlMapClient sqlMapClient = null;
static {
try {
Reader reader = Resources.getResourceAsReader("test/SqlMapConfig.xml");
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public List<Hero> selectAllHero() {
// TODO Auto-generated method stub
List<Hero> Heros = null;
try {
Heros = sqlMapClient.queryForList("selectAllHero");
} catch (SQLException e) {
e.printStackTrace();
}
return Heros;
}

@Override
public Hero selectHeroById(int id) {
// TODO Auto-generated method stub
Hero h = null;
try {
h = (Hero) sqlMapClient.queryForObject(
"selectHeroById", id);
} catch (SQLException e) {
e.printStackTrace();
}
return h;
}


@Override
public boolean addHero(Hero h) {
// TODO Auto-generated method stub
boolean flag = false;
try {
if(null != sqlMapClient.insert("addHero",h)){
flag = true;
}
} catch (Exception e) {
e.printStackTrace();
}

return flag;
}


@Override
public boolean delById(int id) {
// TODO Auto-generated method stub
boolean flag = false;
Object ob = null;
try {
ob = sqlMapClient.delete("delById",id);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(ob != null)
flag = true;
return flag;
}

}

4.创建SqlMap.properties文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/conn
username=root
password=123456

 

5.创建Hero.xml

<?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>
<!-- 通过typeAlias使得我们在下面使用Student实体类的时候不需要写包名 -->
<typeAlias alias="Hero" type="test.Hero"/>
<!-- 这样以后改了sql,就不需要去改java代码了 -->
<!-- id表示select里的sql语句,resultClass表示返回结果的类型 -->
<select id="selectAllHero" resultClass="Hero">
select * from hero
</select>
<!-- parameterClass表示参数的内容 -->
<!-- #表示这是一个外部调用的需要传进的参数,可以理解为占位符 -->
<select id="selectHeroById" parameterClass="int" resultClass="Hero">
select * from hero where id=#id#
</select>

<insert id = "addHero" parameterClass="Hero">
insert into hero(id, name) values(#id#, #name#)
<selectKey resultClass="int" keyProperty="id" > 
SELECT @@IDENTITY AS ID
</selectKey> 
</insert>

<delete id= "delById" parameterClass="int">
delete from hero where id= #id#
</delete>
<!-- 注意这里的resultClass类型,使用Student类型取决于queryForList还是queryForObject -->
</sqlMap>

 

6.创建SqlMapConfig.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">
<sqlMapConfig>
<!-- 引用JDBC属性的配置文件 -->
<!--<propertiesresource="test/SqlMap.properties"/>-->
<properties resource="test/SqlMap.properties"/>
<!-- 使用JDBC的事务管理 -->
<transactionManager type="JDBC">
<!-- 数据源 -->
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}"/>
<property name="JDBC.ConnectionURL" value="${url}"/>
<property name="JDBC.Username" value="${username}"/>
<property name="JDBC.Password" value="${password}"/>
</dataSource>
</transactionManager>
<!-- 这里可以写多个实体的映射文件 -->
<sqlMap resource="test/Hero.xml"/>
</sqlMapConfig>

 

6.测试Tester

package test;
import java.util.List;
public class Tester {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Impl i = new Impl();
System.out.println("测试查询所有");
List<Hero> Heros = i.selectAllHero();
for (Hero hero : Heros) {
System.out.println(hero);
}

System.out.println("测试插入");
Hero h = new Hero();
h.setId(6);
h.setName("FF");
System.out.println(i.addHero(h));

System.out.println("测试查询所有");
Heros = i.selectAllHero();
for (Hero hero : Heros) {
System.out.println(hero);
}

System.out.println("测试根据id查询");
System.out.println(i.selectHeroById(6));

System.out.println("测试删除");
System.out.println(i.delById(6));

System.out.println("测试查询所有");
Heros = i.selectAllHero();
for (Hero hero : Heros) {
System.out.println(hero);
}
}

}

 

//以上暂时只是在原有数据库表中进行查询,添加和删除。