目录
一、MyBatis入门
1.数据库的相关操作
mysql -uroot -p
输入密码
create database community;
show databases;
use community;
//加载脚本文件 导入表
source F:/community-init-sql-1.5/init_schema.sql;
//导入数据
source F:/community-init-sql-1.5/init_data.sql;
ps:如果系统报“MySQL执行脚本时出现failed to open file ,error 2 时”
可能是某个进程占用了该文件所在的文件夹,解决方法:将该文件拷贝到其他文件夹中再试。
2.MyBatis介绍
常用链接:使用手册http://www.mybatis.org/mybatis-3
Spring整合的MyBatis手册http://www.mybatis.org/Spring
①核心组件:
-SQLSessionFactory :用于创建SQLSession的工厂类。
-SQLSession:MyBatis的核心组件,用于向数据库执行SQL。
-主配置文件:XML配置文件,可以对MyBatis的底层行为作出详细的配置。
-Mapper接口:DAO接口,在MyBatis中称为Mapper
-Mapper映射器:用于编写SQL,并将SQL和实体类映射的组件,采用XML、注解均可实现
②示例
-使用MyBatis对用户表进行CRUD操作
1) 在pom.xml中配置mysql和mybatis
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
2)在application.properties中增加:
# DataSourceProperties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/community?characterEncoding=utf-8&useSSL=false&serverTimezone=Hongkong
spring.datasource.username=root
spring.datasource.password=XXX
#连接池的配置
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
#最大连接数
spring.datasource.hikari.maximum-pool-size=15
#保有的最小连接数
spring.datasource.hikari.minimum-idle=5
#链接空闲后多久关闭链接
spring.datasource.hikari.idle-timeout=30000
# MybatisProperties
#classes表示target下的class文件夹
mybatis.mapper-locations=classpath:mapper/*.xml
#实体类的存放位置,用来封装我们要找的数据
mybatis.type-aliases-package=com.nowcoder.community.entity
#启动自动增加主键 ID自增
mybatis.configuration.useGeneratedKeys=true
#让下划线的命名方式和驼峰式的命名方式表示相同的参数 user_name 和 userName
mybatis.configuration.mapUnderscoreToCamelCase=true
3)新建entity文件夹,写实体类,封装数据库中表的数据,根据表的字段声明属性,属性名以驼峰式命名。
定义属性,定义get,set方法;定义toString。
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
4)在dao文件夹下写对应表的Mapper文件,只需要写接口不需要写实现类 UserMapper
加@Mapper注解
写增删改查抽象方法
@Mapper
public interface UserMapper {
User selectById(int id);
User selectByName(String username);
User selectByEmail(String email);
// 返回插入的行数
int insertUser(User user);
//返回修改的条数
int updateStatus(int id, int status);
//更新头像的路径,返回更新的条数
int updateHeader(int id, String headerUrl);
//更新密码
int updatePassword(int id, String password);
}
5)如果想要实现,就需要写配置文件。在配置文件中写sql语句,Mybatis会自动生成实现类。配置文件命名为 user-mapper.xml.写在 resources/mapper下。
解决一个连数据库的报错,报错内容很长,核心内容是:
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
解决办法:1)是给数据库赋予允许远程连接的权限,命令为:
//如果用root用户了就不用写这句
create user root@'%' identified by '写你设置的密码';
grant all privileges on *.* to root@'%' with grant option;
2)再次确认,在所有涉及连数据库的配置文件中,用户名、密码、url都写对没有。
二、社区首页开发
1.开发流程
-一次请求的执行过程
DAO:数据访问层:先写实体类,再写Mapper
2.分步实现:
-开发社区首页,显示前十个帖子
-开发分页组件,分页显示所有帖子
步骤如下:
DAO:数据访问层:先写实体类,再写Mapper
1)entity下写DiscussPost实体类,其中包含:属性,get/set方法,toString重写
2)写Mapper(一张表,一个Mapper,是一个接口),名为DiscussPostMapper
①加@Mapper注解
②写要实现的抽象方法
3)在resources/Mapper下新建配置文件实现Mapper里的方法
Service 业务层开发(可以对从数据库中查到的结果在业务层面进行一些处理)
1)在service包下新建业务组件DiscussPostService,加@Service注解
2)要用到DAO中的Mapper,因此要自动注入DiscussPostMapper
Controller(视图层)
1)在controller文件下新建HomeController,加注解@Controller
2)注入discussPostService和UserService
3)定义方法:①@RequestMapping(XXX)指明访问路径
@定义方法,在方法内,从每个对应的service数据拿到想要的数据,根据需要拼接。
3.分页实现:
在entity包下新建page.class
三、项目调试技巧
1.响应状态码含义:http 各种状态码的含义
补充:重定向可以实现低耦合的页面间的跳转
2.服务端断点调试技巧
idea里打断点调
3.客户端断点调试技巧
Chrome打断点调
4.设置日志级别,并将日志输出到不同的终端
spring的logback。
log分为好几个级别,可以通过设置打印各种级别的日志
5.log文件
在resources下写logback-spring.xml在里面对log文件进行一系列设置来生成不同类别的log文件
四、版本控制
1.git