分页 导入pom
1 2 3 4 5 6 <dependency > <groupId > com.github.pagehelper</groupId > <artifactId > pagehelper</artifactId > <version > 5.1.10</version > </dependency >
mybatis-config.xml
1 2 3 4 5 6 7 8 <plugins > <plugin interceptor ="com.github.pagehelper.PageInterceptor" > <property name ="helperDialect" value ="mysql" /> <property name ="rowBoundsWithCount" value ="true" /> </plugin > </plugins >
使用方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 @Test public void limitTest () { SqlSession session = MyBatisMapperUtils.getSession(); UserMapper mapper = session.getMapper(UserMapper.class); PageHelper.startPage(1 ,3 ); List<User> users = mapper.selectAll(); PageInfo<User> pageInfo = new PageInfo<>(users); long total = pageInfo.getTotal(); int pageNum = pageInfo.getPageNum(); int pages = pageInfo.getPages(); List<User> pageInfoList = pageInfo.getList(); System.out.println("总条数:" +total+" 当前页:" +pageNum+" 总页数" +pages); System.out.println("当前页数据...." ); for (User user : pageInfoList) { System.out.println(user); } MyBatisMapperUtils.closeSession(); }
SQL分页:limit {startIndex} {pageSize}
startIndex:查询结果的开始索引 = (当前页数 -1)* 每页显示条数
pageSize:每页显示条数
springMVC spring是框架,baimvc是一种设计模式。,M代表model;duV代表View;C代表controller从字面意思你也可以看出来M是指模型一般dao指DAO和service ;view代表显示一般指页面eg:jsp、html 等,c指的是控制器
一些配置 pom 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 <properties > <project.build.sourceEncoding > UTF-8</project.build.sourceEncoding > <maven.compiler.source > 1.8</maven.compiler.source > <maven.compiler.target > 1.8</maven.compiler.target > <spring.version > 4.2.4.RELEASE</spring.version > </properties > <dependencies > <dependency > <groupId > org.springframework</groupId > <artifactId > spring-beans</artifactId > <version > ${spring.version}</version > </dependency > <dependency > <groupId > org.springframework</groupId > <artifactId > spring-core</artifactId > <version > ${spring.version}</version > </dependency > <dependency > <groupId > org.springframework</groupId > <artifactId > spring-context</artifactId > <version > ${spring.version}</version > </dependency > <dependency > <groupId > org.springframework</groupId > <artifactId > spring-expression</artifactId > <version > ${spring.version}</version > </dependency > <dependency > <groupId > org.springframework</groupId > <artifactId > spring-context-support</artifactId > <version > ${spring.version}</version > </dependency > <dependency > <groupId > org.springframework</groupId > <artifactId > spring-aop</artifactId > <version > ${spring.version}</version > </dependency > <dependency > <groupId > org.springframework</groupId > <artifactId > spring-aspects</artifactId > <version > ${spring.version}</version > </dependency > <dependency > <groupId > org.springframework</groupId > <artifactId > spring-instrument</artifactId > <version > ${spring.version}</version > </dependency > <dependency > <groupId > org.springframework</groupId > <artifactId > spring-messaging</artifactId > <version > ${spring.version}</version > </dependency > <dependency > <groupId > org.springframework</groupId > <artifactId > spring-jdbc</artifactId > <version > ${spring.version}</version > </dependency > <dependency > <groupId > org.springframework</groupId > <artifactId > spring-orm</artifactId > <version > ${spring.version}</version > </dependency > <dependency > <groupId > org.springframework</groupId > <artifactId > spring-oxm</artifactId > <version > ${spring.version}</version > </dependency > <dependency > <groupId > org.springframework</groupId > <artifactId > spring-jms</artifactId > <version > ${spring.version}</version > </dependency > <dependency > <groupId > org.springframework</groupId > <artifactId > spring-tx</artifactId > <version > ${spring.version}</version > </dependency > <dependency > <groupId > org.springframework</groupId > <artifactId > spring-websocket</artifactId > <version > ${spring.version}</version > </dependency > <dependency > <groupId > org.springframework</groupId > <artifactId > spring-web</artifactId > <version > ${spring.version}</version > </dependency > <dependency > <groupId > org.springframework</groupId > <artifactId > spring-webmvc-portlet</artifactId > <version > ${spring.version}</version > </dependency > <dependency > <groupId > org.springframework</groupId > <artifactId > spring-webmvc</artifactId > <version > ${spring.version}</version > </dependency > <dependency > <groupId > org.springframework</groupId > <artifactId > spring-test</artifactId > <version > ${spring.version}</version > </dependency > <dependency > <groupId > junit</groupId > <artifactId > junit</artifactId > <version > 4.12</version > <scope > test</scope > </dependency > <dependency > <groupId > tk.mybatis</groupId > <artifactId > mapper</artifactId > <version > 3.5.2</version > </dependency > <dependency > <groupId > com.github.pagehelper</groupId > <artifactId > pagehelper</artifactId > <version > 3.7.5</version > </dependency > <dependency > <groupId > org.mybatis</groupId > <artifactId > mybatis</artifactId > <version > 3.4.5</version > </dependency > <dependency > <groupId > mysql</groupId > <artifactId > mysql-connector-java</artifactId > <version > 5.1.47</version > </dependency > <dependency > <groupId > org.mybatis</groupId > <artifactId > mybatis-spring</artifactId > <version > 1.3.2</version > </dependency > <dependency > <groupId > com.alibaba</groupId > <artifactId > druid</artifactId > <version > 1.1.10</version > </dependency > <dependency > <groupId > junit</groupId > <artifactId > junit</artifactId > <version > 4.12</version > <scope > compile</scope > </dependency > </dependencies >
resource/springmvc.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns ="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/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd" > <context:component-scan base-package ="com.ls.controller" /> </beans >
WEB-INF/web.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <web-app xmlns ="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation ="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version ="4.0" > <display-name > Archetype Created Web Application</display-name > <servlet > <servlet-name > springmvc</servlet-name > <servlet-class > org.springframework.web.servlet.DispatcherServlet</servlet-class > <init-param > <param-name > contextConfigLocation</param-name > <param-value > classpath:springmvc.xml</param-value > </init-param > </servlet > <servlet-mapping > <servlet-name > springmvc</servlet-name > <url-pattern > *.do</url-pattern > </servlet-mapping > </web-app >
创建项目
项目刚开始的时候只给了你个pom文件,里面的东西大部分不能要,删除掉name标签下面的所有标签,然后导入我上面的pom
写代码的(java)弄成纯蓝色的,写配置的(resources)资源目录 弄成三道杠的
resouces下创建 springmvc.xml 更改为上面的配置
WEB-INF下的web.xml 更改为上面的配置
项目该有的样子:
入门程序 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 package com.ls.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controller public class HelloWorld { @RequestMapping("/show") public String show () { System.out.println("你好 死狗" ); return "WEB-INF/hello.jsp" ; } }
@Controller 标注在类上,表示当前类交给Spring容器管理,对象的创建和销毁由容器负责,默认以单例模式管理
@RequestMapping(“/show”) 类或者方法上 描述URL的请求路径
return “WEB-INF/hello.jsp”; 默认是servlet跳转,都知道web-inf下文件无法访问,但是站内跳转则可以访问
准备访问的文件
hello.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <%-- Created by IntelliJ IDEA. User: qidai Date: 2020 /7 /27 Time: 14 :00 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>社会青年</title> </head> <body> 我看我几分 像从前 </body> </html>
然后配置tomcat,这个每个人的ide不一样位置不同
之后就可以开启tomcat了
如果你觉得return那个默认为页面跳转的内容要多写很多英文,很麻烦,又很容易手误出错,可以在 springmvc.xml 配置视图解析器:
1 2 3 4 5 6 7 8 9 <context:component-scan base-package ="com.czxy.mvc.controller" /> <bean id ="viewResolver" class ="org.springframework.web.servlet.view.InternalResourceViewResolver" > <property name ="prefix" value ="/WEB-INF/pages/" /> <property name ="suffix" value =".jsp" /> <property name ="contentType" value ="text/html;charset=UTF-8" /> </bean >
prefix是前缀的意思,会作为前缀拼接你的return
suffix是后缀的意思,会作为后缀拼接你的return
接收参数 普通参数
1 http://localhost:8080/user/select/id/username.do?id=1001&username=tomcat
1 2 3 4 5 @RequestMapping("/select/id/username") public String testParam (Integer id,String username) { System.out.println("id=" +id+" username=" +username); return "success" ; }
用 ? 作为参数传递的开始,然后拼接参数 以及数值,参数自动映射,只要key值一样
pojo类接收 User.java
1 2 3 4 5 6 7 public class User { private Integer id; private String name; private Float money; private Address address; }
Address.java
1 2 3 4 5 public class Address { private String provinceName; private String cityName; }
添加表单页面
user.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html > <head > <title > Title</title > </head > <body > <form action ="/user/collection.do" method ="post" > 用户名称:<input type ="text" name ="name" > <br /> 用户余额:<input type ="text" name ="money" > <br /> 用户地址-省:<input type ="text" name ="address.provinceName" > <br /> 用户地址-市:<input type ="text" name ="address.Name" > <br /> <input type ="submit" value ="保存" > </form > </body > </html >
controller接收参数
1 2 3 4 5 @RequestMapping("/collection.do") public String saveAccount (User user) { System.out.println(user); return "success" ; }
可以将参数自动封装到实体类中的实体类,格式是:另一个实体类在这个实体类中的成员名字.另一个实体类自己的属性 用上面的例子来说就是:address.cityName
pojo类中各种类型的集合,数组 添加pojo类
1 2 3 4 5 public class Bank { private String account; private Double money; }
修改User类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 public class User { private Integer id; private String name; private Float money; private Address address; private List<Integer> ids; private List<Bank> bankList; private Map<String,Integer> sizeMap; private Map<String,Bank> bankMap; }
collection.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 <form action ="/user/collection.do" method ="post" > 用户名称:<input type ="text" name ="name" > <br /> 用户余额:<input type ="text" name ="money" > <br /> 用户地址-省:<input type ="text" name ="address.provinceName" > <br /> 用户地址-市:<input type ="text" name ="address.Name" > <br /> IdsItegerList:<input type ="text" name ="ids[0]" > <br /> IdsItegerList:<input type ="text" name ="ids[1]" > <br /> IdsItegerList:<input type ="text" name ="ids[2]" > <br /> String[]:<input type ="text" name ="props" > <br /> String[]:<input type ="text" name ="props" > <br /> bankList[0].account:<input type ="text" name ="bankList[0].account" > <br /> bankList[0].money:<input type ="text" name ="bankList[0].money" > <br /> bankList[1].account:<input type ="text" name ="bankList[1].account" > <br /> bankList[1].money:<input type ="text" name ="bankList[1].money" > <br /> sizeMap-S:<input type ="text" name ="sizeMap['S']" > <br /> sizeMap-M:<input type ="text" name ="sizeMap['M']" > <br /> sizeMap-L:<input type ="text" name ="sizeMap['L']" > <br /> bankMap-bank1-account: <input type ="text" name ="bankMap['bank1'].account" > <br /> bankMap-bank1-money: <input type ="text" name ="bankMap['bank1'].money" > <br /> bankMap-bank2-account: <input type ="text" name ="bankMap['bank2'].account" > <br /> bankMap-bank2-money: <input type ="text" name ="bankMap['bank2'].money" > <br /> <input type ="submit" value ="保存" > </form >
controller
1 2 3 4 5 @RequestMapping("/collection.do") public String collection (User user,String[] props) { System.out.println(user); return "success" ; }
上面已经演示出了所有通过form表单传参的情况了,相信你有了看懂实体类的实力之后,这个也是不在话下了
传参乱码 在你的前端控制器中添加下面的代码(web.xml)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <filter > <filter-name > CharacterEncodingFilter</filter-name > <filter-class > org.springframework.web.filter.CharacterEncodingFilter </filter-class > <init-param > <param-name > encoding</param-name > <param-value > UTF-8</param-value > </init-param > <init-param > <param-name > forceEncoding</param-name > <param-value > true</param-value > </init-param > </filter > <filter-mapping > <filter-name > CharacterEncodingFilter</filter-name > <url-pattern > *.do</url-pattern > </filter-mapping >