Spring+SpringMVC综合练习

Spring+SpringMVC综合练习

Spring环境搭建步骤

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eNFC42MR-1594790742757)(C:\Users\l\AppData\Roaming\Typora\typora-user-images\image-20200701231238858.png)]

				入口:
                <li><a href="${pageContext.request.contextPath}/role/list">
			 			<i class="fa fa-circle-o"></i> 角色管理
					</a></li>

编写代码时候遇到的问题:

在spring-mvc.xml中,注意配置

	<!--1.Controller组件扫描-->
 <context:component-scan base-package="com.ry.controller"/>
 
 <!--2.配置内部资源视图解析器-->
 <bean id="viewResoler" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     <property name="prefix" value="/pages/"></property>
     <property name="suffix" value=".jsp"></property>
 </bean>

 <!--3.mvc的注解驱动-->
 <mvc:annotation-driven />
 
 <!--4.静态资源权限开放-->
 <mvc:default-servlet-handler/>

在applicationContext.xml中,

加载外部的jdbc.roperties文件,

配置数据源,配置jdbcTemplate对象,把数据源注入到jdbcTemplate中

配置Dao,在Dao中注入jdbcTemplate,方便到时候执行数据库的操作

配置Service,在Service中注入Dao,方便Service调用Dao的操作

注意:在xml注入时,需提供set方法

<!--1.加载外部的properties文件-->
 <context:property-placeholder location="classpath:jdbc.properties"/>

 <!--2.配置数据源-->
 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
     <property name="driverClass" value="${jdbc.driver}"></property>
     <property name="jdbcUrl" value="${jdbc.url}"></property>
     <property name="user" value="${jdbc.username}"></property>
     <property name="password" value="${jdbc.password}"></property>
 </bean>

 <!--3.配置jdbcTemplate对象-->
 <bean id="jdbcTemplate"  class="org.springframework.jdbc.core.JdbcTemplate">
     <property name="dataSource" ref="dataSource"/>
 </bean>
 <!--配置Dao-->
 <bean id="roleDao" class="com.ry.dao.impl.RoleDaoImpl">
     <property name="jdbcTemplate" ref="jdbcTemplate"></property>
 </bean>
 <!--配置service-->
 <bean id="roleService" class="com.ry.service.impl.RoleServiceImpl">
     <!--注入dao-->
     <property name="roleDao" ref="roleDao"/>
 </bean>

展示页面使用jstl来实现

<tbody>
	<%--var代表集合中的元素--%>
	<c:forEach items="${roleList}" var="role">
		<tr>
			<td><input name="ids" type="checkbox"></td>
			<td>${role.id}</td>
			<td>${role.roleName}</td>
			<td>${role.roleDesc}</td>
			<td class="text-center">
			<a href="#" class="btn bg-olive btn-xs">删除</a>
			</td>
		</tr>
	</c:forEach>
</tbody>

删除

window.location.reload() //刷新

window.history.go(1) //前进

window.history.go(-1) //后退

window.history.forward() //前进

window.history.back() 后退+刷新

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n5Q4Zwvl-1594790742762)(C:\Users\l\AppData\Roaming\Typora\typora-user-images\image-20200702165115377.png)]

多对多

多对多的查询

SELECT * FROM sys_user_role AS ur,sys_role AS r WHERE ur.roleId=r.id AND ur.userId=2

注意:as可以被省略

自己写的删除


jdbcTemplate.update("delete from sys_user_role where userId = ? ",
 new BigInteger(String.valueOf(Integer.parseInt(String.valueOf(id)))));

     jdbcTemplate.update("delete from sys_user where id = ? ",id);

添加操作的dao层逻辑

//创建preparedStatementCreator
        PreparedStatementCreator creator = new PreparedStatementCreator(){
            @Override
            public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
                //使用原始的jdbc完成有个preparedStatement的组件
                PreparedStatement preparedStatement = connection.prepareStatement("insert  into sys_user values (?, ?, ?, ?, ?)", PreparedStatement.RETURN_GENERATED_KEYS);
               preparedStatement.setObject(1,null);
               preparedStatement.setString(2,user.getUsername());
               preparedStatement.setString(3,user.getEmail());
               preparedStatement.setString(4,user.getPassword());
               preparedStatement.setString(5,user.getPhoneNum());
              return preparedStatement;
            }
        };
        //创建keyHolder
        GeneratedKeyHolder keyHolder = new GeneratedKeyHolder();
        jdbcTemplate.update(creator,keyHolder);

        //获得生成的逐渐
        long UserId = keyHolder.getKey().longValue();
        return  UserId;

优化

te.update(creator,keyHolder);

    //获得生成的逐渐
    long UserId = keyHolder.getKey().longValue();
    return  UserId;

优化

可以使用事务去控制,以进行优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值