一.安装数据库
-
安装MySQL Server:下载地址
-
安装MySQL Workbench:下载地址
-
配置my.ini文件(注意路径要用\\):
用记事本创建后缀名为.ini的文件,文件名为my.ini,配置内容为:
[mysql]
default-character-set=utf8
[mysqld]
port=3306
basedir=D:\\software\\work\\mysql-8.0.36-winx64
max_connections=20
character-set-server=utf8
default-storage-engine=INNODB -
将bin文件配置为环境变量
-
初始化命令行
- 用管理员身份运行命令行工具
- cd到bin目录下
- 依次输入初始化命令,记下初始密码:
mysqld --initialize --console
mysqld install
net start mysql
-
修改密码
- 访问mysql:mysql -uroot -p
- 修改密码,分号结束,字符串内为新密码:
alter user ‘root’@‘localhost’ identified by ‘123456’; - 退出:exit;
-
建立项目库,导入项目所需的表(sql文件参考博客)
- 创建名为community的库:create database community;
- 使用库:use community;
- 导入建表脚本:source D:/software/work/community-init-sql/init_schema.sql;
- 导入数据:source D:/software/work/community-init-sql/init_data.sql;
-
配置MySQL Workbench
- 修改密码
- 将Default Schema设置为community(默认要访问的库)
- Edit–>Preferences–>SQL Editor–>Safe Updata取消选中
二.MyBatis
2.1使用MyBatis对用户表进行CRUD操作
-
添加maven依赖
- 在maven官网搜索mysql,复制依赖到项目的pom.xml文件中
- 在maven官网搜索mybatis spring boot starter,复制依赖到项目的pom.xml文件中
-
在application.properties中配置
-
在com.nowcoder.community下新建entity,再在其下新建类User,用来封装sql表中的数据:
- 定义sql表中的属性(表中有哪些属性就定义哪些)
- 生成Getter and Setter方法(Alt + Ins快捷键,选择Getter and Setter)
- 生成toString方法,方便打印对象看数据(Alt + Ins快捷键,选择toString())
-
在dao下新建接口UserMapper,用来访问数据库
- 在接口前加上注解@Mapper
- 在UserMapper中定义增删查改的方法
-
在mapper下新建user-mapper.xml配置文件,开发者需要在项目中自定义SQL语句
- id=‘selectById’,这里写的是UserMapper中对应的方法名
- resultType=“User”,声明返回类型
- 标签内部写SQL查询语句
-
写测试用例。在test下的com.nowcoder.community下新建MapperTests类
@RunWith(SpringRunner.class) @SpringBootTest @ContextConfiguration(classes = CommunityApplication.class) public class MapperTests { @Autowired private UserMapper userMapper; @Test public void testSelecUser(){ User user = userMapper.selectById(101); System.out.println(user); } }
输出结果如下:
继续测试insert方法是否有效:
@Test
public void testInsertUser(){
User user = new User();
user.setUsername("test");
user.setPassword("123456");
user.setSalt("abc");
user.setEmail("test@qq.com");
user.setHeaderUrl("http://www.nowcoder.com/101.png");
user.setCreateTime(new Date());
int rows = userMapper.insertUser(user);
System.out.println(rows);
System.out.println(user.getId());
}
输出结果如下:
数据库中也成功写入:
继续测试update方法是否有效:
@Test
public void updateUser(){
int rows = userMapper.updateStatus(150, 1);
System.out.println(rows);
rows = userMapper.updateHeader(150, "http://www.nowcoder.com/102.png");
System.out.println(rows);
rows = userMapper.updatePassword(150, "hello");
System.out.println(rows);
}
运行后报错:Parameter ‘status’ not found. Available parameters are [arg1,arg0, param1, param2]
解决办法:在UserMapper中的参数前加上@Param注解,参考博客
查看数据库的记录是否被更改:
三.总结
- entity下定义User类,用来表示数据库中的每一条数据。
- dao下新建UserMapper接口,用来定义增删查改的方法。
- mapper下新建user-mapper.xml配置文件,用来自定义SQL语句。