org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.2
com.alibaba
druid
1.1.12
mysql
mysql-connector-java
runtime
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://127.0.0.1:3306/bill?serverTimezone=GMT%2B8
driver-class-name: com.mysql.cj.jdbc.Driver
#引入Druid数据源
type: com.alibaba.druid.pool.DruidDataSource
# 数据源其他配置, DataSourceProperties中没有相关属性,默认无法绑定
initialSize: 8
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,logback
maxPoolPreparedStatementPerConnectionSize: 25
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
mybatis:
mapper-locations: classpath:mybatis/mapper/*.xml
config-location: classpath:mybatis/mybatis-config.xml
运行SQL文件,建表
在resource文件夹下,创建
mybatis_config.xml文件中,内容如下:
BillMapper.xml文件中,内容如下:
insert into bill(bill_code,bill_name,bill_com,bill_num)
values(#{billCode},#{billName},#{billCom},#{billNum})
BillMapper类
package com.example.springboot11bill.mapper;
import com.example.springboot11bill.entities.Bill;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface BillMapper {
Bill getBillById(Integer bid);
int addBill(Bill bill);
}
ProviderMapper类:
package com.example.springboot11bill.mapper;
import com.example.springboot11bill.entities.Provider;
import org.apache.ibatis.annotations.*;
import org.springframework.web.bind.annotation.DeleteMapping;
@Mapper //指定操作数据的Mapper
public interface ProviderMapper {
@Select("select * from provider where pid=#{pid}")
Provider getProviderByPid(Integer pid);
@Options(useGeneratedKeys = true, keyProperty = "pid") //设置主键,是否自增
@Insert("insert into provider(providerName) values(#{providerName})")
int addProvider(Provider provider);
@Delete("delete from provider where pid=#{pid}")
int deleteProvider(Integer pid);
@Update("update provider set providerName=#{providerName} where pid=#{pid}")
int updateProvider(Provider provider);
}
主目录下加入实体类。
Bill:
package com.example.springboot11bill.entities;
import java.util.Date;
/**
* 帐单实体类
* @Title: Provider
* @Description: com.mengxuegu.springboot.entities
* @Auther: www.mengxuegu.com
* @Version: 1.0
*/
public class Bill {
private Integer bid;
// 账单编码
private String billCode;
// 商品名称
private String billName;
// 商品单位
private String billCom;
// 商品数量
private Integer billNum;
// 总金额
private Double money;
// 供应商
private Provider provider;
// 是否付款 0 未付款, 1已付款
private Integer pay;
// 创建时间
private Date createDate;
public Bill() {}
public Bill(Integer bid, String billCode, String billName, String billCom, Integer billNum, Double money, Provider provider, Integer pay) {
this.bid = bid;
this.billCode = billCode;
this.billName = billName;
this.billCom = billCom;
this.billNum = billNum;
this.money = money;
this.provider = provider;
this.pay = pay;
this.createDate = new Date();
}
@Override
public String toString() {
return "Bill{" +
"bid=" + bid +
", billCode='" + billCode + '\'' +
", billName='" + billName + '\'' +
", billCom='" + billCom + '\'' +
", billNum=" + billNum +
", money=" + money +
", provider=" + provider +
", pay=" + pay +
", createDate=" + createDate +
'}';
}
public Integer getBid() {
return bid;
}
public void setBid(Integer bid) {
this.bid = bid;
}
public String getBillCode() {
return billCode;
}
public void setBillCode(String billCode) {
this.billCode = billCode;
}
public String getBillName() {
return billName;
}
public void setBillName(String billName) {
this.billName = billName;
}
public String getBillCom() {
return billCom;
}
public void setBillCom(String billCom) {
this.billCom = billCom;
}
public Integer getBillNum() {
return billNum;
}
public void setBillNum(Integer billNum) {
this.billNum = billNum;
}
public Double getMoney() {
return money;
}
public void setMoney(Double money) {
this.money = money;
}
public Provider getProvider() {
return provider;
}
public void setProvider(Provider provider) {
this.provider = provider;
}
public Integer getPay() {
return pay;
}
public void setPay(Integer pay) {
this.pay = pay;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
}
provider:
package com.example.springboot11bill.entities;
import java.util.Date;
/**
* 供应商实体类
* @Title: Provider
* @Description: com.mengxuegu.springboot.entities
* @Auther: www.mengxuegu.com
* @Version: 1.0
*/
public class Provider {
private Integer pid;
//供应商编码
private String providerCode;
//供应商名称
private String providerName;
//联系人
private String people;
//联系电话
private String phone;
//联系地址
private String address;
//传真
private String fax;
//描述
private String describe;
// 创建时间
private Date createDate;
public Provider() {
}
public Provider(Integer pid, String providerCode, String providerName, String people, String phone, String address, String fax, String describe) {
this.pid = pid;
this.providerCode = providerCode;
this.providerName = providerName;
this.people = people;
this.phone = phone;
this.address = address;
this.fax = fax;
this.describe = describe;
this.createDate = new Date();
}
@Override
public String toString() {
return "Provider{" +
"pid=" + pid +
", providerCode='" + providerCode + '\'' +
", providerName='" + providerName + '\'' +
", people='" + people + '\'' +
", phone='" + phone + '\'' +
", address='" + address + '\'' +
", fax='" + fax + '\'' +
", describe='" + describe + '\'' +
", createDate=" + createDate +
'}';
}
public Integer getPid() {
return pid;
}
public void setPid(Integer pid) {
this.pid = pid;
}
public String getProviderCode() {
return providerCode;
}
public void setProviderCode(String providerCode) {
this.providerCode = providerCode;
}
public String getProviderName() {
return providerName;
}
public void setProviderName(String providerName) {
this.providerName = providerName;
}
public String getPeople() {
return people;
}
public void setPeople(String people) {
this.people = people;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getFax() {
return fax;
}
public void setFax(String fax) {
this.fax = fax;
}
public String getDescribe() {
return describe;
}
public void setDescribe(String describe) {
this.describe = describe;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date date) {
this.createDate = date;
}
}
同样是主目录,不需要MyBatisConfig
Druid:
package com.example.springboot11bill.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.Filter;
import javax.sql.DataSource;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
@Configuration
public class DruidConfig {
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druid(){
return new DruidDataSource();
}
//配置后台管理的servlet
@Bean
public ServletRegistrationBean statViewServlet(){
ServletRegistrationBean bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
Map initParam = new HashMap<>();
initParam.put(StatViewServlet.PARAM_NAME_USERNAME, "root");
initParam.put(StatViewServlet.PARAM_NAME_PASSWORD, "123456");
initParam.put(StatViewServlet.PARAM_NAME_ALLOW, "");
initParam.put(StatViewServlet.PARAM_NAME_DENY, "");
bean.setInitParameters(initParam);
return bean;
}
//配置druid的filter
@Bean
public FilterRegistrationBean webStatFilter(){
FilterRegistrationBean bean = new FilterRegistrationBean<>();
bean.setFilter(new WebStatFilter());
Map initParams = new HashMap<>();
initParams.put(WebStatFilter.PARAM_NAME_EXCLUSIONS, "*.js, *.css, /druid/*");
bean.setInitParameters(initParams);
bean.setUrlPatterns(Arrays.asList("/*"));
return bean;
}
}
springmvc
package com.example.springboot11bill.config;
import com.example.springboot11bill.component.MyLocaleResolver;
import com.example.springboot11bill.interceptor.LoginHandlerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MySpringMvcConfigure {
//添加视图控制器
@Bean
public WebMvcConfigurer WebMvcConfigurer(){
return new WebMvcConfigurer(){
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("main/login");
registry.addViewController("/index.html").setViewName("main/login");
registry.addViewController("/main.html").setViewName("main/index");
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandlerInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/", "/index.html", "/login")
.excludePathPatterns("/css/*", "/js/*", "/img/*");
}
};
}
@Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
}
}