ibaties框架入门、配置及小测试

 

对比学习Hibernate,ibaties框架的学习思路:

1、与Hibernate的区别:Hibernate中的实体类与一个表相对应,而ibatis映射的是SQL查询结果集进行映射,就是说不是把一个表建立为一个实体类,而是把sql中的参数作为一个实体类。Hibernate会自动生成SQL语句,而ibatis需要我们自己编写SQL语句写好后,根据我们的映射调用相应语句执行。

2、主要操作的类与接口

3、ORM关系映射或者配置的XML

4、进行小测试

 

测试ibaties过程:

1、ibaties环境的搭建:创建一个java工程,导入ibaties相关的jar包,ibaties版本号.jar,以及数据库的驱动包

2、在src目录下创建一个.xml的映射文件,保存数据库中的一些信息,例如创建一个MySqlMapConfig.xml

<sqlMapConfig>

    //如果你将数据库的一些配置信息放在sqlMapConfig.properties

         //中,则需要写上properties表示加载配置信息,在下面引用即可

         <properties resource="sqlMapConfig.properties"/>

//数据库中的优化一些配置信息,缓存、懒加载等

         <settings

                  cacheModelsEnabled="true"

                  enhancementEnabled="true"

                  lazyLoadingEnabled="true"

                  errorTracingEnabled="true"

                  maxRequests="32"

                  maxSessions="10"

                  maxTransactions="5"

                  useStatementNamespaces="false"

         />

    //用一个类型别名代替

         <typeAlias alias="book" type="cn.com.ibatis.pojo.Book"/>

         <transactionManager type="JDBC">

                  <dataSource type="SIMPLE">

                          <property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />

                          //引用sqlMapConfig.properties中的值信息

                          <property name="JDBC.ConnectionURL" value="${url}" />

                          <property name="JDBC.Username" value="${username}" />

                          <property name="JDBC.Password" value="${password}" />

                  </dataSource>

         </transactionManager>

         //引用实体类的映射文件

         <sqlMap resource="cn/com/ibatis/pojo/ebook.xml" />

</sqlMapConfig>

3、写上相对应的实体和实体的映射文件,只是这个映射文件不再是Hibernate中的实体类相对应的映射文件,而是实体中相对应的SQL语句中的参数的映射,只是SQL语句中的相对应的字段要和实体类中的属性相对应

实体类:

public class Book{

  private int b_id;

  private String b_name;

  private float b_price;

生成相对应的set和get方法。

}

<!-- SlqMap映射文件   映射文件包括 SQL 语句和参数对象和结果对象的映射 -->

<sqlMap>

    //一个查询的结果集对应一个类,将要关联的表的字段作为属性放在

         //这个类中,当涉及多张表的字段的时候,将涉及的字段全写在一个

         //类中,而不要每张表建立一个实体类,因为ibaties关联的是SQL的结果集

         <select id="getBook" resultClass="cn.com.ibatis.pojo.Book,">

                  select

                  name as b_name(属性名),

                  id as b_id,

                  price as b_price

                  from book

                  where id = #b_id(属性名)# 

         </select>

         <update id="updateBook" parameterClass="cn.com.ibatis.pojo.Book">

                  update book set name = #b_name# where id = #b_id#

         </update>

         <insert id="insertBook" parameterClass="cn.com.ibatis.pojo.Book">

                  insert into book values(#b_id#,#b_name#,#b_price#)

         </insert>

         <delete id="deleBook">

                  delete from book where id = #b_id#

         </delete>

</sqlMap>

4、编写测试代码,其中有一个很关键的类:SqlMapClient,相当于Hibernate中的session,执行的各种增删查改的方法都封装到这个类中

        

         public static void testSelect()throws Exception{

                  SqlMapClient client = null;// session

                  //读取MySqlMapConfig.xml中的配置信息

                  Reader reader = Resources.getResourceAsReader("MySqlMapConfig.xml");

                  client = SqlMapClientBuilder.buildSqlMapClient(reader);

                  //getBook是实体类映射文件中的查询语句中的id号

                  Object obj = client.queryForObject("getBook",6);

                  Book book = (Book)obj;

                  System.out.println(book.getB_name());

         }

   

    public static void main(String[] args)throws Exception{

                  // TODO Auto-generated method stub

                  testSelect();

         }

 

 

 

 

 

 

 

你可能感兴趣的:(sql,框架,Hibernate,exception,ibatis,properties)