- 浏览: 1571915 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
可能有些人 都用上了Mybatis, 但是有的公司 可能还在用ibatis.
Ibatis-Home(官网) 想了解更多的 就看看.
myeclipse 插件地址
http://ibatis.apache.org/tools/abator
Ibatis的优点(与JDBC相比)
1.减少了约61%代码量
2.配置 使用简单
3.架构性能增强
4.SQL 语句和程序代码分离
5.简化项目中的分工
6.增强移植性
下面开始 简单应用 (CRUD)
1.使用的jar
ibatis-2.3.4.726.jar (ibatis就用这个jar就可以了)
ojdbc6.jar (oracle 的驱动)
SqlMapConfig.properties
SqlMapConfig.xml
Student.xml
IStudentDAO.java
IStudentDAOImpl.java
Ibatis-Home(官网) 想了解更多的 就看看.
myeclipse 插件地址
http://ibatis.apache.org/tools/abator
Ibatis的优点(与JDBC相比)
1.减少了约61%代码量
2.配置 使用简单
3.架构性能增强
4.SQL 语句和程序代码分离
5.简化项目中的分工
6.增强移植性
下面开始 简单应用 (CRUD)
1.使用的jar
ibatis-2.3.4.726.jar (ibatis就用这个jar就可以了)
ojdbc6.jar (oracle 的驱动)
SqlMapConfig.properties
driver=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@127.0.0.1:1521:orcl username=test password=test
SqlMapConfig.xml
<?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 --> <properties resource="SqlMapConfig.properties"/> <transactionManager type="JDBC" commitRequired="false"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="${driver}"/> <property name="JDBC.ConnectionURL" value="${url}"/> <property name="JDBC.Username" value="${username}"/> <property name="JDBC.Password" value="${password}"/> </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/ibatis/student/Student.xml"/> <!-- List more here... <sqlMap resource="com/mydomain/data/Order.xml"/> <sqlMap resource="com/mydomain/data/Documents.xml"/> --> </sqlMapConfig>
Student.xml
<?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> <typeAlias alias="Student" type="com.ibatis.student.Student"/> <select id="queryAllStudent" resultClass="Student"> select * from student </select> <select id="queryStudentById" parameterClass="int" resultClass="Student"> select * from student where sid=#sid# </select> <!-- 这个里面的 占位符 就不能乱写了 因为会调用 Student 的 getSid ...getSname() .. --> <insert id="addStudent" parameterClass="Student"> insert into student(sid,sname,major,birth,score) values (#sid#,#sname#,#major#,#birth#,#score#) </insert> <!-- #sid# 这个 只是一个占位符 可以更改的 --> <delete id="deleteStudentById" parameterClass="int"> delete from student where sid=#sid# </delete> <update id="updateStudent" parameterClass="Student"> update student set sname=#sname#, major=#major#, birth=#birth#, score=#score# where sid=#sid# </update> <!-- 如果参数 要拼接成一个表达式 就要将# 换成 $ --> <select id="queryStudentByName" parameterClass="String" resultClass="Student"> select sid,sname,major,birth,score from student where sname like '$sname$' </select> <!-- Student 不区分大小写的 --> <insert id="insertStudentBySequence" parameterClass="Student"> <selectKey resultClass="int" keyProperty="sid"> select STUDENT_SEQ.nextVal from dual </selectKey> insert into student(sid,sname,major,birth,score) values (#sid#,#sname#,#major#,#birth#,#score#) </insert> </sqlMap>
IStudentDAO.java
package com.ibatis.student; import java.util.List; public interface IStudentDAO { public void addStudent(Student student); //使用自动增长 主键 public void addStudentBySequence(Student student); public void delStudentById(int id); public void updStudentById(Student student); public List<Student> queryAllStudent(); //使用模糊查询 public List<Student> queryStudentByName(String name); public Student queryStudentById(int id); }
IStudentDAOImpl.java
package com.ibatis.student; import java.io.IOException; import java.io.Reader; import java.sql.Date; import java.sql.SQLException; import java.util.List; import com.ibatis.sqlmap.client.SqlMapClient; public class IStudentDAOImpl implements IStudentDAO { private static SqlMapClient sqlMapClient=null; static{ try { Reader reader=com.ibatis.common.resources.Resources.getResourceAsReader("SqlMapConfig.xml"); sqlMapClient=com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(reader); reader.close(); }catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void addStudent(Student student) { // TODO Auto-generated method stub try { sqlMapClient.insert("addStudent", student); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void addStudentBySequence(Student student) { // TODO Auto-generated method stub try { //1.从数据库徐磊中获取主键值 //2.往 student表中插入记录 sqlMapClient.insert("insertStudentBySequence", student); System.err.println(student.getSid()); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void delStudentById(int id) { // TODO Auto-generated method stub try { System.out.println(sqlMapClient.delete("deleteStudentById", id)); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public List<Student> queryAllStudent() { // TODO Auto-generated method stub List<Student> studentList=null; try { studentList=sqlMapClient.queryForList("queryAllStudent"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return studentList; } public Student queryStudentById(int id) { Student student=null; try { student=(Student)sqlMapClient.queryForObject("queryStudentById",id); } catch (Exception e) { e.printStackTrace(); } return student; } public List<Student> queryStudentByName(String name) { // TODO Auto-generated method stub List<Student> studentList=null; try { studentList=sqlMapClient.queryForList("queryStudentByName", name); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return studentList; } public void updStudentById(Student student) { // TODO Auto-generated method stub try { System.out.println(sqlMapClient.update("updateStudent", student)); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String [] args){ IStudentDAO dao=new IStudentDAOImpl(); //1. // for (Student student : dao.queryAllStudent()) { // System.out.println(student); // } //2. // System.out.println(dao.queryStudentById(1)); //3. // Student student=new Student(); // student.setSid(5); // student.setSname("admin"); // student.setScore(100); // student.setMajor("Games"); // student.setBirth(Date.valueOf("2008-08-08")); // // dao.addStudent(student); //4. // dao.delStudentById(1); //5. // Student student=new Student(); // student.setSid(2); // student.setSname("luob"); // student.setScore(50); // student.setMajor("Games"); // student.setBirth(Date.valueOf("2008-08-08")); // dao.updStudentById(student); //6. // for (Student student : dao.queryStudentByName("l%")) { // System.out.println(student); // } //7. Student student=new Student(); student.setSid(2); student.setSname("SMITH"); student.setScore(50); student.setMajor("Games"); student.setBirth(Date.valueOf("2008-08-08")); dao.addStudentBySequence(student); } }
ibatis in语句参数传入方法 Posted on 2012-02-03 10:11 yuhaibo736 阅读(2925) 评论(1) 编辑 收藏 第一种:传入参数仅有数组 <select id="GetEmailList_Test" resultClass="EmailInfo_"> select * from MailInfo with (nolock) where ID in <iterate open="(" close=")" conjunction="," > #[]# </iterate> </select> 调用 string[] strValue = new string[] { "1", "2", "3" }; Reader.QueryForList<EmailInfoModel>("WebApp_Ibatisnet.dao.GetEmailList_Test", strValue ); 第二种:传入参数有数组,且有其他数据 <select id="GetEmailList_Test3" parameterClass="TestIn" resultClass="EmailInfo_"> select top(#Count#)* from MailInfo with (nolock) where ID in <iterate open="(" close=")" conjunction="," property="ArrValue" > #ArrValue[]# </iterate> </select> 调用 TestIn ti = new TestIn(); ti.Count = 1; ti.ArrValue = strValue; return Reader.QueryForList<EmailInfoModel>("WebApp_Ibatisnet.dao.GetEmailList_Test3", ti); 实体类: public class TestIn { private int count; public int Count { get { return count; } set { count = value; } } private string[] arrValue; public string[] ArrValue { get { return arrValue; } set { arrValue = value; } } } 第三种:in后面的数据确定,使用string传入 <select id="GetEmailList_Test2" parameterClass="TestIn" resultClass="EmailInfo_"> select * from MailInfo with (nolock) where ID in ($StrValue$) </select> 调用 Reader.QueryForList<EmailInfoModel>("WebApp_Ibatisnet.dao.GetEmailList_Test2", "1,2,3"); <!-- 其他信息: Iterate的属性: prepend -可被覆盖的SQL语句组成部分,添加在语句的前面(可选) property -类型为java.util.List的用于遍历的元素(必选) open -整个遍历内容体开始的字符串,用于定义括号(可选) close -整个遍历内容体结束的字符串,用于定义括号(可选) conjunction -每次遍历内容之间的字符串,用于定义AND或OR(可选) <iterate>遍历类型为java.util.List的元素。--> <!--like--> <select id="selectAccount" resultMap="AccountResult" parameterClass="Account"> select * from ACCOUNT <dynamic prepend="where"> <isNotNull property="id" prepend="and" open="(" close=")"> id = #id# </isNotNull> <isNotEmpty property="name" prepend="and"> name like '%$name$%' </isNotEmpty> </dynamic> </select>
相关推荐
ibatis简单应用
ibatis框架简单应用
ibatis简单应用及配置
Ibatis增删改简单应用配置示例说明实例 oracle 11g + ibatis2
Ibatis增删改简单应用配置示例说明,及项目 第一次写文档,请大家多包涵
简单的ibatis入门实例(全代码),附带数据库以及表格创建语句,适合新手学习
一个Ibatis。net 的应用事例 数据库为oracle 用vs2008 导入即可使用。
Web :前台应用; 2. BLL :业务处理层,如果嫌麻烦,可以再进一步抽象出来,然后将代码放置Web层的aspx.cs里面; 3. Model :这个就不多说了,地球人都知道(数据实体类) 4. SqlMaps:资源类,把配置文件和sql ...
书中既详实地介绍了iBATIS的设计理念和基础知识,也讨论了动态SQL、高速缓存、DAD框架等高级主题,还讲解了iBATIS在实际开发中的应用。书的最后给出了一个设计优雅、层次清晰的示例程序JGameStore,该示例涵盖全书的...
使用iBATIS只要五分钟我们就可以创建一个完整的应用程序了——当然这不是大型的ERP(Enterprise Resource Planning)解决方案,也不是大规模的电子商务网站,只是一个简单的命令行工具,它可以执行iBATIS SQL Map中...
iBATIS[2]是一个可以设计和实现更好的 Java/.NET 应用程序持久化层的框架。iBATIS 把对象和存储过程或者使用 XML 描述符的 SQL 语句进行了关联。简单是 iBATIS 最大的优势
这个框架将让你能够更好的在JAVA应用中设计和实现实体层。这个框架有两个主要的组成部分,一个是SQL Maps,另一个是Data Access Objects。另外还包括一些可能很有用的工具。 SQL Maps: Sql Maps是这个框架中最...
iBatis 是一套简单易学的持久层框架,应用范围也比较广发,与jdbc 相比,简化了JDBC 的百分之61 的代码量,将Sql 语言与java 程序分离,便于维护和开发,ORM 关系映射上比 JDBC 更加容易更加方便这些有点足以让我们...
iBATIS的安装过程快速而简单。它是一个类库,而不是应用程序,所以实际上并不需要安装,但要在应用程序中使用它还是要经过几个步骤。 如果您熟悉C#和ADO.NET,那么可能需要好好阅读本章为下面的一两章做好准备。...
Strust2+Spring+ibatis整合开发实例的一个简单应用。
iBatis是一个简单易用的、灵活的Java ORM工具包,iBatis执行效率非常高,接近于JDBC的代码的效率,因此iBatis适合做对数据性能要求很高的应用系统。 iBatis目前的最新版本是3.02,最稳定的版本是2.3.4,由于iBatis的...
适合于初学者, 能了解struts2、spring、iBatis之间的简单的应用。
ibatis 开发指南 ibatis Quick Start............................................................................................ 5 准备工作...........................................................
iBATIS不会对现存应用的设计或者数据库结构强加任何影响 iBATIS非常适合于有成长趋势的系统 3.iBATIS之于大型、企业级系统:为之而设计 iBATIS的某些特性使得它能够高效地处理大型数据集 iBATIS允许你用多种方式...
从概念上说,持久层可以分为3层,而iBATIS使得对这些不同的层进行单元测试都变得非常简单,如图13-1所示。对映射层所进行的单元测试,可能是在大部分应用程序中所发生的最低层次的单元测试了。此过程包括对SQL语句...