美文网首页Spring BootJava学习笔记SpringBoot精选
【Spring4 MVC】(三)-连接MySQL数据库

【Spring4 MVC】(三)-连接MySQL数据库

作者: 誓词倾城 | 来源:发表于2016-01-26 14:32 被阅读4120次

    1. 开发环境(部分)

    基于原有环境

    • MyBatis 3.3.0
    • MyBatis-Spring 1.2.3
    • MySQL 5.5.47

    2. 文件结构

    2.1 项目目录

    新增User(entity),UserDao(Repository),WebContextConfig(beans.xml)
    对hello.html、HelloController稍作修改

    文件结构.png

    2.2 pom.xml 添加部分依赖

     <!--仅包含部分,详见源码pom文件-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!--mybatis相关依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.3</version>
        </dependency>
        <!-- 导入Mysql数据库链接jar包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.37</version>
        </dependency>
        <!-- 连接池包 -->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>commons-pool</groupId>
            <artifactId>commons-pool</artifactId>
            <version>1.6</version>
        </dependency>
    

    3. 代码编写

    3.1 User.java

    package com.practice;
    
    /**
     * Created by SXY on 2016/1/26.
     */
    public class User {
        private String name;
        private int age;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    }
    

    3.2 UserDao.java

    package com.practice;
    
    import org.apache.ibatis.annotations.Select;
    import org.springframework.stereotype.Repository;
    
    /**
     * 数据库的增删查改等操作在这里执行
     * MyBatis MapperScan 会扫描到这里,完成sql语句与相关操作语句的映射
     * Created by SXY on 2016/1/26.
     */
    @Repository
    public interface UserDao {
    
        @Select("select * from user_info where name=#{name} limit 1")
        User getOneUser(String name);
    
    }
    

    3.3 WebContextConfig.java

    package com.practice;
    
    import org.apache.commons.dbcp.BasicDataSource;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.mybatis.spring.SqlSessionFactoryBean;
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.jdbc.datasource.DataSourceTransactionManager;
    
    import javax.sql.DataSource;
    
    /**
     * 类似于spring-context.xml或者beans.xml
     * MapperScan用于扫描Mapper映射接口,比如本例中的 UserDao
     * MapperScan、ComponentScan具体的使用方法 跟之前的ComponentScan 完全相同 此处便不再赘述
     * Created by SXY on 2016/1/26.
     */
    @Configuration
    @MapperScan(basePackages = "com.practice")
    @ComponentScan(basePackages = "com.practice")
    public class WebContextConfig {
    
        @Bean
        public DataSource getDataSource() {
            BasicDataSource dataSource = new BasicDataSource();
    //        数据库连接配置
            dataSource.setDriverClassName("com.mysql.jdbc.Driver");
            dataSource.setUrl("jdbc:mysql://localhost:3306/test");
            dataSource.setUsername("root");
            dataSource.setPassword("root");
            return dataSource;
        }
    
    //    事务管理
        @Bean
        public DataSourceTransactionManager transactionManager() {
            return new DataSourceTransactionManager(getDataSource());
        }
    
        @Bean(name = "sqlSessionFactory")
        public SqlSessionFactory sqlSessionFactory() throws Exception {
            SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
            sqlSessionFactory.setDataSource(getDataSource());
            return sqlSessionFactory.getObject();
        }
    }
    
    

    3.4 修改 HelloController.java

    package com.practice;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    /**
     * Created by SXY on 2016/1/18.
     */
    // 声明为controller控制器,捕获请求并处理请求
    @Controller
    public class HelloController {
    
    //    注入UserDao
        @Autowired
        private UserDao  userDao;
    
    //    捕获 /hello 请求,利用hello(Model model) 处理请求,并返回‘hello’,交给Thymeleaf 处理
    //    hello 对应html文件名。model 作为信息的载体,封装各类变量、对象
        @RequestMapping("/hello")
        public String hello(Model model) {
    
    //        获取XiaoMing的相关信息
            User user = userDao.getOneUser("XiaoMing");
    
            model.addAttribute("name", user.getName());
            model.addAttribute("age", user.getAge());
    
            return "hello";
        }
    }
    
    

    3.6 修改 hello.html

    <!-- 该文件要放置在 resources/templates/下 -->
    <!DOCTYPE html>
    <!-- 添加 Thymeleaf 命名空间-->
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8"/>
        <title>Spring4 MVC</title>
    </head>
    <body>
        <p th:text="'Hi,My name is ' + ${name} +  ','+'爱沐 '+${age}+' 叶子欧德'" />
    </body>
    </html>
    

    4. 测试

    4.1 MySQL 测试数据表准备

    测试表.png

    4.2 运行 ‘ 程序 ’

    测试成功.png

    小结

    本例选用的数据持久层框架是 MyBatis,各位可以根据自己的情况选择合适的框架。配置过程大同小异。
    注意maven 依赖的引入,以及相关bean的添加。Spring 官方DataAccess文档
    http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#spring-data-tier

    源码地址:http://git.oschina.net/tobe/Spring4MVC/tree/connect_mysql/

    相关文章

      网友评论

        本文标题:【Spring4 MVC】(三)-连接MySQL数据库

        本文链接:https://www.haomeiwen.com/subject/jejdkttx.html