好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

SpringBoot项目整合mybatis的方法步骤与实例

1. 导入依赖的jar包

springboot项目整合mybatis之前首先要导入依赖的jar包,配置pom.xml文件如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

<?xml version= "1.0" encoding= "utf-8" ?>

<project xmlns= "http://maven.apache.org/pom/4.0.0"

      xmlns:xsi= "http://HdhCmsTestw3.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.u</groupid>

   <artifactid>springboot-mybatis</artifactid>

   <version> 1.0 -snapshot</version>

   <parent>

     <groupid>org.springframework.boot</groupid>

     <artifactid>spring-boot-starter-parent</artifactid>

     <version> 1.3 . 0 .release</version>

   </parent>

   <properties>

     <start- class >com.us.application</start- class >

     <mybatis.version> 3.2 . 7 </mybatis.version>

     <mybatis-spring.version> 1.2 . 2 </mybatis-spring.version>

     <maven测试数据piler.target> 1.8 </maven测试数据piler.target>

     <maven测试数据piler.source> 1.8 </maven测试数据piler.source>

   </properties>

   <dependencies>

     <!--springboot-->

     <dependency>

       <groupid>org.springframework.boot</groupid>

       <artifactid>spring-boot-starter-web</artifactid>

     </dependency>

     <!--db-->

     <dependency>

       <groupid>mysql</groupid>

       <artifactid>mysql-connector-java</artifactid>

       <version> 6.0 . 5 </version>

     </dependency>

     <dependency>

       <groupid>com.mchange</groupid>

       <artifactid>c3p0</artifactid>

       <version> 0.9 . 5.2 </version>

       <exclusions>

         <exclusion>

           <groupid>commons-logging</groupid>

           <artifactid>commons-logging</artifactid>

         </exclusion>

       </exclusions>

     </dependency>

     <!--mybatis-->

     <dependency>

       <groupid>org.springframework</groupid>

       <artifactid>spring-jdbc</artifactid>

     </dependency>

     <dependency>

       <groupid>org.mybatis</groupid>

       <artifactid>mybatis</artifactid>

       <version>${mybatis.version}</version>

     </dependency>

     <dependency>

       <groupid>org.mybatis</groupid>

       <artifactid>mybatis-spring</artifactid>

       <version>${mybatis-spring.version}</version>

     </dependency>

     <!--util-->

     <dependency>

       <groupid>org.apache测试数据mons</groupid>

       <artifactid>commons-lang3</artifactid>

       <version> 3.4 </version>

     </dependency>

   </dependencies>

</project>

2. 配置数据源

pom.xml配置完毕后需要配置数据源了。新建dbconfig类配置数据源,代码如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

import org.springframework.beans.factory.annotation.autowired;

import org.springframework.context.annotation.bean;

import org.springframework.context.annotation.configuration;

import org.springframework.core.env.environment;

import com.alibaba.druid.pool.druiddatasource;

import com.google测试数据mon.base.preconditions;

@configuration

public class dbconfig {

   @autowired

   private environment env;

   @bean (name = "datasource" )

   public druiddatasource datasource() {

     final string url = preconditions.checknotnull(env.getproperty( "ms.db.url" ));

     final string username = preconditions.checknotnull(env.getproperty( "ms.db.username" ));

     final string password = env.getproperty( "ms.db.password" );

     final int maxactive = integer.parseint(env.getproperty( "ms.db.maxactive" , "200" ));

     druiddatasource datasource = new druiddatasource();

     datasource.seturl(url);

     datasource.setusername(username);

     datasource.setpassword(password);

     datasource.setmaxactive(maxactive);

     return datasource;

   }

}

3. 添加数据库连接信息

在配置文件application.properties中添加数据库连接信息如下:

?

1

2

3

4

ms.db.url=jdbc:mysql: //localhost:3306/dev?prepstmtcachesize=517&cacheprepstmts=true&autoreconnect=true&characterencoding=utf-8&allowmultiqueries=true

ms.db.username=root

ms.db.password=admin

ms.db.maxactive= 500

4. 配置mybatis的sqlsessionfactorybean

