最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot集成mybatis與jsp過程詳解

 更新時間:2021年09月01日 10:44:02   作者:潮汐先生  
這篇文章主要介紹了Springboot集成mybatis與jsp過程,Spring Boot是一種全新的框架(相對而言),是用來簡化Spring應用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進行配置

什么是Spring Boot?

Spring Boot是一種全新的框架(相對而言),是用來簡化Spring應用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進行配置。通過這種方式Spring Boot將在蓬勃發(fā)展的快速應用開發(fā)領域(rapid application development)成為領導者。

springboot特點

  • 創(chuàng)建獨立的Spring應用程序
  • 嵌入的Tomcat,無需部署WAR文件
  • 簡化Maven配置
  • 自動配置Spring
  • 沒有XML配置

springboot快速搭建項目

springboot的東西很多,其余的東西后面有機會再做補充吧。

今天主要以標題springboot集成mybatis與jsp為例演示springboot快速搭建項目

新建項目springboot_mybatis_jsp

在這里插入圖片描述

在這里插入圖片描述

這里我們目前只選一個web依賴,剩下的我們需要的時候再手動添加;

springboot的版本我們選擇2.4.5,后面我們手動改成2.2.5.RELEASE。

最后我們點擊Finish。至此我們項目的初始化就完成了。

在這里插入圖片描述

項目配置

配置項目目錄

在這里插入圖片描述

mapper目錄的添加要注意是com/christy/mapper,這里不要搞錯了

配置工作目錄(working directory)

這一步一定要做,否則無法訪問到項目的jsp頁面

在這里插入圖片描述

第一步中點擊下拉三角形選擇Edit Configurations

第四步直接雙擊完后記得點擊Apply->OK

配置pom.xml

我們說了要實現(xiàn)springboot集成mybatis和jsp,所以首先要假如他們的依賴和相關(guān)依賴,這里放整個pom.xml內(nèi)容

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.christy</groupId>
    <artifactId>springboot_mybatis_jsp</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot_mybatis_jsp</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <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>
        <!-- mybatis相關(guān) -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.2</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.12</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
        <!-- jsp相關(guān) -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

 配置application.properties

server.port=8899
# 開啟jso的自動編譯
server.servlet.jsp.init-parameters.development=true
# 配置視圖解析器
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp
# 編寫mybatis相關(guān)配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/christy?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456
# 創(chuàng)建這個目錄一定要使用 "/"
mybatis.mapper-locations=classpath:com/christy/mapper/*.xml
# 指定別名
mybatis.type-aliases-package=com.christy.model.entity
# 開啟日志 日志級別: off > error > warn > info > debug > all
logging.level.root=info
logging.level.com.christy.model.dao=debug
logging.level.com.christy.controller=debug

編寫代碼

建表t_user

CREATE TABLE t_user (
    id INT (6) PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR (40),
    age INT (3),
    salary DOUBLE (7, 2)
);

編寫User.java

public class User {
    private Integer id;
    private String name;
    private Integer age;
    private Double salary;
    public User() {
    }
    public User(Integer id, String name, Integer age, Double salary) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.salary = salary;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public Double getSalary() {
        return salary;
    }
    public void setSalary(Double salary) {
        this.salary = salary;
    }
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", salary=" + salary +
                '}';
    }
}
// 我們這里沒有使用lombok

編寫UserDao

@Mapper
public interface UserDao {
    /**
     * 查詢所有
     * @author Christy
     * @date 2021/5/13 9:38
     * @param 
     * @return java.util.List<com.christy.model.entity.User>
     */
    List<User> findAll();
   /**
     * 添加用戶信息
     * @author Christy
     * @date 2021/5/13 9:38
     * @param user
     * @return 
     */
    void save(User user);
    /**
     * 根據(jù)id查詢用戶
     * @author Christy
     * @date 2021/5/13 9:39
     * @param id
     * @return com.christy.model.entity.User
     */
    User findById(Integer id);
    /**
     * 修改用戶信息
     * @author Christy
     * @date 2021/5/13 9:39
     * @param user
     * @return void
     */
    void update(User user);
    /**
     * 根據(jù)id刪除用戶
     * @author Christy
     * @date 2021/5/13 9:39
     * @param id
     * @return void
     */
    void deleteById(Integer id);
}

