Spring mvc ,spring ,ibatis 學習記錄(2)

下面是關於iBATIS部分的javascript


使用的是 c3p0的數據庫鏈接池java

配置文件以下:mysql

<!-- 鏈接池 -->spring

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

         <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"/>session

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

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

     </bean>   maven

     <!-- 對應的映射文件 -->

     <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}";

相關文章
相關標籤/搜索