数据源配置完以后要配置mybatis的sqlsessionfactorybean进行扫描mapper,新建mybatisconfig类代码如下(classpath*:mapper/*.xml为mapper.xml文件路径):

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

import javax.sql.datasource;

import org.mybatis.spring.sqlsessionfactorybean;

import org.springframework.beans.factory.annotation.autowired;

import org.springframework.context.applicationcontext;

import org.springframework.context.annotation.bean;

import org.springframework.context.annotation.configuration;

@configuration

public class mybatisconfig {

   @autowired

   private datasource datasource;

   @bean (name = "sqlsessionfactory" )

   public sqlsessionfactorybean sqlsessionfactory(applicationcontext applicationcontext) throws exception {

     sqlsessionfactorybean sessionfactory = new sqlsessionfactorybean();

     sessionfactory.setdatasource(datasource);

     sessionfactory.setmapperlocations(applicationcontext.getresources( "classpath*:mapper/*.xml" ));

     return sessionfactory;

   }

}

5. 配置mapperscannerconfigurer扫描dao层

然后配置mapperscannerconfigurer扫描dao层,新建类mybatisscannerconfig代码如下(注意与mybatisconfig不要写在一个类里):

?

1

2

3

4

5

6

7

8

9

10

11

12

13

import org.mybatis.spring.mapper.mapperscannerconfigurer;

import org.springframework.context.annotation.bean;

import org.springframework.context.annotation.configuration;

@configuration

public class mybatisscannerconfig {

   @bean

   public mapperscannerconfigurer mapperscannerconfigurer() {

     mapperscannerconfigurer mapperscannerconfigurer = new mapperscannerconfigurer();

     mapperscannerconfigurer.setbasepackage( "com.example.*.dao" );

     mapperscannerconfigurer.setsqlsessionfactorybeanname( "sqlsessionfactory" );

     return mapperscannerconfigurer;

   }

}

6. 开启数据库事务(必须)代码如下

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

import javax.sql.datasource;

import org.springframework.beans.factory.annotation.autowired;

import org.springframework.context.annotation.bean;

import org.springframework.context.annotation.configuration;

import org.springframework.jdbc.datasource.datasourcetransactionmanager;

import org.springframework.transaction.platformtransactionmanager;

import org.springframework.transaction.annotation.transactionmanagementconfigurer;

@configuration

public class transactionconfig implements transactionmanagementconfigurer{

   @autowired

   private datasource datasource;

   @bean (name = "transactionmanager" )

   @override

   public platformtransactionmanager annotationdriventransactionmanager() {

     return new datasourcetransactionmanager(datasource);

   }

}

7. 实战

配置大致就是如此,然后就是新建java bean(省略,文章底部有源码地址)

新建mapper.xml文件(省略,文章底部有源码地址,关于mapper.xml 文件编写的疑问可以看我以前的springmvc+mybatis 系列文章)

新建dao层。代码如下:

?

1

2

3

4

5

6

7

import java.util.list;

import java.util.map;

import com.example.base.model.user;

import com.example.config.mybatisrepository;

public interface userdao {

   public list<user> getlist(map<string,object> map);

}

service层要在实现类上添加@service注解,代码如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

import java.util.map;

import org.springframework.beans.factory.annotation.autowired;

import org.springframework.stereotype.service;

import com.example.base.dao.userdao;

import com.example.base.service.userservice;

@service

public class userserviceimpl implements userservice {

   @autowired

   private userdao userdao;

   public object getlist(map<string, object> map) {

     return userdao.getlist(map);

   }

}

controller层也要加@controller注解代码如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

import javax.servlet.http.httpservletrequest;

import java.util.map;

import org.springframework.beans.factory.annotation.autowired;

import org.springframework.http.httpstatus;

import org.springframework.http.responseentity;

import org.springframework.stereotype.controller;

import org.springframework.web.bind.annotation.requestmapping;

import org.springframework.web.bind.annotation.requestmethod;

import org.springframework.web.bind.annotation.responsebody;

import com.example.base.service.userservice;

import com.example.base.util测试数据monutil;

import com.example.demo.serviceemail;

@controller

@requestmapping (value = "/users" )

public class usercontroller {

   @autowired

   private userservice userservice;

   @autowired

   private serviceemail serviceemail;

   /***

    * api :localhost:8099/users?id=99 localhost:8099/users

    *

    * @param request

    * @return

    */

   @requestmapping (method = requestmethod.get, produces = "application/json;charset=utf-8" )

   @responsebody

   public responseentity<?> list(httpservletrequest request) {

     map<string, object> map = commonutil.getparametermap(request);

     return new responseentity<object>(userservice.getlist(map), httpstatus.ok);

   }

   }

然后在启动入口类中扫描定义的这些配置累(配置包名可却省只写部分包名)如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

import java.util.arrays;

import org.springframework.boot.springapplication;

import org.springframework.boot.autoconfigure.springbootapplication;

import org.springframework.boot.builder.springapplicationbuilder;

import org.springframework.boot.context.web.springbootservletinitializer;

import org.springframework.context.applicationcontext;

import org.springframework.context.annotation测试数据ponentscan;

import org.springframework.scheduling.annotation.enablescheduling;

@componentscan (basepackages = "com.example" )

@springbootapplication

public class application extends springbootservletinitializer{

   @override

   protected springapplicationbuilder configure(springapplicationbuilder application) {

     return application.sources(application. class );

   }

   public static void main(string[] args) throws exception {

     applicationcontext ctx = springapplication.run(application. class , args);

     string[] beannames = ctx.getbeandefinitionnames();

     arrays.sort(beannames);

     for (string beanname : beannames) {

       system.out.println(beanname);

     }

   }

}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

原文链接:https://blog.csdn.net/u012373815/article/details/52050308

查看更多关于SpringBoot项目整合mybatis的方法步骤与实例的详细内容...

  阅读:11次