南宁企业网站制作哪家好,哪里有网站制作服务,网站建设未来发展前景,外贸怎么做站外推广写在前面#x1f6eb;更多知识总结见SpringBoot 2专栏 #x1f695;本篇知识点总结自尚硅谷雷神的视频 #x1f692;博主对于该知识尚在学习阶段 #x1f684;如果发现存在问题请毫不吝啬的指出 #x1f680;#x1f680;扎哇太枣糕的博客首页#x1f680;#x1f680;… 写在前面更多知识总结见SpringBoot 2专栏 本篇知识点总结自尚硅谷雷神的视频 博主对于该知识尚在学习阶段 如果发现存在问题请毫不吝啬的指出 扎哇太枣糕的博客首页 文章目录1 数据库连接1.1 配置数据库连接信息1.2 整合Druid数据源2 SpringBoot整合MyBatis2.1 配置文件开发2.2 纯注解开发3 SpringBoot整合MyBatis-Plus3.1 普通的CRUD方法3.2 MyBatis-plus的分页实现1 数据库连接
1.1 配置数据库连接信息 如果想要使用数据库连接池连接数据库进行SQL操作的话在SpringBoot中需要经过如下三个步骤 第一步 导入jdbc开发的启动场景 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jdbc/artifactId
/dependency第二步 导入数据库驱动 之所以框架底层没有自动导入数据库的驱动是因为不同的数据库使用的驱动不同这需要用户根据自己的需要来进行选择。虽然框架没有对指定数据库驱动进行自动导入但是对不同数据库驱动的版本都进行了版本仲裁也就是说我们可以直接导入无需定义版本号。当然也可以自定义版本号maven会根据自身的就近依赖原则导入自定义的版本
dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.32/version
/dependency第三步 配置数据库连接的配置文件
# 设置数据库
spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/testusername: rootpassword: 1234561.2 整合Druid数据源 SpringBoot框架中默认使用的是Hikari数据源这也就意味着如果要是想要修改数据源的话无非就是两种方法自定义配置类、引入相应的启动器依赖再配置配置文件
第一步 引入Druid的启动器依赖
dependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion1.1.17/version
/dependency第二步 配置配置文件(选学框架一般都有默认的配置)
spring:datasource:url: jdbc:mysql://localhost:3306/db_accountusername: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driverdruid:aop-patterns: com.atguigu.admin.* #监控SpringBeanfilters: stat,wall # 底层开启功能statsql监控wall防火墙stat-view-servlet: # 配置监控页功能enabled: truelogin-username: adminlogin-password: adminresetEnable: falseweb-stat-filter: # 监控webenabled: trueurlPattern: /*exclusions: *.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*filter:stat: # 对上面filters里面的stat的详细配置slow-sql-millis: 1000logSlowSql: trueenabled: truewall:enabled: trueconfig:drop-table-allow: false2 SpringBoot整合MyBatis mybatis开发的时候有两种开发模式使用配置文件进行开发、纯注解开发二者各有优点。使用配置文件进行开发在处理更加复杂的SQL语句的时候逻辑更加清晰纯注解开发比较适合简单的SQL语句于是我们可以在开发的时候混合使用两种方法这样可以大大提升开发效率。
2.1 配置文件开发
第一步 引入启动器依赖 小知识SpringBoot官方的所有技术启动器的命名都是spring-boot-starter-xxx而第三方技术的启动器命名则是xxx-spring-boot-starter。值得注意的是MyBatis的启动器内部引用了dbc开发的启动场景所以无需重复引用
dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.1.4/version
/dependency第二步 编写mapper接口并标注Mapper注解
Mapper
public interface StuMapper {Stu queryBySid(int sid);
}第三步 编写映射文件并绑定mapper接口
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtdmapper namespacecom.xiaochen.mapper.StuMapperselect idqueryBySid resultTypecom.xiaochen.domain.Stuselect * from stu where sid#{sid}/select/mapper第四步 在配置文件中指定之前MyBatis配置文件的各种信息
# mybatis的所有配置
mybatis:mapper-locations: classpath:com.xiaochen.mapper/*.xml# 所有的全局配置文件的配置项在这下面配置configuration:# 开启驼峰命名数据库中字段值的下划线‘_’加字母会被认为是大写map-underscore-to-camel-case: true2.2 纯注解开发
第一步 引入启动器依赖
dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.1.4/version
/dependency第二步 编写mapper接口并标注Mapper注解使用对应的注解进行SQL语句操作
Mapper
public interface StuMapper {Select(select * from stu where sid#{sid})Stu queryBySid(int sid);
}3 SpringBoot整合MyBatis-Plus
3.1 普通的CRUD方法 MyBatis-plus的启动器内部不止引用了dbc开发的启动场景还导入了MyBatis的启动器所以这两个都无需再重复引用 第一步 引入启动器依赖
dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.4.1/version
/dependencymapper层 编写mapper接口标注Mapper注解并继承BaseMapper类。这是MyBatis-plus的独有方式这样做的好处是继承之后直接使用父类中已经写好的简单CRUD方法但是一些复杂的SQL业务还是需要使用映射文件来实现的进一步提高了代码开发的效率
Mapper
public interface StuMapper extends BaseMapperStu {}MyBatis-plus进行数据库表的增删改查的时候默认把继承BaseMapper类时传进去的泛型名称当做表名去查找如果泛型与数据库中的表名不对应的话可以在实体类使用注解标识除此之外注解还可以用来标识主键和非表中字段属性
NoArgsConstructor
AllArgsConstructor
Data
TableName(stu)
public class Stu {// 表名该字段是定义的临时变量并不存在于数据库的表中TableField(exist false)private String gender;// 标明表的主键TableIdprivate int sid;private String sname;private String age;private String course;private int cardid;
}编写映射文件并绑定mapper接口(如果有的话)。MyBatis-plus自动配置好了默认的mapper-locations也就是映射文件的存放位置为classpath:/mapper/**/*.xml于是我们就按照它的默认规则在静态资源路径下mapper文件夹下。本案例中没有映射文件于是就不创建 如果有需要的话还可以在配置文件中指定MyBatis-plus配置文件的各种信息
service层 service接口继承IService类
public interface StuService extends IServiceStu {}service的实现类先是继承ServiceImpl并传两个泛型(mapper接口实体类)然后实现service接口
Service
public class StuServiceImpl extends ServiceImplStuMapper, Stu implements StuService {}controller层 直接使用service继承类的简单方法
Controller
public class TableController {AutowiredStuServiceImpl stuService;/*** 点击Advanced table按钮进行页面转发并携带一个表格数据* param model 用于存储数据* return 页面转发forward 到 /table/dynamic_table.html*/GetMapping(/dynamic_table)public String dynamic_table(Model model) {// 从数据库中查出user表进行展示ListStu list stuService.list();model.addAttribute(stus, list);return /table/dynamic_table;}
}3.2 MyBatis-plus的分页实现 MyBatis-plus的分页功能实现需要先自定义一个配置类向容器中注册一个Interceptor
Configuration
public class MyBatisConfig {Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();PaginationInnerInterceptor paginationInnerInterceptor new PaginationInnerInterceptor();paginationInnerInterceptor.setOverflow(true);paginationInnerInterceptor.setMaxLimit(500L);interceptor.addInnerInterceptor(paginationInnerInterceptor);return interceptor;}
}然后就可以像普通的CRUD操作一样直接使用service继承类的分页的相关方法即可
GetMapping(/dynamic_table)
public String dynamic_table(RequestParam(value pn, defaultValue 1)Integer pn, Model model) {// 分页从数据库中查出stu表的所有数据当前页、总页数、总条数……PageStu stuPage new Page(pn, 1);PageStu page stuService.page(stuPage);model.addAttribute(page, page);return /table/dynamic_table;
}