欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring Boot Mybatis Thymeleaf项目构建

程序员文章站 2022-03-02 15:37:37
...
  1. POM文件
    <?xml version="1.0" encoding="UTF-8"?>
    <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"&gt;
    <modelVersion>4.0.0</modelVersion>
    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.6.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.skcc</groupId>
    <artifactId>service</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>oaadmin</name>
    <description>Demo project for Spring Boot</description>
    <properties>
    <java.version>1.8</java.version>
    </properties>
    <dependencies>
    <!-- 开发Spring及web项目依赖 -->
    <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>
    <!-- thymeleaf视图模板依赖 -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.0</version>
    </dependency>
    <!-- jdbc依赖 -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <!-- mssql driver -->
    <dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <scope>runtime</scope>
    </dependency>
    <!-- 热部署依赖 -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional> <!-- 这个需要为 true 热部署才有效 -->
    </dependency>
    </dependencies>
    <build>
    <plugins>
    <!-- 热部署插件 -->
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    </plugins>
    </build>
    </project>
    application.properties文件配置
    spring.profiles.active=dev

spring.thymeleaf.cache=false
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.servlet.content-type=text/html; charset=utf-8

spring.datasource.url=jdbc:sqlserver://172.206.205.116:1433;DatabaseName=EGSS_TEST
spring.datasource.username=EGSS_DEV
spring.datasource.password=
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
# com.microsoft.sqlserver.jdbc.SQLServerDriver com.mysql.jdbc.Driver
mybatis.config-location=classpath:mybatis/mapper/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/
Mapper.xml
mybatis.type-aliases-package=com.skcc.entity

在src/main/resources创建目录mybatis/mapper文件夹,再创建BookMapper.xml/mybatis-config.xml
BookMapper.xml文件
<?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.skcc.mapper.BookMapper">
<select id="selectAllBook" resultType="com.skcc.entity.BookEntity">
select from AA_Book
</select>
<select id="selectBookById" parameterType="java.util.Map" resultType="java.util.Map" >
select
from AA_Book where BookId=#{BookId}
</select>
<insert id="insertBook" keyProperty="BookId" useGeneratedKeys="true" parameterType="java.util.Map">
INSERT INTO AA_Book(BookName,Author,WordCount,BookSummary,[Desc],CreateDate)
VALUES
(

         #{BookName}
        , #{Author}
        , #{WordCount}
        , #{BookSummary}
        , #{Desc}
        ,GETDATE()

    )
</insert>
</mapper>

mybatis-config.xml文件
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd"&gt;
<configuration>
<typeAliases>

    <typeAlias alias="Integer" type="java.lang.Integer" />
    <typeAlias alias="Long" type="java.lang.Long" />
    <typeAlias alias="HashMap" type="java.util.HashMap" />
    <typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" />
    <typeAlias alias="ArrayList" type="java.util.ArrayList" />
    <typeAlias alias="LinkedList" type="java.util.LinkedList" />
</typeAliases>

<!--  
<mappers>
    <mapper resource="classpath:sample/mybatis/mapper/CityMapper.xml"/>

</mappers>

-->

</configuration>

OaadminApplication启动类入口文件br/>@SpringBootApplication
@MapperScan("com.skcc.mapper")
public class OaadminApplication {

public static void main(String[] args) {
    SpringApplication.run(OaadminApplication.class, args);
}

}
com.skcc.mapper包BookMapper.java文件
public interface BookMapper {

// com.ibatis.sqlmap.client.SqlMapClient;
public List<BookEntity> selectAllBook();

public Map<String, Object> selectBookById(Map<String, Object> map);

public int insertBook(Map<String, Object> map);

}br/>com.skcc.controller包下UserController.java文件
@Controller
@RequestMapping("/user")
public class UserController {

@Autowired
BookMapper bookDao;

@RequestMapping("/hello")
public String hello(Model m) {
    m.addAttribute("name", "thymeleaf start.");
    List<EmpInfo> empList = new ArrayList<>();
    empList.add(new EmpInfo("1001", "ZhouJun", 30));
    empList.add(new EmpInfo("1002", "LiMei", 32));
    empList.add(new EmpInfo("1003","ChenHua",22));
    m.addAttribute("emps", empList);
    m.addAttribute("nowdate",new Date());
    List<BookEntity> bookList= bookDao.selectAllBook();

    m.addAttribute("BooKList", bookList.toString());

    return "hello";
}

}br/>**src/main/resources/templates文件**,其中src/main/resources/static中可以放js,css文件@{/css/hello.css}
<html xmlns:th="
http://www.thymeleaf.org"&gt;
<head>
<title>Spring Boot thymeleaf</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" style="text/css" href="/css/hello.css" th:href="@{/css/hello.css}" />
<script type="text/javascript" src="/js/hello.js" th:src="@{/js/hello.js}"></script>
</head>
<body>
<p th:text="${name}">name</p>
<p th:if="n">条件为真就显示了</p>
<div>
<input type="button" value="Test Buton" class="ibutton"
οnclick="testPopUp();" />
</div>
<div class="showing">
<div th:replace="include::footer1"></div>
<div th:replace="include::footer2(1999,2019)"></div>
</div>
<div>
<h2>遍历</h2>
<table>
<thead>
<tr>
<th>id</th>
<th>Name</th>
<th>age</th>
</tr>
</thead>
<tbody>
<tr th:each="p: ${emps}">
<td th:text="${p.empID}"></td>
<td th:text="${p.empName}"></td>
<td th:text="${p.age}"></td>
</tr>
</tbody>
</table>
</div>
<div>
<h2>时间格式化</h2>
<p th:text="${#dates.format(nowdate,'yyyy-MM-dd HH:mm:ss SSS')}"></p>
</div>
<div>
<h2>BooKList</h2>
<p th:text="${BooKList}">BooKList</p>
</div>

</body>br/>**单元测试示例**
@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloTest {

@Autowired
BookMapper bookDao;

@Test
public void sayHello() {
    new HelloService().sayHello();
}

@Test
public void selectAllBookTest() {

    List<BookEntity> bookList= bookDao.selectAllBook();
    System.out.println(bookList);
}

@Test
public void selectBookById() {
    Map<String, Object> paramMap = new HashMap<>();
    paramMap.put("BookId", 1);
    Map<String, Object> bookMap = bookDao.selectBookById(paramMap);
    System.out.println("----------selectBookById--bookMap-------------------");
    System.out.println(bookMap);
}

@Test
public void insertBook() {
    Map<String, Object> paramMap = new HashMap<>();
    paramMap.put("BookName", "PHP高级编程");
    paramMap.put("Author", "zhangjun");
    paramMap.put("WordCount", 66999);
    paramMap.put("BookSummary", "网络原理");
    paramMap.put("Desc", "2008年出版");
    int result = bookDao.insertBook(paramMap);
    System.out.println("insertBook : " + result+" Key : " + paramMap.get("BookId"));

}

}