`
hongzhguan
  • 浏览: 272660 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ibati环境搭建和CURD操作

阅读更多
1.ibatis环境搭建
a.导入相关的jar包。

b.配置文件
   JDBC连接的属性文件
   总配置文件sqlMapConfig.xml
   关于每个实体的映射(map)文件entity.xml
  
c.定义一些业务方法。(接口中定义)
 
d.操作的实现CRUD
  借助SqlMapClient中的方法
   queryForObject----->返回Object
   queryForList------->返回List
   insert----->增加
   delete------>删除
   update------>修改

补充标签:
  I. typealias:类型绰号,避免类的全称。
  <typeAlias alias="Student" type="com.entity.Student"/> 
  I. select:查询
  <select id="selectAllStudents" resultClass="Student">
   select * from Student
   </select>
  
   注意:id:代表查询SQL语句。
         resultClass:返回的结果类型

------------------Ibatis中CURD的操作及标签讲解------------------------
1.ibatis环境搭建
a.导入相关的jar包。
b.配置文件
   JDBC连接的属性文件
   总配置文件sqlMapConfig.xml
   关于每个实体的映射(map)文件entity.xml
c.定义一些业务方法。(接口中定义)
d.操作的实现CRUD
  借助SqlMapClient中的方法
   queryForObject----->返回Object
   queryForList------->返回List
   insert----->增加
   delete------>删除
   update------>修改
补充标签:
I. typealias:类型绰号,避免类的全称。
  <typeAlias alias="user" type="com.entity.Users"/> 
   a.查询<select>标签
<sqlMap>
<select id="selectAllUsers" resultClass="user">
select * from users
</select>
注意:id:代表查询SQL语句。
     resultClass:返回的结果类型
b.查询返回单个对象
<select id="selectById" resultClass="user" parameterClass="int">
select * from users where user_id=#id#
</select>
注:parameterClass:参数类型
c.模糊查询(%与%之间用“$”)
<select id="selectByName" resultClass="user" parameterClass="String">
select * from users where user_name like '%$name$%'
</select>
c.增加信息(自动参数映射)
<insert id="addStudent" parameterClass="user">
insert into users(user_id,user_name,password,address,telephone,email,create_date)
values(#user_id#,#user_name#,#password#,#address#,#telephone#,#email#,#create_date#)
</insert>
注意:value中的参数必须与数据库中的字段一致。
d.增加信息(主键自动生成)
<insert id="addUserBySequence" parameterClass="user">
<!—设置主键生成的方式-->
<selectKey resultClass="int" keyProperty="user_id">
select hibernate_sequence.nextval from dual
</selectKey>
insert into users(user_id,user_name,password,address,telephone,email,create_date)
values(#user_id#,#user_name#,#password#,#address#,#telephone#,#email#,#create_date#)
</insert>
g.增加信息(使用外联参数添加信息)
<!-- 使用外联参数映射 -->
<parameterMap class="user" id="parameterUser">
<parameter property="user_id" jdbcType="int"/>
<parameter property="user_name" jdbcType="varchar"/>
<parameter property="password" jdbcType="varchar"/>
<parameter property="address" jdbcType="varchar"/>
<parameter property="telephone" jdbcType="varchar"/>
<parameter property="email" jdbcType="varchar"/>
<parameter property="create_date" jdbcType="varchar"/>
</parameterMap>
<insert id="addStudentMap" parameterMap="parameterUser">
insert into users(user_id,user_name,password,address,telephone,email,create_date)
values(?,?,?,?,?,?,?)
</insert>
e.删除信息(此处的参数不必与数据库中的一致)
<delete id="deleteUser" parameterClass="int">
delete from users where user_id=#id#
</delete>
f.修改信息(此处的参数必须与数据库中的一致)
<update id="updateUsers" parameterClass="user">
update users
          set user_name=#user_name#,
              password=#password#,
              telephone=#telephone#,
              email=#email#,
              create_date=#create_date#
              where user_id=#user_id#
</update>
</sqlMap>
2.ibatis在业务中调用Sql语句
private static SqlMapClient client=null;
static{
try {
Reader read=com.ibatis.common.resources.Resources.getResourceAsReader("com/ibaits/SqlMapConfig.xml");
client=com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(read);
read.close();
} catch (Exception e) {
e.printStackTrace();
}
}
a. 调用查询所有的方法
this.client.queryForList("selectAllUsers");
b. 调用模糊查询的方法
this.client.queryForList("selectByName", name参数名);
c. 调用查询单个对象的方法
this.client.queryForObject("selectById",id);
d. 调用增加的方法
this.client.insert("addStudent",user);
调用增加(自动生成主键)的方法
//从数据库中获取主键值
//向数据库中插入记录
this.client.insert("addUserBySequence", user);
e. 调用删除的方法(返回int)
this.client.delete("deleteUser",id);
f. 调用修改的方法(返回int)
this.client.update("updateUsers",user);

2.ibatis的标签详解(sqlMapConfig.xml)
a.<properties>元素
resource属性:属性文件从类路径中加载。
<!--加载连接数据库的配置文件 -->
  <properties resource="com/ibaits/jdbc.properties"/>
url属性:加载固定路径下的文件。
<properties resource="url地址/jdbc.properties"/>
b.<setting>元素:
用于配置和优化SqlMapClient实例的各选项
c. <transactionManager>元素:为SQL Map配置事务管理服务.
事务管理器别名:JDBC 、JTA 、EXTERNAL(自己管理事务)
d. <datasource>元素:SQL Map数据源设置了一系列参数。
Data Source Factory别名:SIMPLE 、DBCP 、JNDI 。
e.<sqlMap>元素: 包括SQL Map映射文件和其他的SQL Map配置文件.
<sqlMap resource="com/ibaits/Users.xml"/>
   注意:加载固定路径下的文件时用url属性。
3.ibatis的标签详解(entity.xml)
a. Statement的类型: 通用声明,可以用于任何类型的SQL语句。
注意:当出现运算符时,可以将含特殊字符的SQL语句放在XML的CDATA区里面。
<statement id="getUserById" parameterClass="int" resultClass="user">
<![CDATA[
select * from users where user_id>#id#
]]>
</statement>
注意:在SQL Server中主键自动生成方式
<insert id="insertStu" parameterClass="user">
insert into users (user_name)
values (#user_name#)
<selectKey resultClass="int" keyProperty="id" >
SELECT @@IDENTITY AS ID
</selectKey>
</insert>
b.存储过程的调用:通过<procedure>元素支持存储过程。
1. 参数类型3种:IN、OUT、INOUT。(用Mode设置)
2. 换两个字段(数据库表)和参数对象(Map)中的两个email
例如:<parameterMap id="swapParameters" class="map" >
<parameter property="email1" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/>
<parameter property="email2" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/>
</parameterMap>
<procedure id="swapEmailAddresses" parameterMap="swapParameters" >
{call swap_email_address (?, ?)}
</procedure>
3. ibatis的属性介绍(entity.xml)
parameterClass属性:Java类的全限定名
parameterMap属性:定义一系列有次序的参数系列,用于匹配JDBC PreparedStatement的值符号。
resultClass属性:可以让您指定一个Java类,根据ResultSetMetaData将其自动映射到JDBC的ResultSet。
xmlResultName属性:当直接把查询结果映射成XML document时,属性xmlResultName的值等于XML document根元素的名称。
例如:<select id="selectXML" parameterClass="int" resultClass="xml" xmlResultName="users">
select * from users where user_id=#id#
</select>
业务调用:List list=this.client.queryForList("selectXML", 3);
for (int i = 0; i < list.size(); i++) {
String s=list.get(i).toString();
System.out.println(s);
}
注意:大多数JDBC Driver只有在字段可以为NULL时需要指定jdbcType属性。
javaType属性:用于显式地指定被赋值参数Java属性的类名。
Inline Parameter Map(内嵌参数)属性:#value#
Map类型输入参数: 使用Map类(如HashMap,TreeMap等)作为参数对象。
例如:
<statement id=”insertProduct” parameterClass=”java.util.Map”>
select * from PRODUCT
where PRD_CAT_ID = #catId#
and PRD_CODE = #code#
</statement>











分享到:
评论

相关推荐

    IBati资料教程

    6. **关闭资源**:操作完成后,记得关闭SqlSession和SqlSessionFactory。 **特性与优势** 1. **动态SQL**:IBatis支持在XML中编写动态SQL,可以根据条件灵活地生成SQL语句。 2. **缓存机制**:内置的本地缓存和二...

    ibati摘录

    总结来说,Ibatis 是一个强大且灵活的持久层框架,它通过 SQL 映射和动态 SQL 功能,让开发者能更自由地操控数据库操作,同时保持代码的清晰性和可维护性。通过深入理解和熟练运用 Ibatis,开发者可以显著提高项目的...

    iBatis_Demo.rar_ibaties demo_ibatis de_ibatis mysql demo_ibati

    - **Mapper接口和XML配置文件**:例如`UserMapper.java`接口和对应的`UserMapper.xml`,定义SQL查询和操作,实现DAO(Data Access Object)层。 - **Model类**:如`User.java`,代表数据库中的表结构,用于数据...

    批处理工具加详细教程

    它可能包含了命令扩展、错误处理、变量操作等功能,使得批处理编程更加灵活和强大。 学习批处理不仅能够提升日常电脑操作的效率,还能为进阶系统管理、网络自动化、软件部署等领域打下坚实基础。通过深入理解和实践...

    源码分享-ibatis+dwr+jQuery

    **配置说明.docx**:这份文档可能包含了如何配置和运行该项目的步骤,包括服务器环境、数据库连接、DWR的设置等,对初学者非常有帮助。 **store**:这可能是一个目录,包含了与商店相关的业务逻辑代码,比如商品、...

    Memcache+spring+ibatis例子,包含单纯memcache例子

    包含最简单的memcache的使用,测试类MemCached.java; 在此基础上增加了memcahce和spring的整合,顺便使用了ibati,测试类SpringMemcacheTest.java 代码简洁,适合研究,参考

    ibatis —— docs.zip

    MyBatis生成器(MBG)是MyBatis MyBatis 和iBATIS的代码生成器。...MBG试图对简单CRUD(创建,检索,更新,删除)的大部分数据库操作产生重大影响。您仍将需要手工编写SQL和对象代码以进行联接查询或存储过程。

    ibatis的insert方法的返回值

    ibatis的insert方法的返回值。 介绍了mybaits如何处理返回值的问题。

Global site tag (gtag.js) - Google Analytics