文档章节

Spring mvc ,spring ,ibatis 学习记录(2)

落雪有声踏地无痕
 落雪有声踏地无痕
发布于 2014/10/08 10:12
字数 720
阅读 23
收藏 2

下面是关于iBATIS部分的


使用的是 c3p0的数据库连接池

配置文件如下:

<!-- 连接池 -->

     <bean id="ds1"  class="com.mchange.v2.c3p0.ComboPooledDataSource">

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

         <property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/maven?useUnicode=true&amp;characterEncoding=utf8"/>

         <property name="user" value="root"/>

         <property name="password" value="root"/>

     </bean>  

     <!-- 对应的映射文件 -->

     <bean id="sqlMapClient1" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">

         <property name="configLocation" value="WEB-INF/classes/SqlMaps-template.xml"></property>

         <property name="dataSource" ref="ds1"/>

     </bean>

    

      <!-- 事务管理 -->

     <bean id="tm1" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

         <property name="dataSource" ref="ds1"/>

     </bean>

<tx:annotation-driven transaction-manager="tm1" />

 

iBATIS的增删改查

查询 

typeAlias 是定义一个别名,在引用的时候就不需要每次都输入包名+类名,只需一次引用

 

<typeAlias alias="Login" type="com.jokingus.model.pojo.Login" />

<typeAlias alias="User" type="com.jokingus.model.User" />  

<select id="login"  parameterClass="Login"  resultClass="User" >

      <![CDATA[

        select  * from users   where uid = #uid# and pwd=#pwd# limit 1

      ]]>

  </select>

使用:User user=(User) sqlMapClient.queryForObject("User.login",pojo);

注意:pojo这个对象的属性要与 <select>中的参数完全对应,即 

public class Login {

private int uid;

     private String pwd;

     public int getUid() {

         return uid;

     }

     public void setUid(int uid) {

         this.uid = uid;

     }

     public String getPwd() {

         return pwd;

     }

     public void setPwd(String pwd) {

         this.pwd = pwd;

     }

}

而返回的字段名要与com.jokingus.model.User 这个类的属性完全对应

如果不对应,那么可以在这个类的属性上增加注解表明:

@Entity

@Table (name="users"  )

public class User implements java.io.Serializable {

     @Id

     @Column (name="uid") 

     private String uid;  

     @Column

     private String pwd;

     @Column

     private String firstName;

     @Column

     private String lastName;

 

<parameterMap class="com.jokingus.model.UserBean" id="fullParameterOfUser">

     <parameter property="userName"  jdbcType="VARCHAR"  typeName="username"/>

     <parameter property="password"  jdbcType="VARCHAR" typeName="password"/>

     <parameter property="email"  jdbcType="VARCHAR" typeName="email"/>

     <parameter property="score"  jdbcType="INTEGER" typeName="score"/>

      <parameter property="registerDate"  jdbcType="Timestamp" typeName="registerdate"/>     

 </parameterMap>

 

     <insert id="user_register"  parameterMap="fullParameterOfUser">

              insert into t_user(

              username,password,email,score,registerdate

              )  values (

              ?,?,?,?,?

              )     

              <selectKey resultClass="int" keyProperty="u_id" >

             SELECT @@IDENTITY AS ID            <!-- 返回插入的数据的主键值 -->

             </selectKey>             

         </insert>

<!—删除操作 -->

<delete id="delete" parameterClass="User"  >

      <![CDATA[

       delete from users where uid= #uid#

      ]]>

</delete>

 

<!—更新操作 -->

  <update id="update" parameterClass="User"  >

