初识ibatis之基本用法

ibatis internet”和“abatis”的组合,是一种“半自动化”的ORM实现。

 

ibatis 它是一种轻量级的框架,据冯文老师说它是最能让程序员感到情切的因为他的数据库实现需要我们来写数据库的代

 

码。区别于Hibernate。

 

 首先要做的是把下面的代码写入log4j配置文件里面用控制台打出,以便我们观察控制台输出的语句,也就是他生成的SQL代码。作

 

为初学者我有必要看下:

log4j.logger.com.ibatis=DEBUG 
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG 
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG 
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG 
log4j.logger.java.sql.Connection=DEBUG 
log4j.logger.java.sql.Statement=DEBUG 
log4j.logger.java.sql.PreparedStatement=DEBUG 

然后数据库配置文件db.properties:

driver=net.sourceforge.jtds.jdbc.Driver
url=jdbc:jtds:sqlserver://127.0.0.1:1433/users
logon_name=sa
logon_password=sa

 

 现在我所关注的就是ibatis的一些情况了:

 

1.SQL Map XML配置文件

 

<properties>元素 ,<setting>元素 ,<typeAlias>元素 ,<sqlMap>元素 我暂时研究这些元素。

 

<properties>元素:在属性文件中定义的属性作为变量在 SQL Map 配
置文件中的引用。

 

 

 <setting>元素 :主要是优化性能方面的。

 

<typeAlias>元素:主要是给较长的类取别名用的。

 

<sqlMap>元素:主要是读取问件路径的。

 

2.SQL Map XML映射文件

 

parameterClass 、parameterMap 、resultClass 、resultMap 只作这几个的用法

 

GO!GO!

 

配置一个文件。

<?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>

  <!-- 读取propertise 文件里面的信息 -->
  <properties resource="db.properties" />   <!-- 这是 加载db.properties属性文件的路径 -->

  <transactionManager type="JDBC" commitRequired="true">
    <dataSource type="SIMPLE">
      <property name="JDBC.Driver" value="${driver}"/>
      <property name="JDBC.ConnectionURL" value="${url}"/>
      <property name="JDBC.Username" value="${logon_name}"/>
      <property name="JDBC.Password" value="${logon_password}"/>
    </dataSource>
  </transactionManager>

  <!--   读取user.xml 文件-->
 
  <sqlMap resource="user.xml"/>
</sqlMapConfig>
    

 

 然后在写一个配置文件让User类的属性和数据库的字段相关联起来:

 

 

package com.lovo.lis.model;

public class User {
	private int id;
	private String name;
	private String password;
	public User(){
		
	}
	public User( String name,String password){
		this.name=name;
		this.password=password;
	}
	public User(int id, String name,String password){
		this.id=id;
		this.name=name;
		this.password=password;
	}
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
}

 

 

 配置文件

<?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="u">
  
  <!-- 为com.lovo.lis.model配置一个别名方便下面引用 -->
  <typeAlias alias="user" type="com.lovo.lis.model.User"/>
  
  
  <!-- 配置一个parameterMap 针对User所有属性 -->
  <parameterMap class="user" id="allUserPM">
    <parameter property="id"/>
    <parameter property="name"/>
    <parameter property="password"/>
  </parameterMap>
  
  <!-- 添加一条记录 使用parameterMap 注意?和parameterMap声明属性的个数/顺序匹配-->
  <insert id="saveUserByParameterMap" parameterMap="allUserPM">
     <![CDATA[
      insert into t_user(u_id,u_name,u_password) values
      (?,?,?)
    ]]>
  </insert>
  
  <!--根据id查询1条记录 利用xmlResultSetName查询1条记录 通过列别名映射到对象属性 -->
  <select id="getUserById" parameterClass="java.lang.Integer" resultClass="user">
    <![CDATA[
       select u_id id,u_name name,u_password password
       from t_user where u_id=#i#
    ]]>
  </select>
  
  <!-- 针对select * from t_user结果集的映射 -->
  <resultMap class="user" id="allUserRM">
    <result property="id" column="u_id"/>
    <result property="name" column="u_name"/>
    <result property="password" column="u_password"/>
  </resultMap>
  
  <!-- 查询所有记录 -->
  <select id="findAllUsers" resultMap="allUserRM">
  <![CDATA[
       select u_id,u_name,u_password
       from t_user
    ]]>
  </select>
  
  <!-- 查询所有记录 使用xmlResultSetName 通过列别名映射查询-->
  <select id="findAllUsers2" resultClass="user">
  <![CDATA[
       select u_id id,u_name name,u_password password
       from t_user
    ]]>
  </select>
  
  <!-- 按id修改用户名和密码 使用InLine Parameter -->
  <update id="updateUser" parameterClass="user">
    <![CDATA[
       update t_user set u_name=#name#,u_password=#password#
       where u_id=#id#
    ]]>
  </update>
  
  <!-- 按id删除记录 -->
  <delete id="deleteUserById" parameterClass="java.lang.Integer">
    <![CDATA[
       delete from t_user
       where u_id=#i#
    ]]>
  </delete>
  
  <!-- 按用户名和密码查询 使用Map类型输入参数 
                  注意##之间的字符和Map中的键匹配-->
  <select id="findByNamePassword" parameterClass="java.util.Map" 
      resultClass="user">
    <![CDATA[
       select u_id id,u_name name,u_password password
       from t_user where u_name=#mName# and u_password=#mPassword#
    ]]>
  </select>
</sqlMap>

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值