idea整合jsp和mybatis

爲了怕翻車,比如可以建testj這樣的項目:

mysql和jsp pom

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

==========================mysql=================================

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.2</version>
        </dependency>

===========================================================

============================JSP===============================
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <scope>provided</scope>
        </dependency>

===========================================================

創建jsp文件 和數據庫

CREATE TABLE `t_user` (
  `id` int(12) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(60) NOT NULL,
  `note` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
src/main/webapp/WEB-INF/jsp/user/details.jsp

<%@ page pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
    <head>
        <title>用戶詳情</title>
    </head>
    <body>
    
        <center>
            <table border="1">
                <tr>
                    <td>標籤</td>
                    <td>值</td>
                </tr>
                <tr>
                    <td>用戶編號</td>
                    <td><c:out value="${user.id}"></c:out></td>
                </tr>
                <tr>
                    <td>用戶名稱</td>
                    <td><c:out value="${user.userName}"></c:out></td>
                </tr>
                <tr>
                    <td>用戶備註</td>
                    <td><c:out value="${user.note}"></c:out></td>
                </tr>
            </table>
        </center>
    </body>
</html>

jsp配置 ,選擇項目結構 ctrl+alt+shift+s

  • 在facets——web——web Resource Directory 選擇到 webapp目錄。deployment Root 爲 默認 /
  • 在右下角會提示創建 artifacts 點擊確定。一切都默認。(會創建 項目名:Web exploded)

application.properties


spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

#數據庫配置。這樣配置爲了適應最新的數據庫
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false

#可以不配置數據庫驅動,Spring Boot會自己發現
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.datasource.username=root
spring.datasource.password=123456


#mybatis配置
mybatis.mapper-locations=classpath:mapper/*.xml 
mybatis.type-aliases-package=com.my.testj

controller

  • user/details 將會拼接 :/WEB-INF/jsp/user/details.jsp
  • 我們指定的 實在webapp目錄,將會在這個目錄去找。webapp是和 java 和resource 目錄同級
@Controller
@RequestMapping("/user")
public class UserController {

	@Autowired
	private UserDao userDao = null;

	// 展示用戶詳情
	@RequestMapping("details")
	public ModelAndView details(Long id) {
		// 訪問模型層得到數據
		User user = userDao.getUser(id);
		/*User user=new User();*/
		/*user.setId(111L);
		user.setUserName("張三");*/
		// 模型和視圖
		ModelAndView mv = new ModelAndView();
		// 定義模型視圖
		mv.setViewName("user/details");
		// 加入數據模型
		mv.addObject("user", user);
		// 返回模型和視圖
		return mv;
	}

	@RequestMapping("/detailsForJson")
	public ModelAndView detailsForJson(Long id) {
		// 訪問模型層得到數據
		//User user = userService.getUser(id);
		User user=new User();
		user.setId(111L);
		user.setUserName("張三");
		// 模型和視圖
		ModelAndView mv = new ModelAndView();
		// 生成JSON視圖
		MappingJackson2JsonView jsonView = new MappingJackson2JsonView();
		mv.setView(jsonView);
		// 加入模型
		mv.addObject("user", user);
		return mv;
	}
}
  • 此時jsp已經搭建完畢。

搭建mybatis

#mybatis配置
mybatis.mapper-locations=classpath:mapper/*.xml 
mybatis.type-aliases-package=com.my.testj

mapper.xml

src/main/resources/mapper/userMapper.xml  #注意這裏放的 resources目錄下

<?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.hua.testj.UserDao">  #注意這裏指定的dao路徑

	<select id="getUser" resultType="user">
		select id, user_name as userName, note from t_user where id = #{id}
	</select>
	
	<select id="findUsers" resultType="user">
	   select id, user_name as userName, note from t_user
	   <where>
	        <if test="userName != null"> and user_name like concat('%', #{userName}, '%')</if>
	        <if test="note != null"> and note like concat('%', #{note}, '%')</if>
	   </where>
	</select>
	
</mapper>

dao

@Mapper
public interface UserDao {
	
	User getUser(Long id);

	List<User> findUsers(@Param("userName") String userName, @Param("note") String note);
}

  • mybatis.type-aliases-package=com.my.testj 注意,這個目錄 和下對應

pojo

@Alias("user")
public class User {
	
	private Long id;
	private String userName;
	private String note;
}

mian

@SpringBootApplication
public class TestjApplication {

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

}

/*@SpringBootApplication(scanBasePackages = "com.springboot.chapter9")
@MapperScan(basePackages="com.springboot.chapter9", annotationClass = Mapper.class)*/
  • 注意,默認的掃描是 mapper 可以不用配置。
如果配置:Repository
@Repository
public interface UserDao {}

記得改:annotationClass = Repository.class
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章