      <![CDATA[

       update users set pwd=#pwd#,firstname=#firstName#,lastname=#lastName#  where uid=#uid#

      ]]>

</update>

iBATIS常用的操作函数:

sqlMapClient.queryForList()    // 返回一个列表

sqlMapClient.queryForObject()  // 返回的是单行记录,因此一定要保证SQL语句返回的结果最多一行记录

sqlMapClient.delete()    //删除

sqlMapClient.insert()     //插入

sqlMapClient.update()    //更新

 

iBATIS 传递多个参数还可以通过map映射的方式,但是不推荐,映射过程会很影响效率

<settings  useStatementNamespaces="true"  cacheModelsEnabled="true" /> 

//设置是不是可以使用命名空间          

命名空间的作用是为了防止id相同时引用错误,如果SQL语句很多,可以放置在不同的xml文件中,定义一个命名空间,如:namespace="User"   ,只要在一个文件中不出现重复id,不同文件间出现重复则不影响,我们调用时则是通过命名空间+id 的方式调用。  

 

Jstl的使用

首先在页面需要引入标签:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

需要的jar文件有:jstl.jar  , standard.jar 

普通的输出: ${info}   ${user.name}

List循环  <c:forEach var="apply" items="${apply_list}">

判断:<c:if test="${sessionScope.userName!=null}">

对于session 的调用: ${sessionScope.userName}

javascript中使用jstl

             var p_type="${product.p_type}";

 

 

 

© 著作权归作者所有

落雪有声踏地无痕
粉丝 1
博文 16
码字总数 8584
作品 0
济南
程序员
私信 提问
是不是公司用hibernate的要比ibatis的公司 技术强 公司完全开放源码的多吗 而不是只给个所谓平台jar包?

现在这个公司用ext spring mvc spring ibatis 对其进行了简单封装,spring模版类就是弄了个代理,ext还写成jsp自定义标签,完全看不到源码,只有一个封装好的平台(完全就是spring ibatis代理...

你是错的我恒对
2013/01/25
669
6
jfinal vs 9iuspring

9iuspring 是我维护的开源项目,基于spirng的再次封装,和springside类似.9iuspring本身就是一个完整的eclipse项目,spring一站式开发的范例,包含spring-core,spring jdbc,spring mvc.可以认为就...

光石头
2013/04/13
1K
6
Spring整合Ibatis之SqlMapClientDaoSupport

Spring通过DAO模式,提供了对iBATIS的良好支持。SqlMapClient对象是iBATIS中的主要对象,我们可以通过配置让spring来管理SqlMapClient对象的创建,继而整合iBatis和Spring。 与hibernate类似...

Gillian_Male
2012/08/03
0
1
spring的极简封装 - springrain

springrain,spring的极简封装. 5.0.0 项目入口是 springrain-system-web,基于Istio实现微服务,正在整理文档. 实现了什么? 不增加学习成本,像单体一样开发分布式微服务. 不修改业务代码,可以实...

光石头
2013/08/07
0
27
SSM三大框架整合(Spring+SpringMVC+MyBatis)

1、基本概念 1.1、Spring Spring 是一个开源框架, Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作 Expert One-On-One J2EE Development and Design 中阐述...

qq592fbb5b34ad7
2018/07/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql免安装版,服务无法启动没有抱任何错误

1.解压 2.新建my.ini [mysqld]# Remove leading # and set to the amount of RAM for the most important data# cache in MySQL. Start at 70% of total RAM for dedicated server, e......

榴莲黑芝麻糊
19分钟前
0
0
Qt编写安防视频监控系统3-通道交换

一、前言 最开始写通道交换的功能的时候,走了很多弯路,比如最开始用最初级的办法,触发交换的时候,先关闭视频,然后设置新的url重新打开视频,这样处理非常低级而且耗内存还卡还很慢,毕竟...

飞扬青云
19分钟前
0
0
如何远程调试部署在CloudFoundry平台上的nodejs应用

网络上关于如何本地调试nodejs应用的教程已经很多了,工具有Chrome开发者工具,Visual Studio Code,和nodejs周边的一些小工具等等。 在实际情况中,我们可能遇到本地运行良好,但是部署到C...

JerryWang_SAP
40分钟前
5
0
微信扫码访问网站调用默认浏览器打开如何实现?

我们在微信内分享链接或二维码的时候,我们会发现我们的网站是可以在浏览器里正常打开的,但就是不能在微信里打开,提示 “ 已停止访问该网页 ”,无论是聊天框也一样。说是系统检测到您的网...

明尼苏达哈士奇
48分钟前
3
0
一份Java程序员进阶架构师的秘籍,你离架构师还差多远

一、如何定义架构师 Java架构师,首先要是一个Java程序员,熟练使用各种框架,并知道它们实现的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,怎么解决并...

我最喜欢三大框架
56分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部