1.Apache maven
方便我们管理和下载jar包。 中央仓库 默认的maven官方的下载jar。很慢
镜像:第三方,对于中央仓库的拷贝。
私服:一般公司会有自己的仓库自己用。
过程:引入jar包时,会先检查本地仓库,没有的话再去远程仓库下载
2.mybatis
前三个在springboot都已经自动创建和初始化了。只要写个mapper接口和xml映射文件就行
2.1mybatis的使用
1.当查询select要写的字段多,可以通过sql抽出来,然后写include代替
2.当为select时,要写resultType。由于我们在application配置了实体类的位置,只要写类名就行
3.当为insert时,要写parameterType,要插入的对象
<?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.cjh.community.dao.UserMapper">
<sql id="insertFields">
username, password, salt, email, type, status, activation_code, header_url, create_time
</sql>
<sql id="selectFields">
id, username, password, salt, email, type, status, activation_code, header_url, create_time
</sql>
<select id="selectById" resultType="User">
select <include refid="selectFields"></include>
from user
where id = #{id}
</select>
<select id="selectByName" resultType="User">
select <include refid="selectFields"></include>
from user
where username = #{username}
</select>
<select id="selectByEmail" resultType="User">
select <include refid="selectFields"></include>
from user
where email = #{email}
</select>
<insert id="insertUser" parameterType="User" keyProperty="id">
insert into user (<include refid="insertFields"></include>)
values(#{username}, #{password}, #{salt}, #{email}, #{type}, #{status}, #{activationCode}, #{headerUrl}, #{createTime})
</insert>
<update id="updateStatus">
update user set status = #{status} where id = #{id}
</update>
<update id="updateHeader">
update user set header_url = #{headerUrl} where id = #{id}
</update>
<update id="updatePassword">
update user set password = #{password} where id = #{id}
</update>
</mapper>
2.2 application配置
# 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=
spring.datasource.password=
# 数据连接池配置
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
# 映射文件存放位置,classpath=target下的classes目录
mybatis.mapper-locations=classpath:mapper/*.xml
# 实体类的包位置。这样xml文件就能直接写类名。User
mybatis.type-aliases-package=com.cjh.community.entity
# 主键自增
mybatis.configuration.useGeneratedKeys=true
# 匹配驼峰命名
mybatis.configuration.mapUnderscoreToCamelCase=true
3. 测试的使用
下面主要是测试接口
@RunWith(SpringRunner.class)
@SpringBootTest
//这个注解,测试时,就能和开发的主启动类(配置类)用于一样的配置
@ContextConfiguration(classes = CommunityApplication.class)
public class MapperTests {
@Autowired
private UserMapper userMapper;
@Autowired
private DiscussPostMapper discussPostMapper;
@Test
public void testSelectUser() {
User user = userMapper.selectById(101);
System.out.println(user);
user = userMapper.selectByName("liubei");
System.out.println(user);
user = userMapper.selectByEmail("nowcoder101@sina.com");
System.out.println(user);
}
@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());
}
@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);
}
@Test
public void testSelectPosts() {
List<DiscussPost> list = discussPostMapper.selectDiscussPosts(149, 0, 10);
for(DiscussPost post : list) {
System.out.println(post);
}
int rows = discussPostMapper.selectDiscussPostRows(149);
System.out.println(rows);
}
}
4.springmvc
这里详细的介绍了http HTTP | MDN (mozilla.org)
springmvc主要解决表现层的问题。对于业务层和数据层不会管
model就是数据,view一般用thymeleaf(就是生产动态html)然后把model填进去。就能返回html了