zoukankan      html  css  js  c++  java
  • SpringBoot专题1----springboot与mybatis的完美融合

           springboot大家都知道了,搭建一个spring框架只需要秒秒钟。下面给大家介绍一下springboot与mybatis的完美融合:

           首先:创建一个名为springboot-mybatis的maven项目,记住:一定要maven哦,不懂maven的可以自己恶补一下maven知识,这里就不介绍maven了。

       下面给出pom.xml的完整配置:

           

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <project xmlns="http://maven.apache.org/POM/4.0.0"
     3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     5     <modelVersion>4.0.0</modelVersion>
     6 
     7     <groupId>springboot-mybatis</groupId>
     8     <artifactId>springboot-mybatis</artifactId>
     9     <version>1.0.0</version>
    10     <packaging>war</packaging>
    11 
    12     <name>springBoot-mybatis</name>
    13     <description>Spring Boot project</description>
    14 
    15     <parent>
    16         <groupId>org.springframework.boot</groupId>
    17         <artifactId>spring-boot-starter-parent</artifactId>
    18         <version>1.3.2.RELEASE</version>
    19         <relativePath/>
    20     </parent>
    21 
    22     <properties>
    23         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    24         <java.version>1.8</java.version>
    25     </properties>
    26 
    27     <dependencies>
    28 
    29         <dependency>
    30             <groupId>org.springframework.boot</groupId>
    31             <artifactId>spring-boot-starter</artifactId>
    32         </dependency>
    33 
    34         <dependency>
    35             <groupId>org.springframework.boot</groupId>
    36             <artifactId>spring-boot-starter-test</artifactId>
    37             <scope>test</scope>
    38         </dependency>
    39 
    40         <dependency>
    41             <groupId>org.mybatis.spring.boot</groupId>
    42             <artifactId>mybatis-spring-boot-starter</artifactId>
    43             <version>1.1.1</version>
    44         </dependency>
    45 
    46         <dependency>
    47             <groupId>org.springframework.boot</groupId>
    48             <artifactId>spring-boot-starter-web</artifactId>
    49         </dependency>
    50 
    51         <dependency>
    52             <groupId>mysql</groupId>
    53             <artifactId>mysql-connector-java</artifactId>
    54             <version>5.1.21</version>
    55         </dependency>
    56 
    57     </dependencies>
    58 
    59     <build>
    60         <plugins>
    61             <plugin>
    62                 <groupId>org.springframework.boot</groupId>
    63                 <artifactId>spring-boot-maven-plugin</artifactId>
    64             </plugin>
    65             <plugin>
    66                 <groupId>org.apache.maven.plugins</groupId>
    67                 <artifactId>maven-surefire-plugin</artifactId>
    68                 <configuration>
    69                     <skip>true</skip>
    70                 </configuration>
    71             </plugin>
    72         </plugins>
    73     </build>
    74 
    75 </project>

    之后创建一个启动类:

     1 package org.shenlan;
     2 
     3 import org.springframework.boot.SpringApplication;
     4 import org.springframework.boot.autoconfigure.SpringBootApplication;
     5 
     6 /**
     7  * Created by wangwei on 2016/9/2.
     8  */
     9 @SpringBootApplication
    10 public class Application {
    11     public static void main(String[] args){
    12         SpringApplication.run(Application.class,args);
    13     }
    14 }

    这样一个完整的springboot项目就完成了,是不是很简单。

    接下来就可以整理与mybatis的东东了。

    首先,创建配置文件:application.properties

    1 spring.datasource.url=jdbc:mysql://localhost:3306/test
    2 spring.datasource.username=root
    3 spring.datasource.password=root
    4 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    5 
    6 server.port=1111

    这里server.port=1111是定义了改项目的端口,默认的是8080.

    然后,定义一个java的实体类:

     1 package org.shenlan.web;
     2 
     3 /**
     4  * Created by wangwei on 2016/9/2.
     5  */
     6 public class User {
     7     private Integer id;
     8     private String name;
     9     private Integer age;
    10 
    11     public Integer getId() {
    12         return id;
    13     }
    14 
    15     public void setId(Integer id) {
    16         this.id = id;
    17     }
    18 
    19     public String getName() {
    20         return name;
    21     }
    22 
    23     public void setName(String name) {
    24         this.name = name;
    25     }
    26 
    27     public Integer getAge() {
    28         return age;
    29     }
    30 
    31     public void setAge(Integer age) {
    32         this.age = age;
    33     }
    34 }

    这里实体类的字段要和数据库的字段对应起来,不然就要取别名了。

    之后,定义一个dao的接口:

     1 package org.shenlan.web;
     2 
     3 import org.apache.ibatis.annotations.Mapper;
     4 import org.apache.ibatis.annotations.Param;
     5 import org.apache.ibatis.annotations.Select;
     6 
     7 /**
     8  * Created by Administrator on 2016/9/2.
     9  */
    10 @Mapper
    11 public interface UserMapper {
    12 
    13     @Select("select * from user where name = #{name}")
    14     User findUserByName(@Param("name")String name);
    15 }

    @Mapper就是我们要与mybatis融合关键的一步,只要一个注解就搞定了。

    哈哈哈,最后我们就来写一个测试类吧:

     1 package org.shenlan.web;
     2 
     3 import org.springframework.beans.factory.annotation.Autowired;
     4 import org.springframework.web.bind.annotation.RequestMapping;
     5 import org.springframework.web.bind.annotation.ResponseBody;
     6 import org.springframework.web.bind.annotation.RestController;
     7 
     8 /**
     9  * Created by wangwei on 2016/9/2.
    10  */
    11 @RestController
    12 @RequestMapping({"/home"})
    13 public class UserController {
    14     @Autowired
    15     UserMapper userMapper;
    16 
    17     @RequestMapping(value = "/user")
    18     @ResponseBody
    19     public String user(){
    20         User user = userMapper.findUserByName("王伟");
    21         return user.getName()+"-----"+user.getAge();
    22     }
    23 }

         @RestController是对应的restful风格的控制器,@RequestMapping里面可以对应一个数组哦

         打开浏览器,输入:http://localhost:1111/home/user

         效果如下:

    上面的对于简单的sql确实是非常的容易搞定,但是对于复杂的sql还是要到专门的地方去写啊!

    接下来就为大家说说如何配置mapper.xml.

    mybatis:
      type-aliases-package: com.wangsu_bi.web.entity
      config-location: classpath:mybatis/mybatis-config.xml
      mapper-locations: classpath:mybatis/mapper/*.xml

    以上是在application.yml中配置的mybatis属性:

    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">
    <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>
    </configuration>

    这样就ok啦。就可以在mapper.xml中疯狂的写我们所需要的SQL啦!

    本博客涉及的项目的地址:https://github.com/shenlanzhizunjustwangwei/springBoot

         希望大家喜欢。

    作者:深蓝至尊 本篇文章是博主原创作品,严禁没有备注的转载,COPY.
  • 相关阅读:
    ThinkPHP第二十天(getField用法、常用管理员表结构、树形结构前小图标CSS)
    ThinkPHP第十九天(Ueditor高亮插件、扩展函数载入load、静态缓存)
    Bootstrap第一天
    ThinkPHP第十八天(Widget类的使用,连贯操作where IN用法,缓存S函数使用)
    ThinkPHP第十七天(隐藏index.php和简短路径配置)
    ThinkPHP第十六天(redirect、join、视图模型)
    ThinkPHP第十五天(setField、setInc、setDec、关联模型)
    ThinkPHP第十四天(显示TRACE界面配置,关联模型详解定义)
    ThinkPHP第十三天(CONF_PATH、APP_PATH,UEditor用法)
    ThinkPHP常量参考
  • 原文地址:https://www.cnblogs.com/shenlanzhizun/p/5832976.html
Copyright © 2011-2022 走看看