Ibatis的简单上手:
需求:查询所有的用户信息。
1、在总的配置文件中:
<sqlMapConfig>
<transactionManager type="JDBC" commitRequired="false"><!-- 使用JDBC的连接方式 -->
<dataSource type="SIMPLE"><!-- 数据源是简单的方式 -->
<property name="JDBC.Driver"value="oracle.jdbc.driver.OracleDriver"/>
<property name="JDBC.ConnectionURL"value="jdbc:oracle:thin:@localhost:1521:orcl"/>
<property name="JDBC.Username"value="admin"/>
<property name="JDBC.Password"value="123"/>
</dataSource>
</transactionManager>
<sqlMap resource="user.xml"/><!-- 加载实体类的配置文件,在理论上说,这个配置文件可以有无数个 -->
</sqlMapConfig>
2、实体类的映射文件:
<sqlMap>
<typeAlias alias="User" type="entity.User"/><!-- 指定是哪个实体类 -->
<select id="selectAllUser"resultClass="User"><!-- CRUD操作中之一 ,这里是查询所有的用户信息,resultClass表示返回值的类型-->
select * fromtb_user
</select>
</sqlMap>
3、userdao的接口:
import entity.User;
public interface UserDao {
//查询所有的用户信息
public List<User> getAllUser();
}
4、userdao的实现类:
public class UserDaoImpl implements UserDao {
private static SqlMapClient sqlMapClient=null;
static{
try {
Readerreader=com.ibatis.common.resources.Resources.getResourceAsReader("SqlMapConfig.xml");//去读取总的配置文件
sqlMapClient=com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public List<User>getAllUser() {
List<User>list=null;
try {
list=sqlMapClient.queryForList("selectAllUser");//这里的selectAllUser是sql语句的别名,在user.xml文件中。
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
public static void main(String[] args){
UserDaouserDaoImpl=new UserDaoImpl();
for(Useruser:userDaoImpl.getAllUser()){
System.out.println(user);
}
}
}
原理显而易见。在一开始的时候,总的控制文件就被加载到userdao的实现类中。
总的控制文件在读取的时候,加载实体类的控制文件。就这样,一层层的调用。