ibatis使用介绍01
iBATIS是以SQL为中心的持久化层框架。能支持懒加载、关联查询、继承等特性。
iBATIS不同于一般的OR映射框架。OR映射框架,将数据库表、字段等映射到类、属性,那是一种元数据(meta-data)映射。iBATIS则是将SQL查询的参数和结果集映射到类。
?
所以,iBATIS做的是SQL Mapping的工作。
?
它把SQL语句看成输入以及输出,结果集就是输出,而where后面的条件参数则是输入。iBATIS能将输入的普通POJO对象、Map、XML等映射到SQL的条件参数上,同时也可以将查询结果映射到普通POJO对象(集合)、Map、XML等上面。
?
iBATIS使用xml文件来映射这些输入以及输出。
?
?
基于ibatis-2.3.0.677版本。
<?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> <transactionManager type="JDBC" commitRequired="false"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/> <property name="JDBC.ConnectionURL" value="jdbc:mysql://127.0.0.1/crm"/> <property name="JDBC.Username" value="root"/> <property name="JDBC.Password" value="mysql"/> </dataSource> </transactionManager> <sqlMap resource="com/ysen/model/User.xml"/>
3、创建实体类:User.java
public class User {private int id;private String username;private String password;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}}?
?
?
?
?
?
4、创建针对User对象的CRUD的xml映射配置:User.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> <!-- Use type aliases to avoid typing the full classname every time. --> <typeAlias alias="User" type="com.ysen.model.User"/> <!-- Select with no parameters using the result map for Account class. --> <select id="selectAllUsers" resultresultparameterparameterparameterparameterstyle="margin: 0cm 0cm 0pt;">5、创建测试程序测试:?
import java.io.Reader;import java.util.Iterator;import java.util.List;import com.ibatis.common.resources.Resources;import com.ibatis.sqlmap.client.SqlMapClient;import com.ibatis.sqlmap.client.SqlMapClientBuilder;/** * 最简单的形式! * @author Lee * */public class UserTest {/** * @param args */public static void main(String[] args) throws Exception{//从配置文件中得到SqlMapClient对象 Reader reader = Resources.getResourceAsReader("sqlMapConfig.xml");SqlMapClient sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);reader.close();//创建用户数据for(int i=0; i<10; i++){User user = new User();user.setUsername("用户"+i);user.setPassword("密码"+i);sqlMapper.insert("insertUser", user);}//查询用户数据List users = sqlMapper.queryForList("selectAllUsers");for (Iterator iter = users.iterator(); iter.hasNext();) {User user = (User) iter.next();System.out.println(user.getUsername());}//查询特定用户的数据User user = (User)sqlMapper.queryForObject("selectUser", 1);System.out.println("用户【id="+1+"】的名称是:"+user.getUsername());//更新用户的信息user = new User();user.setId(3);user.setUsername("更改之后的用户名称");user.setPassword("密码被更改");sqlMapper.update("updateUser", user);//删除用户的信息sqlMapper.delete("deleteUser", 6);}?