zoukankan      html  css  js  c++  java
  • SpringBoot整合MyBatis例子

    1、pom.xml

    <?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">
    	<modelVersion>4.0.0</modelVersion>
    
    	<groupId>com.java</groupId>
    	<artifactId>HelloWorldSpringBoot</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	<packaging>war</packaging>
    
    	<name>HelloWorldSpringBoot</name>
    	<description>Demo project for Spring Boot</description>
    
    	<parent>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-parent</artifactId>
    		<version>1.5.7.RELEASE</version>
    		<relativePath/> <!-- lookup parent from repository -->
    	</parent>
    
    	<properties>
    		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    		<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-tomcat</artifactId>
    			<scope>provided</scope>
    		</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>
    		 <dependency>
                    <groupId>javax.servlet</groupId>
                    <artifactId>javax.servlet-api</artifactId>
                    <scope>provided</scope>
             </dependency>
             <dependency>
                    <groupId>javax.servlet</groupId>
                    <artifactId>jstl</artifactId>
             </dependency>
    
             <dependency>
             	<groupId>org.springframework.boot</groupId>
             	<artifactId>spring-boot-starter-thymeleaf</artifactId>
             </dependency>
             <dependency>
             	<groupId>org.springframework.boot</groupId>
             	<artifactId>spring-boot-starter-freemarker</artifactId>
             </dependency>
    
    
             <dependency>
             	<groupId>mysql</groupId>
             	<artifactId>mysql-connector-java</artifactId>
             	<scope>runtime</scope>
             </dependency>
             <dependency>
             	<groupId>org.springframework.boot</groupId>
             	<artifactId>spring-boot-starter-data-jpa</artifactId>
             </dependency>
    
             <dependency>
             	<groupId>org.mybatis.spring.boot</groupId>
             	<artifactId>mybatis-spring-boot-starter</artifactId>
             	<version>1.3.1</version>
             </dependency>
    	</dependencies>
    
    	<build>
    		<plugins>
    			<plugin>
    				<groupId>org.springframework.boot</groupId>
    				<artifactId>spring-boot-maven-plugin</artifactId>
    			</plugin>
    		</plugins>
    	</build>
    
    
    </project>

    2、项目结构

    3、application.yml

    server:
      port: 8080
      context-path: /
      
    helloWorld: Hi,SpringBoot!  
    
    spring:
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/db_book
        username: root
        password: 123456
      jpa:
        hibernate:
          ddl-auto: update
          show-sql: true
          
    mybatis: 
      mapperLocations: classpath:mapper/*.xml
      typeAliasesPackage: com.java.entity 


    注意:是yml文件,不是xml文件!

    4、mybatis基础配置

    /**
     * MyBatis基础配置
     *
     * @author liuzh
     * @since 2015-12-19 10:11
     */
    @Configuration
    @EnableTransactionManagement
    public class MyBatisConfig implements TransactionManagementConfigurer {
    
        @Autowired
        DataSource dataSource;
    
        @Bean(name = "sqlSessionFactory")
        public SqlSessionFactory sqlSessionFactoryBean() {
            SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
            bean.setDataSource(dataSource);
            bean.setTypeAliasesPackage("com.java.entity");
    
            //分页插件
           // ParserHelper pageHelper = new ParserHelper();
            Properties properties = new Properties();
            properties.setProperty("reasonable", "true");
            properties.setProperty("supportMethodsArguments", "true");
            properties.setProperty("returnPageInfo", "check");
            properties.setProperty("params", "count=countSql");
         
            //添加XML目录
            ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
            try {
                bean.setMapperLocations(resolver.getResources("classpath:mapper/*.xml"));
                return bean.getObject();
            } catch (Exception e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
    
        @Bean
        public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
            return new SqlSessionTemplate(sqlSessionFactory);
        }
    
        @Bean
        @Override
        public PlatformTransactionManager annotationDrivenTransactionManager() {
            return new DataSourceTransactionManager(dataSource);
        }
    }


    5、mybaits接口扫描

    /**
     * MyBatis扫描接口
     * 
     * @author liuzh
     * @since 2015-12-19 14:46
     */
    //TODO 注意,由于MapperScannerConfigurer执行的比较早,所以必须有下面的注解
    @Configuration
    @AutoConfigureAfter(MyBatisConfig.class)
    public class MyBatisMapperScannerConfig {
    
        @Bean
        public MapperScannerConfigurer mapperScannerConfigurer() {
            MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
            mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
            mapperScannerConfigurer.setBasePackage("com.java.mapper");
            return mapperScannerConfigurer;
        }
    
    }

    6、SpringBoot Application启动

    @SpringBootApplication
    @MapperScan(basePackages = "com.java.dao")
    public class HelloWorldSpringBootApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(HelloWorldSpringBootApplication.class, args);
    	}
    }

    7、Controller层

    @RestController
    @RequestMapping("/book")
    public class BookController {
    
    	@Value("${helloWorld}")
    	private String hello;
    	
    	@Resource
    	private BookDao bookDao;
    	
    	@RequestMapping("/helloWorld")
    	public String say() {
    		System.out.println(hello);
    		return "Hello SpringBoot";
    	}
    
    	
    	/**
    	 * 查找所有
    	 * @return
    	 */
    	@RequestMapping("/findAllList")
    	public ModelAndView findAllList() {
    		ModelAndView  mav = new ModelAndView("bookList");
    		List<Book> bookList = bookDao.findAll();
    		mav.addObject("bookList", bookList);
    		return mav;
    	}
    	
    }

    8、Dao层

    public interface BookDao {
    	
    	public List<Book> findAll();
    
    }

    9、mapper

    <mapper namespace="com.java.dao.BookDao">
    	
    	<select id="findAll" resultType="Book">
    		SELECT * FROM t_book
    	</select>
    	
    </mapper> 


    10、Thymeleaf模板引擎

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>图书管理</title>
    </head>
    <body>
    <table>
    	<tr>
    		<th>操作</th>
    		<th>编号</th>
    		<th>图书名称</th>
    		<th>图书作者</th>
    	</tr>
    	<#list bookList as book>
    	<tr>
    		<td></td>
    		<td>${book.id}</td>
    		<td>${book.name}</td>
    		<td>${book.author}</td>
    	</tr>
    	</#list>
    </table>
    
    </body>
    </html>

    11、数据库表结构

    CREATE TABLE `t_book` (
      `id` varchar(255) NOT NULL,
      `name` varchar(100) DEFAULT NULL,
      `author` varchar(50) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    启动HelloWorldSpringBootApplication,请求http://localhost:8080/book/findAllList即可

    12、效果

    2018.11.13更新

    本文成文与2017.11.06,一年之后,SpringBoot推出了2.0,MySQL数据库推出了8.0。如果使用SpringBoot2.0 + MyBatis + MySQL8.0,可参考https://blog.csdn.net/ryelqy/article/details/84030884解决兼容问题。

    Reference:

    [1] isea533, Spring Boot 集成MyBatis, http://blog.csdn.net/isea533/article/details/50359390
    [2] 编程点滴, Spring Boot 整合 MyBatis, http://www.cnblogs.com/powercto/p/6717874.html

  • 相关阅读:
    ios添加pre和post build action
    Highcharts将数据以图表的形式展现
    【deep learning学习笔记】注释yusugomori的LR代码 --- 模型测试
    九乘九口诀算法
    JMS学习的个人理解笔记
    php与文件操作
    java 泛型
    约定
    写给自己,毕业三年,薪水涨了12倍,你信吗
    好技术领导和差技术领导区别在哪里--转
  • 原文地址:https://www.cnblogs.com/ryelqy/p/10104114.html
Copyright © 2011-2022 走看看