編寫UserMapper.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.christy.model.dao.UserDao">
    <!--findAll-->
    <select id="findAll" resultType="com.christy.model.entity.User">
        select id,name,age,salary from t_user
    </select>
    <!--save 采用數(shù)據(jù)庫自動生成(useGeneratedKeys="true")并返回主鍵的值(keyProperty保存主鍵的屬性名)-->
    <insert id="save" parameterType="com.christy.model.entity.User" useGeneratedKeys="true" keyProperty="id" >
        insert into t_user values(#{id},#{name},#{age},#{salary})
    </insert>
    <!--findById-->
    <select id="findById" parameterType="Integer" resultType="com.christy.model.entity.User">
        select id,name,age,salary from t_user where id = #{id}
    </select>
    <!--update-->
    <update id="update" parameterType="com.christy.model.entity.User">
        update t_user
        set
            name=#{name},
            age=#{age},
            salary=#{salary}
        where id = #{id}
    </update>
    <!--deleteById-->
    <select id="deleteById" parameterType="Integer" >
        delete from t_user where id = #{id}
    </select>
</mapper>

編寫UserService.java、UserServiceImpl.java

public interface UserService {    
    /**
     * 查詢所有用戶
     * @author Christy
     * @date 2021/5/13 9:41
     * @param 
     * @return java.util.List<com.christy.model.entity.User>
     */
    List<User> findAll();
    /**
     * 保存用戶信息
     * @author Christy
     * @date 2021/5/13 9:42
     * @param user
     * @return void
     */
    void save(User user);
    /**
     * 根據(jù)id查詢用戶
     * @author Christy
     * @date 2021/5/13 9:42
     * @param id
     * @return com.christy.model.entity.User
     */
    User findById(Integer id);
    /**
     * 修改用戶信息
     * @author Christy
     * @date 2021/5/13 9:42
     * @param user
     * @return void
     */
    void update(User user);    
    /**
     * 根據(jù)id刪除用戶
     * @author Christy
     * @date 2021/5/13 9:42
     * @param id
     * @return void
     */
    void deleteById(Integer id);
}
/**
 * @Component注解 在工廠中創(chuàng)建對象
 * @Controller @Service @Repository都繼承自@Component注解,
 * 該三個注解將三層Controller,Service,Dao區(qū)別開來,其余地方如需要創(chuàng)建對象需要用Component
 *
 * @Transactional
 * 修飾范圍:
 *      類:代表類中所有方法加入事務
 *      方法: 代表當前方法加入事務
 * propagation: 事務的傳播屬性 是指發(fā)生在多個業(yè)務層之間的事務傳遞
 *      默認值:REQUIRED 需要事務,如果外部存在事務則融入事務,沒有則開啟事務
 *      REQUIRED_NEW:需要新事物 外部存在事務則事務掛起,自己創(chuàng)建新的事務 內(nèi)部事務運行結(jié)束外部事物恢復(該傳播屬性常用于記錄業(yè)務操作日志)
 *      SUPPORTS:支持事務,外部存在事務則融入事務,沒有也不開啟
 *          那么問題來了,查詢方法上有必要加@Transactional(propagation = Propagation.SUPPORTS)?
 *          答:有必要。
 *          舉例:A.save(){ B.find*(){ C.update() }},這是個典型的A調(diào)用B,B調(diào)用C。對于A和C都是需要事務的,事務的傳播屬性都是默認值REQUIRED,
 *          如果此時B沒有加事務,則A的事務無法傳遞到C,此時C的傳播屬性因為是默認的REQUIRED,所以C會開啟一個新的事務。這時A和C分別處于不同的事務中
 *
 * @author Christy
 * @date 2021/5/13 10:04
 **/
@Service // 通知springboot掃描該注解 用來在工廠中創(chuàng)建對象
@Transactional  // 控制事務 修飾范圍: 類 方法
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;

    @Override
    @Transactional(propagation = Propagation.SUPPORTS)  // propagation: 事務的傳播屬性
    public List<User> findAll() {
        return userDao.findAll();
    }

    @Override
    public void save(User user) {
        userDao.save(user);
    }

    @Override
    public User findById(Integer id) {
        return userDao.findById(id);
    }

    @Override
    public void update(User user) {
        userDao.update(user);
    }

    @Override
    public void deleteById(Integer id) {
        userDao.deleteById(id);
    }
}

編寫Controller

