Spring+SpringMVC综合练习
Spring环境搭建步骤
入口:
<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() 后退+刷新
多对多
多对多的查询
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;
优化
可以使用事务去控制,以进行优化