ssm搭建时候要注意的问题

最近用一台新电脑去搭建ssm框架实现一个上传csv文件,将其中的数据读出来然后存入数据库的功能,但是遇到了很对之前没有遇见过的问题

  1. 在使用maven进行jar包整理的时候,一定不要用ide自带的maven,因为自带的maven中心资源库是国外的,下载jar非常慢,导致你框架搭建好后一直出现一些莫名其妙的问题,这都是因为jar包没下载完,导致的,所以要自己去下载maven,将setting中的配置中心资源仓库的网址改成阿里的:具体改成下面的:

  <mirror>

  <id>alimaven</id>

  <name>aliyun maven</name>

  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>

  <mirrorOf>central</mirrorOf>

  </mirror>

同时还要修改一下setting中的jar包下载存储地址:

<localRepository>G:maven espository</localRepository>,这样下载的jar包就都在你配置的地方了

  1. jdbc连接sqlserver和连接mysql是不一样的,第一:jar包不一样。第二:drive驱动不一样

首先需要引入的jar ,在pom文件中加入:

<dependency>

    <groupId>com.microsoft.sqlserver</groupId>

    <artifactId>sqljdbc4</artifactId>

    <version>4.0</version>

</dependency>

然后在db.properties中这样写:

jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver

jdbc.url=jdbc:sqlserver://local:3433;DatabaseName=oa_tui

jdbc.username=sda321

jdbc.password=tuiguang!2#

  1. 常规的物理分页,不用任何插件的分页是这样的(比较容易理解,但是代码冗余比较严重)

首先要建立一个pageUtile工具类

package util;

import java.util.List;

public class PageUtil<T> {

private int pageNumber;//总记录数

private int pageCount;//总页数

private int pageIndex;//当前页

private int pageSize;//每页大小

private List<T> list;//当前页数据

public int getPageNumber() {

return pageNumber;

}

public void setPageNumber(int pageNumber) {

this.pageNumber = pageNumber;

}

public int getPageCount() {

return pageCount;

}

public void setPageCount(int pageCount) {

this.pageCount = pageCount;

}

public int getPageIndex() {

return pageIndex;

}

public void setPageIndex(int pageIndex) {

this.pageIndex = pageIndex;

}

public int getPageSize() {

return pageSize;

}

public void setPageSize(int pageSize) {

this.pageSize = pageSize;

}

public List<T> getList() {

return list;

}

public void setList(List<T> list) {

this.list = list;

}

}

然后在mapper.xml中要查出来一个每页的数据以及总数据的个数

<!-- 查询全部列表 ,用于分页,每页显示10条数据-->

<select id="findAll" parameterType="int" resultType="com.shen.model.TuiGuang">

<!-- select * from tuiguang limit #{index},10; -->

select top 10 * from tuiguang where id not in (select top ${index} id from tuiguang order by id) order by id

</select>

<!-- 查询出数据总量,用于分页 -->

<select id="pageCountAll" resultType="int">

select count(*) from tuiguang;

</select>

mapper.javadao层)写接口,service中也是写接口

然后主要是controller中的处理

@RequestMapping(value="/findAll")

public String findAllController(Model model,@RequestParam(value="pageIndex",defaultValue="1") int pageIndex) {

int pageSize=10;//设置每页显示多少条数据,必须和sql语句中的limit后跟的数字一样

PageUtil<TuiGuang> pageUtile = new PageUtil<TuiGuang>();//初始化分页工具类

List<TuiGuang> list = new ArrayList<TuiGuang>();

pageUtile.setPageIndex(pageIndex);

int num = tuiGuangService.pageCountAll();//调用计算出总条数的方法计算出总条数

pageUtile.setPageNumber(num);

pageUtile.setPageSize(pageSize);

pageUtile.setPageCount((int) Math.ceil((double) (pageUtile

                .getPageNumber() / pageUtile.getPageSize())) + 1);//计算出总页数,并封装到工具类

int index = (pageIndex - 1) * pageSize;//计算出每一页从数据库中第几条数据开始取值,也就是limit后面的第一个数字

list = tuiGuangService.findAllService(index);//查询出该页对应的数据并且放到list

pageUtile.setList(list);

model.addAttribute("pageUtile", pageUtile);

return "login";

}

主要注意的是sqlserver是没有limit这个功能了,所以只能用top配合嵌套查询来实现

select top 数字一 * from tuiguang where id not in (select top 数字二 id from tuiguang order by id) order by id

注意外部查询的是一定会查出来‘数字一’个数据的(除非数据不够),但是它会跳过内层查询出的‘数字二’个数据,然后再去读‘数字一’个数据,简单来说就是跳过内层查询出的数据,然后在读出外部查询出的那些个数据量。

3.在搭建ssm框架的时候,如果提示你你创建的类被当成bean注入失败时,如果其他地方的配置都没有错,那就一定是mapper.xml里面的写错了,一般都是对应的实体类路劲写错了(实体类最好写全路径),按照我之前的那种搭建框架的方法只要启动出错一般就都是mapper.xml中的问题,要多写写,多尝试才可以

原文地址:https://www.cnblogs.com/shendaxia1/p/10754985.html