1.2环境搭建

85 阅读2分钟

1.Apache maven

方便我们管理和下载jar包。 中央仓库 默认的maven官方的下载jar。很慢

镜像:第三方,对于中央仓库的拷贝。

私服:一般公司会有自己的仓库自己用。

过程:引入jar包时,会先检查本地仓库,没有的话再去远程仓库下载

image.png

2.mybatis

前三个在springboot都已经自动创建和初始化了。只要写个mapper接口和xml映射文件就行

image.png

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了 image.png