SpringBoot+Druid+pageHelper+vue+axios+bootstrap

后端部分

pom.xml
新增:分页&&连接池

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.10</version>
</dependency>

application.yml
新增:druid连接池配置&&分页配置(标明数据库方言)

server:
  port: 9001
spring:
  datasource:
    url: jdbc:mysql://192.168.10.161:3306/mydemo
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: ok
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      initial-size: 10
      max-active: 30
      min-idle: 5
      max-wait: 60000
      validation-query: select 1
      test-on-borrow: false
      test-on-return: false
      test-while-idle: true
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20
mybatis:
  type-aliases-package: com.njbdqn.mysee.vo
  mapper-locations: mapper/*.xml
pagehelper:
  helper-dialect: mysql

mapper文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC
        "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njbdqn.mysee.dao.ICardDAO">
    <select id="findCand" parameterType="Bankcards" resultType="Bankcards">
      select u.username,b.cardid,b.cardno,b.regdate,
        ifnull(tmp.balance,0) balance
        from userinfos u inner join bankcards b on u.userid=b.userid
        left join
        (select t.cardid,
        sum(if(trantype=1,tranmoney,-1*tranmoney)) balance from trans t
            group by cardid  )tmp on
            b.cardid = tmp.cardid
        <where>
            <if test="username != null">
                u.username like concat('%',#{username},'%')
            </if>
            <if test="cardno != null">
                and b.cardno = #{cardno}
            </if>
        </where>
    </select>
</mapper>

分页两种写法:

public PageInfo<Bankcards> getBean(int cp,Bankcards card){
    Page<Bankcards> pg = PageHelper.startPage(cp,10);
    cardDAO.findCand(card);
    return new PageInfo<Bankcards>(pg);
}
public PageInfo<Employee> getEmployees(Employee employee,int pageNumber){
    PageHelper.startPage(pageNumber,3);
    List<Employee> employees = employeeDao.getEmployees(employee);
    PageInfo<Employee> pageInfo=new PageInfo<>(employees);
    return pageInfo;
}

测试连接池代码:

@RunWith(SpringRunner.class)
@SpringBootTest
public class MydemocardApplicationTests {

	@Autowired
	private UserService userService;

	@Test
	public void contextLoads() {
		UserInfos userInfos =new UserInfos();
		for (int i=0;i<50;i++){
			Long time =System.currentTimeMillis();
			userService.findAll(userInfos,2);
			System.out.println(System.currentTimeMillis()-time);
		}
	}
}

前端部分

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>银行卡信息平台</title>
    <link type="text/css" rel="stylesheet" href="lib/bootstrap/css/bootstrap.min.css"/>
    <link rel="stylesheet" type="text/css" href="css/index.css"/>
</head>
<body>
<div class="container">
    <div class="row text-center">
        <h1>银行卡信息平台</h1>
    </div>
    <div class="row">
        <div class="col-xs-offset-2 col-xs-10">
            <form action="" id="myfrm" class="">
                <input type="hidden" name="cp" value="1"/>
                <div class="form-group"><label for="" class="col-xs-1 control-label">用户名</label>
                    <div class="col-xs-3"><input type="text" name="username" class="form-control" v-model="username"></div>
                </div>
                <div class="form-group"><label for="" class="col-xs-1 control-label">卡号</label>
                    <div class="col-xs-3"><input type="text" name="cardno" class="form-control" v-model="cardno"></div>
                </div>
                <div class="form-group">
                    <div class="col-xs-2">
                        <button type="button" class="btn btn-primary" @click="search()"><i class="glyphicon glyphicon-search"></i> 搜索</button>
                    </div>
                </div>
            </form>
        </div>
    </div>
    <div class="row">
        <div class="col-xs-offset-2 col-xs-8">
            <table class="table table-striped table-hover table-bordered">
                <tr>
                    <th class="text-center">用户编号</th>
                    <th class="text-center">用户卡号</th>
                    <th class="text-center">用户姓名</th>
                    <th class="text-center">注册日期</th>
                    <th class="text-center">卡上余额</th>
                </tr>
                <tr v-for="(us,index) in pageInfo.list">
                    <td>{{us.cardid}}</td>
                    <td>{{us.cardno}}</td>
                    <td>{{us.username}}</td>
                    <td>{{us.regdate}}</td>
                    <td class="hasmoney" :class="{nomoney:ismoney[index]}">{{us.balance | priceFilter}}</td>
                </tr>
            </table>
        </div>
    </div>
    <div class="row">
        <div class="col-xs-offset-4 col-xs-4">
            <ul class="pagination">
                <li><a href="javascript:;" @click="jump(1)">首页</a></li>
                <li><a href="javascript:;" @click="jump(pageInfo.prePage)">上页</a></li>
                <li><a href="javascript:;" @click="jump(pageInfo.nextPage)">下页</a></li>
                <li><a href="javascript:;" @click="jump(pageInfo.pages)">尾页</a></li>
            </ul>
        </div>
    </div>
</div>

    <script type="text/javascript" src="lib/vue/vue.min.js"></script>
    <script type="text/javascript" src="lib/vue/axios.min.js"></script>
    <script type="text/javascript" src="js/index.js"></script>

</body>
</html>

index.js

;(function(){
    var myVue = new Vue({
        el:'.container',
        data:{
            pageInfo:{},
            ismoney:[],
            username:'',
            cardno:''
        },
        created:function(){
           dataLoad();
        },
        filters:{
        	价格过滤器
            priceFilter:function(val){
                return parseInt(val)>0?"余额:"+val:"欠款:"+val;
            },
            日期过滤器
            dateFormate:function (value) {
                var date=new Date(value);
                var year=date.getFullYear();
                var month=date.getMonth()+1;
                var date=date.getDate();
                return year+"-"+month+"-"+date;
            }
        },
        methods:{
            jump:function(page){
               dataSearch(page);
            },
            search:function(){
                dataSearch();
            }
        }
    });

    /**
     * 搜索对应的数据 并根据用户传入的页码值 组装后传入dataLoad进行页面数据修改
     * @param page 页码值
     */
    function dataSearch(page){
        page = page||1;
        var pm = {params:{}};
        if(myVue.$data.cardno.trim()!=''){
            pm.params['cardno']=myVue.$data.cardno.trim();
        }
        pm.params['username']=myVue.$data.username.trim();
        pm.params.cp=page;
        dataLoad(pm);
    }

    /**
     * 通过axios将数据传送到后端,并将返回的数据填充到vue的data数据中
     * @param pm 传入参数
     */
    function dataLoad(pm){

        pm = pm||{params:{}};
        axios.get('http://localhost:9001/search',pm).then(function(res){
            var colors =[];
            for(var u in res.data.list){
                var us = res.data.list[u];
                colors.push(parseInt(us.balance)<0?true:false);
            }
            myVue.$data.ismoney = colors;
            myVue.$data.pageInfo = res.data;
        });
    }
})();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值