@Controller
@RequestMapping("user")
public class UserController {
    @Autowired
    private UserService userService;
    /**
     * 查詢所有
     * @author Christy
     * @date 2021/5/13 10:48
     * @param request
     * @param model
     * @return java.lang.String
     */
    @RequestMapping("findAll")
    public String findAll(HttpServletRequest request, Model model){
        List<User> users = userService.findAll();
        //保存到作用域
        model.addAttribute("users",users);
        return "user_list";
    }
    /**
     * 添加用戶
     * @author Christy
     * @date 2021/5/13 10:49
     * @param name
     * @param user
     * @return java.lang.String
     */
    @RequestMapping("save")
    public String save(String name,User user){
        userService.save(user);
        return "redirect:/user/findAll";
    }
    /**
     * 查詢用戶
     * @author Christy
     * @date 2021/5/13 10:49
     * @param id
     * @param model
     * @return java.lang.String
     */
    @RequestMapping("findById")
    public String findById(Integer id,Model model){
        User user = userService.findById(id);
        model.addAttribute("user",user);
        return "user_detail";
    }
    /**
     * 修改用戶信息
     * @author Christy
     * @date 2021/5/13 10:50
     * @param user
     * @return java.lang.String
     */
    @RequestMapping("update")
    public String update(User user){
        userService.update(user);
        return "redirect:/user/findAll";
    }
    /**
     * 刪除一個用戶
     * @author Christy
     * @date 2021/5/13 10:50
     * @param id
     * @return java.lang.String
     */
    @RequestMapping("deleteById")
    public String deleteById(Integer id){
        userService.deleteById(id);
        return "redirect:/user/findAll";
    }
}

測試

我們啟動項目,訪問列表頁面http://localhost:8899/user/findAll,然后按下圖操作我們預編寫的功能

在這里插入圖片描述

以上就是Springboot集成mybatis與jsp過程詳解的詳細內(nèi)容,更多關(guān)于Springboot集成的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用SpringBoot簡單實現(xiàn)一個蘋果支付的場景

    使用SpringBoot簡單實現(xiàn)一個蘋果支付的場景

    這篇文章主要為大家詳細介紹了如何在Spring?Boot項目中集成Apple?Pay功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-11-11
  • 解讀Spring配置與服務組件的關(guān)系和注入機制

    解讀Spring配置與服務組件的關(guān)系和注入機制

    這篇文章主要介紹了解讀Spring配置與服務組件的關(guān)系和注入機制,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • Java中策略設計模式的實現(xiàn)及應用場景

    Java中策略設計模式的實現(xiàn)及應用場景

    策略設計模式是Java中一種常用的設計模式,它通過定義一系列算法并將其封裝成獨立的策略類,從而使得算法可以在不影響客戶端的情況下隨時切換。策略設計模式主要應用于系統(tǒng)中存在多種相似的算法、需要靈活調(diào)整算法邏輯或者需要擴展新的算法等場景
    2023-04-04
  • SpringBoot使用編程方式配置DataSource的方法

    SpringBoot使用編程方式配置DataSource的方法

    這篇文章主要介紹了SpringBoot使用編程方式配置DataSource的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 基于Java中throw和throws的區(qū)別(詳解)

    基于Java中throw和throws的區(qū)別(詳解)

    下面小編就為大家?guī)硪黄贘ava中throw和throws的區(qū)別(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Java對文本文件MD5加密并ftp傳送到遠程主機目錄的實現(xiàn)方法

    Java對文本文件MD5加密并ftp傳送到遠程主機目錄的實現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于Java對文本文件MD5加密并ftp傳送到遠程主機目錄的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-08-08
  • @ConfigurationProperties遇到的坑及解決

    @ConfigurationProperties遇到的坑及解決

    這篇文章主要介紹了解決@ConfigurationProperties遇到的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java調(diào)用構(gòu)造函數(shù)和方法及使用詳解

    Java調(diào)用構(gòu)造函數(shù)和方法及使用詳解

    在Java編程中,構(gòu)造函數(shù)用于初始化新創(chuàng)建的對象,而方法則用于執(zhí)行對象的行為,構(gòu)造函數(shù)在使用new關(guān)鍵字創(chuàng)建類實例時自動調(diào)用,沒有返回類型,并且名稱與類名相同,本文通過示例詳細介紹了如何在Java中使用構(gòu)造函數(shù)和方法,感興趣的朋友一起看看吧
    2024-10-10
  • MyBatis Plus邏輯刪除和分頁插件使用詳解

    MyBatis Plus邏輯刪除和分頁插件使用詳解

    這篇文章主要介紹了MyBatis Plus之邏輯刪除和分頁插件使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • idea2020.3測試評價及感受

    idea2020.3測試評價及感受

    idea2020.3版本這次變化最大的也就是 UI了完全拋棄了之前一直使用的模板更改成了新的樣式,感興趣的朋友快來下載體驗下吧
    2020-10-10

最新評論

隆德县| 拉萨市| 社会| 郎溪县| 仁布县| 汉阴县| 梅州市| 绥宁县| 新绛县| 宜州市| 洱源县| 吉林省| 准格尔旗| 昂仁县| 三江| 民乐县| 桦甸市| 江安县| 句容市| 邹城市| 田林县| 饶河县| 开鲁县| 巨鹿县| 清苑县| 股票| 南华县| 宁波市| 澄迈县| 茶陵县| 邵武市| 兴山县| 五华县| 铜川市| 句容市| 喜德县| 霍城县| 大埔县| 宁海县| 余姚市| 平顶山市|