zoukankan      html  css  js  c++  java
  • 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中的问题,要多写写,多尝试才可以

  • 相关阅读:
    作用域 + this指向 的一道没面试题
    找出数组中最大的值
    统计数组中每个值出现的次数, 统计对象中每个字符出现的次数
    uniapp在h5 和 APP 端兼容性 bug 解决方案
    数组去重的常用方法,利用Promise实现函数按序执行
    momentjs实现距离当前时长并且回现中文效果
    SQL server 上机练习题
    JS 9
    JS 8
    JS 7
  • 原文地址:https://www.cnblogs.com/shendaxia1/p/10754985.html
Copyright © 2011-2022 走看看