<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.tszr</groupId> <artifactId>chapter032</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <!-- Spring Data JPA依赖启动器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- 阿里巴巴的Druid数据源依赖启动器 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> <!-- MyBatis依赖启动器 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> <!-- MySQL数据库连接驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version><!--$NO-MVN-MAN-VER$--> <scope>runtime</scope> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>11</source> <target>11</target> </configuration> </plugin> </plugins> </build> </project>
server: port: 8082 spring: datasource: name: druidDataSource type: com.alibaba.druid.pool.DruidDataSource druid: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/springbootdata?useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true&characterEncoding=utf-8 username: root password: admin initial-size: 20 min-idle: 10 max-active: 100 mybatis: configuration: map-underscore-to-camel-case: true mapper-locations: - classpath:mapper/*.xml type-aliases-package: com.itheima.domain
package com.itheima.domain; import java.util.List; public class Article { private Integer id; private String title; private String content; private List<Comment> commentList; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public List<Comment> getCommentList() { return commentList; } public void setCommentList(List<Comment> commentList) { this.commentList = commentList; } public String toString() { return "Article{" + "id=" + id + ", title='" + title + '\'' + ", content='" + content + '\'' + ", commentList=" + commentList + '}'; } }
package com.itheima.domain; public class Comment { private Integer id; private String content; private String author; private Integer aId; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public Integer getaId() { return aId; } public void setaId(Integer aId) { this.aId = aId; } @Override public String toString() { return "Comment{" + "id=" + id + ", content='" + content + '\'' + ", author='" + author + '\'' + ", aId=" + aId + '}'; } }
package com.itheima.mapper; import org.apache.ibatis.annotations.Mapper; import com.itheima.domain.Article; @Mapper public interface ArticleMapper { public Article selectArticle(Integer id); public int updateArticle(Article article); }
<?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.itheima.mapper.ArticleMapper"> <!-- 1、查询文章详细(包括评论信息) --> <select id="selectArticle" resultMap="articleWithComment"> SELECT a.*,c.id c_id,c.content c_content,c.author FROM t_article a,t_comment c WHERE a.id=c.a_id AND a.id = #{id} </select> <resultMap id="articleWithComment" type="Article"> <id property="id" column="id" /> <result property="title" column="title" /> <result property="content" column="content" /> <collection property="commentList" ofType="Comment"> <id property="id" column="c_id" /> <result property="content" column="c_content" /> <result property="author" column="author" /> </collection> </resultMap> <!-- 2、根据文章id更新文章信息 --> <update id="updateArticle" parameterType="Article"> UPDATE t_article <set> <if test="title !=null and title !=''"> title=#{title}, </if> <if test="content !=null and content !=''"> content=#{content} </if> </set> WHERE id=#{id} </update> </mapper>
package com.itheima; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class,args); } }
package com.itheima.config; import javax.sql.DataSource; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.alibaba.druid.pool.DruidDataSource; @Configuration @EnableConfigurationProperties public class DataSourceConfig { @Bean @ConfigurationProperties(prefix="spring.datasource.druid") public DataSource getDruid(){ return new DruidDataSource(); } }
package com.itheima; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import com.itheima.domain.Article; import com.itheima.domain.Comment; import com.itheima.mapper.ArticleMapper; import com.itheima.mapper.CommentMapper; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class TestApplication { @Autowired private CommentMapper commentMapper; @Test public void selectComment() { Comment comment = commentMapper.findById(1); System.out.println(comment); } @Autowired private ArticleMapper articleMapper; @Test public void selectArticle() { Article article = articleMapper.selectArticle(1); System.out.println(article); } }