ibatis 学习之一 环境搭建,简单小demo练习

来源:互联网 发布:java虚拟机 周志明 编辑:程序博客网 时间:2024/06/05 20:09

最近准备好好学习下ibatis,同时把学习的点滴记录下来,这样子以后可以温故而知新,还可以增加自己的记忆

首先,我们搭建一个简单的ibatis的环境的时候,需要的ibatis简单jar包一个,可以到apache网站上面下载。接下来,就是本地有oracle或者别的数据库软件。或者远程也可以。

剩余的需要oracle的各种驱动包可以到oracle的环境中去找到。


如上图,是我的eclipse ibatis的demo的全部的文件。

接下来,简单介绍下:

1:SqlMapConfig.xml:

该文件是ibatis的基础配置文件,其中配置了各种数据库连接信息等,如下:

<?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>  <!-- Configure a built-in transaction manager.  If you're using an        app server, you probably want to use its transaction manager        and a managed datasource -->  <transactionManager type="JDBC">    <dataSource type="SIMPLE">      <property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver"/>      <property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@127.0.0.1:1521:ORCL"/>      <property name="JDBC.Username" value="shikenian"/>      <property name="JDBC.Password" value="shikenian520"/>    </dataSource>  </transactionManager>  <!-- List the SQL Map XML files. They can be loaded from the        classpath, as they are here (com.domain.data...) -->         <sqlMap resource="com/skn/ibatis/data/User_Account.xml"/>  <!-- List more here...  <sqlMap resource="com/skn/ibatis/data/user"/>  --></sqlMapConfig>
其中,事物管理节点中配置类型为JDBC :transactionManager type="JDBC"

dataSource 我们选择了内置的一个dataSource,SIMPLE。

其中dataSource的各种参数配置上面的xml文件中,主要是对数据库的连接参数。解下来事物节点中还有很多别的节点,这里就不介绍了。
接下来介绍下SqlMap节点,这个节点主要是为了指向具体的封装了sql语句的xml文件。可以配置多个。


User_Account.xml

这个xml文件定义了对数据库的操作。具体的sql语句都分装在里面,如下:

<?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 namespace="Account"><!-- Use type aliases to avoid typing the full classname every time. --><typeAlias alias="UserAccount" type="com.skn.ibatis.domain.UserAccount" /><!-- A simpler select example without the result map. Note the aliases to match the properties of the target result class. --><select id="selectAccountById" parameterClass="int" resultClass="UserAccount">select userID as userID,userName as userName,password as password from shikenian.user_account where userid= 1</select><insert id="insert_userAccount">    insert into shikenian.user_account     values    (3,'insertuser','insertpassword')    </insert></sqlMap>


其中,可以定义insert、select、update、delete等sql语句

每个操作都有唯一的一个id,我们在代码中需要通过id来调用xml文件中定义的sql操作。

操作中,有ParameterClass、resultClass属性,其中,ParameterClass语句是用来表示方法传递下来的数据类型的。

resultClass属性表示的我们搜索出来的结果,需要映射到的Pojo的。


SimpleExample.java文件:

在这个类中的main方法中定义了简单的操作,如下:

public static void main(String[] args) throws IOException, SQLException {String resource = "com/skn/ibatis/data/SqlMapConfig.xml";Reader reader = Resources.getResourceAsReader(resource);SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);Integer id = 2;// Object xx = sqlMap.insert("insert_userAccount");UserAccount userAccount = (UserAccount)sqlMap.queryForObject("selectAccountById");System.out.println(<span style="font-family: Arial, Helvetica, sans-serif;">userAccount</span><span style="font-family: Arial, Helvetica, sans-serif;">);</span>}
需要注意的是:

需要通过ibatis中提供的Resoures类来读取配置文件,然后通过我们的 SqlMapClientBuilder来获取sqlMapClient对象,通过这个对象,就可以对数据库进行操作了。

比如上图就调用了insert语句和查询语句,并且查询的结果会自动地注入到我们定义的pojo类中的。

Pojo类就是上图简单的UserAccount类,其中封装了一些参数,和settter、getter方法,如下:

package com.skn.ibatis.domain;public class UserAccount {private int userID;private String userName;private String password;public int getUserID() {return userID;}public void setUserID(int userID) {this.userID = userID;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return new StringBuilder().append("userID is :").append(userID).append(",userName is :").append(userName).append(",password is :").append(password).toString();}}


最终程序执行的结果如下:




数据库中数据如下:





0 0
原创粉丝点击