下面是關於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&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" />
查詢
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 這個類的屬性徹底對應
若是不對應,那麼能夠在這個類的屬性上增長註解代表:
@Table (name="users" )
public class User implements java.io.Serializable {
@Id
@Column (name="uid")
private String uid;
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 的方式調用。
首先在頁面須要引入標籤:
<%@ 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}";