Spring mvc ,spring ,ibatis 学习记录(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&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}";

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )