(原创)ssm sql 例子(freemarker+jsp)
2016-12-06 20:22
309 查看
ssm整合地址:http://www.cnblogs.com/xiaohuihui96/p/6104351.html
接下讲解一个插入语句的流程和顺带讲解freemarker+jsp视图的整合
初次接触,如果有错误请评论指出,谢谢
表单界面:add.jsp
spring-mvc.xml
业务类的配置,启动注解和设置注解所在的包,这样在启动时就会去读取所在的路径。
下半部分的配置是关于freemarker和jsp的整合
freemarker,第一部分是启动freemarker和存放的路径,第二是解析
springmvc会根据返回的设置的优先级,根据返回的字符串和配置合成对应的视图名,然后去匹配对应的视图,在对应的文件夹下去匹配
可以设置jsp还是freemarker还是其他的视图类型的匹配的优先级
整合freemarker需要在pom.xml添加着2个jar包
实体
根据springmvc的注解配置会来到对应的业务类
PersonMapper.xml
到这里就大概这样。注意几个注解的作用
至于@Service("testService")这个注解的详细作用我也不是很清除,还没做一个更深入的了解,但是在spring.xml的配置文件中
配置了该注解所在的包,通过配置文件去读取该路径下的类进行一个自动的注入,所以在业务类中才能进行一个实例化,在测试的时候我由于少了这几个依赖注入所以
一直会包一个空指针的错误
还有关于personMapper的类和xml的映射关系,其实在配置文件中就可以发现
mybatis-spring.xml中有这一段
配置了sql语句的配置文件和接口类所在的包,详细的映射在personMapper.xml中
描述了该语句的接口在哪里。
一个ssm的简单的插入语句的例子大概就这么多,如果出错请勿喷我,本人也是刚学
接下讲解一个插入语句的流程和顺带讲解freemarker+jsp视图的整合
初次接触,如果有错误请评论指出,谢谢
表单界面:add.jsp
<%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> <%@tagliburi="http://www.springframework.org/tags/form"prefix="form"%> <html> <head> <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> <title>Inserttitlehere</title> </head> <!--springmvc跟struts一样,只要name一样就会自动填充成javabean--> <formaction="/maven-hello-exam/addTest/add"> <inputtype="text"name="id"> <inputtype="text"name="name"> <inputtype="text"name="age"> <inputtype="submit"> </form> <body> </body> </html>
spring-mvc.xml
<?xmlversion="1.0"encoding="UTF-8"?> <beansxmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd "> <!--启用springmvc注解--> <context:annotation-config/> <!--设置使用注解的类所在的jar包--> <context:component-scanbase-package="com.huawei.controller"/> <!--完成请求和注解POJO的映射--> <beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> <!--对转向页面的路径解析。prefix:前缀,suffix:后缀,jsp部分--> <beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/"p:suffix=".jsp"/> <!--freemarker--> <!--freemarker--> <beanid="freemarkerConfig"class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <propertyname="templateLoaderPath"value="/WEB-INF/views/"/> </bean> <beanid="viewResolver"class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <propertyname="cache"value="true"/> <propertyname="prefix"value=""/> <propertyname="suffix"value=".ftl"/> </bean> </beans>
业务类的配置,启动注解和设置注解所在的包,这样在启动时就会去读取所在的路径。
下半部分的配置是关于freemarker和jsp的整合
freemarker,第一部分是启动freemarker和存放的路径,第二是解析
springmvc会根据返回的设置的优先级,根据返回的字符串和配置合成对应的视图名,然后去匹配对应的视图,在对应的文件夹下去匹配
可以设置jsp还是freemarker还是其他的视图类型的匹配的优先级
整合freemarker需要在pom.xml添加着2个jar包
<!--freemarker--> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <version>1.7</version> </dependency>
<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.25-incubating</version> </dependency>
实体
packagebean; /** *person实体 *@authorAdministrator * */ publicclassPerson{ privateintid; privateStringname; privateintage; publicintgetId(){ returnid; } publicvoidsetId(intid){ this.id=id; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicintgetAge(){ returnage; } publicvoidsetAge(intage){ this.age=age; } @Override publicStringtoString(){ return"Person[id="+id+",name="+name+"]"; } }
根据springmvc的注解配置会来到对应的业务类
packagecom.huawei.controller; importorg.springframework.beans.factory.annotation.Autowired; importorg.springframework.beans.factory.annotation.Qualifier; importorg.springframework.stereotype.Controller; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.RequestMethod; importorg.springframework.web.servlet.ModelAndView; importcom.huawei.service.impl.addTestService; importbean.Person; /** *插入一条数据 *业务层 *@authorAdministrator * */ @Controller @RequestMapping("/addTest") publicclassaddTest{ @Autowired @Qualifier("testService") privateaddTestServicetestService; //@Autowired自动依赖注入,项目启动便会自动执行,所以就会自动实例化addTestService /*@Autowired publicvoidsetTestService(addTestServicetestService){ this.testService=testService; } publicaddTestServicegetTestService(){ returntestService; }*/ /** * *@parampersonspringmvc根据name自动填充成实体 *@return */ @RequestMapping(value="/add") publicStringadd(Personperson){ System.out.println("进来"+person.getAge()); //sql的处理 booleanb=testService.add(person); System.out.println("add:"+b); if(b) return"chenggon"; else return"shibai"; } }
@Controller这个注解标注了这个类是springmvc的处理类,相当于struts的action
@RequestMapping请求映射的路径 springmvc跟struts一样,会根据名字进行映射填充成实体进来,不需要任何的配置
testService.add(person);做了一个sql的请求,接下来详细的讲解这部分 这个类的上半部分还用了2个注解:
@Autowired这个是自动依赖注入,他的作用相当于写了一个set方法。在服务器启动时边会由容器自动执行,实例化这个字段
@Qualifier("testService")这个注解的作用是网上说的我晕乎乎的,他大概的作用是说明他要实例化那个bean,跟@Service对应的,会把标注了@Service这个注解的名字的类实例化给这个字段 大概就是这样子,都是通过ioc容器进行一个依赖注入实例化这个字段 所以在请求进入这个处理类时,该字段就已经被实例化好了
接着通过调用该类的方法来到该类的数据访问层
packagecom.huawei.service.impl; importjava.util.HashMap; importjava.util.Map; importorg.springframework.beans.factory.annotation.Autowired; importorg.springframework.stereotype.Service; importcom.huawei.dao.PersonMapper; importbean.Person; /** *数据库处理层 *@authorAdministrator * */ @Service("testService") publicclassaddTestService{ /**PersonMapper接口和PersonMapper.xml相互映射的,分别对应sql语句*/ @Autowired privatePersonMapperpersonMapper; /** *执行sql *添加一条数据 *@paramperson业务传递进来的javabean *@return */ publicbooleanadd(Personperson){ System.out.println("personservice进来了"+person.getAge()); //执行接口中的方法 returnpersonMapper.addTest(person); } }
@Service("testService")这个和上面那个是对应的
PersonMapper这是和mybatis的映射配置文件对对应的,他只是一个接口,具体的实现用框架去做,只需要配置对应的xml和sql语句,还有在接口中提供对应的方法进行调用就好 PersonMapper
packagecom.huawei.dao; importjava.util.List; importbean.Person; publicinterfacePersonMapper{ /** *查询所有 *@return */ List<Person>queryAll(); /** *添加测试 *@paramperson */ booleanaddTest(Personperson); }
PersonMapper.xml
<?xmlversion="1.0"encoding="UTF-8"?> <!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mappernamespace="com.huawei.dao.PersonMapper"> <!--查询所有person--> <selectid="queryAll"resultType="Person"> select*fromperson </select> <insertid="addTest"parameterType="Person"flushCache="true"> INSERTINTO`person`(`id`,`name`,`age`)VALUES(#{id},#{name},#{age}); </insert> </mapper>
到这里就大概这样。注意几个注解的作用
至于@Service("testService")这个注解的详细作用我也不是很清除,还没做一个更深入的了解,但是在spring.xml的配置文件中
<?xmlversion="1.0"encoding="UTF-8"?> <beansxmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!--自动注入--> <context:component-scanbase-package="com.huawei.service.impl"/> <!--加载properties文件--> <!--<beanid="configProperties"class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <propertyname="locations"> <list> <value>classpath:mysqldb.properties</value> </list> </property> </bean>--> </beans>
配置了该注解所在的包,通过配置文件去读取该路径下的类进行一个自动的注入,所以在业务类中才能进行一个实例化,在测试的时候我由于少了这几个依赖注入所以
一直会包一个空指针的错误
还有关于personMapper的类和xml的映射关系,其实在配置文件中就可以发现
mybatis-spring.xml中有这一段
<!--Mybatis文件--> <beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean"> <propertyname="configLocation"value="classpath:mybatis-config.xml"/> <propertyname="dataSource"ref="dataSource"/> <!--映射文件路径--> <!--<propertyname="mapperLocations"value="com/huawei/mapping/*.xml"/>--> </bean> <beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer"> <propertyname="basePackage"value="com.huawei.dao"/> <propertyname="sqlSessionFactoryBeanName"value="sqlSessionFactory"/> </bean>
配置了sql语句的配置文件和接口类所在的包,详细的映射在personMapper.xml中
<mappernamespace="com.huawei.dao.PersonMapper">
描述了该语句的接口在哪里。
一个ssm的简单的插入语句的例子大概就这么多,如果出错请勿喷我,本人也是刚学
相关文章推荐
- Mybatis 动态Sql
- 数据库(三)关系数据库标准语言SQL(2)
- Oracle常用函数系列之四:数值函数(2)
- 使用C#开发数据库应用系统 第二章
- Hibernate的多对多关联关系(单向和双向)
- SQL Server跨库查询
- GreenDao设置数据库路径以及数据库升级
- SQL相关工具 集
- MongoDB基本操作
- Oracle使用sqluldr2快速导出数据
- mysql 初始化
- ORACLE分组查询和统计等
- Redis的持久化机制
- MongoDB
- 使用POWERDESIGNER设计数据库的20条技巧(转)
- sql like N'%...%' 在C#里的写法
- xtraBackup 备份mysql
- 结合MongoDB开发LBS应用
- MYSQL存储过程:批量更新数据2(产品品牌)
- MYSQL存储过程:批量更新数据