简单使用ibatis

 一:

使用ibatis进行对数据进行操作

 好处:数据库的配置和sql语句与程序是分开的,

1. 创建一个java项目,

2. 引入jar包:ibatis-2.3.4.726.jar ,mysql-connector-java-5.1.12-bin.jar

3. ibatis的配置文件,配置数据库和需要使用sqlXML

<?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://10.10.12.250:3306/uc?characterEncoding=utf8"/>
      <property name="JDBC.Username" value="root"/>
      <property name="JDBC.Password" value="root"/>
    </dataSource>

 </transactionManager>

 <sqlMap resource="test/ibatis/sql.xml"/>

</sqlMapConfig>

 4.准备需要的sql文件 sqlXML

<?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">
	<!-- ibatis 输入参数 -->
<sqlMap namespace="User">
	 <select id="selectUser" resultClass="hashmap" parameterClass="int">
	  	select * from uc_users where uid=#uid#
	 </select>
</sqlMap>

 特别注意:xml的前面不能有任何字符甚至是注释和空格

5. java 使用ibatis进行数据的增删改查

package test.ibatis;
import java.io.Reader;
import java.util.Map;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public class TestIbatis {
	
	 public static void main(String[] args) throws Exception{
		 
		 try{
	       //从配置文件中得到SqlMapClient对象
	       Reader reader = Resources.getResourceAsReader("sqlMapConf.xml");
	       SqlMapClient sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
	       reader.close();  
	       //查询用户数据
	       Map users = (Map) sqlMapper.queryForObject("selectUser", 5);
	       System.out.println(users);
		 }catch (Exception e) {
			System.out.println(e);
		}

	}
}

 二:对照直接查询mysql数据库,

该方式,数据库信息和sql语句是依赖于程序的,大项目里若修改必须重新编译,程序写的太死,可用性差

package inspur.data;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.DriverManager;
import java.sql.SQLException;


/*sqlAPi主要作用是: 与数据库建立连接\发送 SQL 语句\处理结果*/
public class TestJavaConMysql {
	static public  void main(String [] arg){
	/**
	 * 装载驱动程序Class.forName("com.mysql.jdbc.Driver")
	 * DriverManager:负责加载各种不同驱动程序(Driver),并根据不同的请求,向调用者返回相应的数据库连接(Connection)。
	 * 	Driver:驱动程序,会将自身加载到DriverManager中去,并处理相应的请求并返回相应的数据库连接(Connection)。\
	 *	Connection:数据库连接,负责与进行数据库间通讯,SQL执行以及事务处理都是在某个特定Connection环境中进行的。可以产生用以执行SQL的Statement。
	 *	Statement:用以执行SQL查询和更新(针对静态SQL语句和单次执行)。
	 *	PreparedStatement:用以执行包含动态参数的SQL查询和更新(在服务器端编译,允许重复执行以提高效率)。
	 *	CallableStatement:用以调用数据库中的存储过程。
	 *	SQLException:代表在数据库连接的建立和关闭和SQL语句的执行过程中发生了例外情况(即错误)
	 **/
	try{
		Connection cnn=null;
		Class.forName("com.mysql.jdbc.Driver");
		cnn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/uc_qingdao?user=root&password=&useUnicode=true&characterEncoding=utf-8");
		String querySql="select * from uc_users where uid>2000 and uid<10000 ";
		PreparedStatement stmt= cnn.prepareStatement(querySql);
		ResultSet rs = stmt.executeQuery(querySql);
		while(rs.next()){
			System.out.println(rs.getInt("uid"));
		}
	}catch(ClassNotFoundException e) {
		e.printStackTrace();
	} catch (SQLException e) {
		e.printStackTrace();
	}
	
	}

}

 三:与传统JDBC比较:

减少了61%的代码量

最简单的持久化框架,jar包只有300k,使用更简单主要定义一个主配置文件然后是各个子的sql文件,

sql代码从程序代码中彻底分离出来,可重用

可移植性强

四:

SqlMapClient 是一个接口,具体的实现类是SqlMapClientImp

可以映射定义好的javabean:

package test.ibatis;
import java.io.Reader;
import java.util.Map;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public class TestIbatis {
	
	 public static void main(String[] args) throws Exception{
		 
		 try{
	       //从配置文件中得到SqlMapClient对象
	       Reader reader = Resources.getResourceAsReader("sqlMapConf.xml");
	       SqlMapClient sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
	       reader.close();  
	       //查询用户数据,selectUser是sqlMap的id,后面是需要输入的参数
//	       Map users = (Map) sqlMapper.queryForObject("selectUser", 5);
//	       System.out.println(users);
	       //将ibatis的输出结果对应于javabean
	       User users = (User) sqlMapper.queryForObject("selectUser2", 5);
	       System.out.println(users.getUser_id());
		 }catch (Exception e) {
			System.out.println(e);
		}

	}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 注意:xml的最前面左尖括号前面不能有任何字符串,包括空格和注释 -->
<!-- sql-map-2.dtd 标签库 -->
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
	"http://ibatis.apache.org/dtd/sql-map-2.dtd">
	<!-- ibatis 输入参数 -->
<sqlMap namespace="User">
	 <select id="selectUser" resultClass="hashmap" parameterClass="int">
	  	select * from uc_users where uid=#uid#
	 </select>
	 <!-- resultClass="test.ibatis.User" 输出结果强转为提前定义好的javabean -->
	 <select id="selectUser2" resultClass="test.ibatis.User" parameterClass="int">
	  	select user_id,uid,login_email from uc_users where uid=#uid#
	 </select>
</sqlMap>

猜你喜欢

转载自lililucky1211.iteye.com/blog/1926182
今日推荐