好得很程序员自学网

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

SpringBoot中利用MyBatis进行数据操作的示例

本例所用环境:

springboot mysql mybatis jdk1.8 maven

首先我们先创建一个springboot 项目。

数据库连接配置

?

1

2

3

4

5

##数据库连接配置(部署到哪台,对应的ip需修改)

spring.datasource.url=jdbc:mysql: //127.0.0.1:3306/mybatis?connecttimeout=1000&usessl=false&useunicode=true&characterencoding=utf-8

spring.datasource.username=root

spring.datasource.password=root

spring.datasource.driver=com.mysql.jdbc.driver

数据库中的数据

环境配好之后,下面分别介绍一下通过注解或者通过xml映射的形式这两种方法来使用mybatis。

通过xml映射的形式

测试bean

?

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

package com.example.demo.model;

 

public class user {

  private int id;

  private string name;

  private string sex;

  private int age;

 

  public user() {

  }

 

  public user(string name, string sex, int age) {

   this .name = name;

   this .sex = sex;

   this .age = age;

  }

 

  public user( int id, string name, string sex, int age) {

   this .id = id;

   this .name = name;

   this .sex = sex;

   this .age = age;

  }

 

  public int getid() {

   return id;

  }

 

  public void setid( int id) {

   this .id = id;

  }

 

  public string getname() {

   return name;

  }

 

  public void setname(string name) {

   this .name = name;

  }

 

  public string getsex() {

   return sex;

  }

 

  public void setsex(string sex) {

   this .sex = sex;

  }

 

  public int getage() {

   return age;

  }

 

  public void setage( int age) {

   this .age = age;

  }

}

xml形式的具体操作

将mapper定义为接口,只定义方法。具体的实现在同名的xml文件中。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

package com.example.demo.mapper;

 

import com.example.demo.model.user;

import org.apache.ibatis.annotations.mapper;

import org.apache.ibatis.annotations.param;

 

@mapper

public interface usermapper {

  user getbyname( @param ( "name" ) string name);

 

  boolean insert(user user);

 

  boolean update( @param ( "name" ) string name, @param ( "sex" ) string sex, @param ( "age" ) int age);

 

  void delete( @param ( "name" ) string name);

}

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<?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.example.demo.mapper.usermapper" >

  <select id= "getbyname" resulttype= "com.example.demo.model.user" parametertype= "java.lang.string" >

   select * from tb_user where name = #{name}

  </select>

 

  <insert id= "insert" parametertype= "com.example.demo.model.user" usegeneratedkeys= "true" >

   insert into tb_user(name, sex, age) values(#{name}, #{sex}, #{age})

  </insert>

 

  <update id= "update" parametertype= "com.example.demo.model.user" >

   update tb_user set sex=#{sex}, age=#{age} where name=#{name}

  </update>

 

  <delete id= "delete" parametertype= "java.lang.string" >

   delete from tb_user where name = #{name}

  </delete>

</mapper>

两个文件通过mapper.xml文件中的 namespace 形成映射。

一般情况下,我们用到的资源文件(各种xml,properites,xsd文件等)都放在src/main/resources下面(springboot回到对应的位置加载文件),利用maven打包时,maven能把这些资源文件打包到相应的jar或者war里。但是,有的时候我们习惯把它和mapper.java放一起,都在src/main/java下面,这样利用maven打包时,就需要修改pom.xml文件,来把mapper.xml文件一起打包进jar或者war里了,否则,这些文件不会被打包的。(maven认为src/main/java只是java的源代码路径)。

所以说,如果要将mapper.java和mapper.xml文件放在同一个位置,就需要在pom文件中指定xml文件的加载位置。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<build>

<resources>

  <!-- maven项目中src源代码下的xml等资源文件编译进classes文件夹,

   注意:如果没有这个,它会自动搜索resources下是否有mapper.xml文件,

   如果没有就会报org.apache.ibatis.binding.bindingexception: invalid bound statement (not found): ... -->

  <resource>

  <directory>src/main/java</directory>

  <includes>

   <include>**/*.xml</include>

  </includes>

  <filtering> true </filtering>

  </resource>

 

  <!--将resources目录下的配置文件编译进classes文件 -->

  <resource>

   <directory>src/main/resources</directory>

   <filtering> true </filtering>

  </resource>

</resources>

</build>

如果mapper.java和mapper.xml文件是分开放置的,则不需要以上配置。

service服务

?

1

2

3

4

5

6

7

8

9

10

11

12

13

package com.example.demo.service;

 

import com.example.demo.model.user;

 

public interface userservice {

  user getuserbyname(string name);

 

  boolean adduser(user user);

 

  boolean updateuser(string name, string sex, int age);

 

  void deleteuser(string name);

}

service服务的实现类

?

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

package com.example.demo.service.impl;

 

import com.example.demo.mapper.usermapper;

import com.example.demo.model.user;

import com.example.demo.service.userservice;

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

import org.springframework.stereotype.service;

 

@service

public class userserviceimpl implements userservice{

  @autowired

  usermapper usermapper;

 

  @override

  public user getuserbyname(string name) {

   user user = usermapper.getbyname(name);

   if ( null != user){

    return user;

   }

   return null ;

  }

 

  @override

  public boolean adduser(user user) {

   return usermapper.insert(user);

  }

 

  @override

  public boolean updateuser(string name, string sex, int age) {

   return usermapper.update(name, sex, age);

  }

 

  @override

  public void deleteuser(string name) {

   usermapper.delete(name);

  }

}

测试接口

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

package com.example.demo.controller;

 

import com.example.demo.model.user;

import com.example.demo.service.userservice;

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

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

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

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

 

@restcontroller

public class usercontroller {

  @autowired

  userservice userservice;

 

  @requestmapping (value = "/index" , method = requestmethod.get)

  public string index(){

   user user = userservice.getuserbyname( "gyl" );

   return user.getname()+ "--" +user.getsex()+ "--" +user.getage();

  }

}

如果一切顺利,即将输入localhost:8080/index 你将看到如下内容

通过注解的方式

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

package com.example.demo.mapper;

 

import com.example.demo.model.user;

import org.apache.ibatis.annotations.*;

 

@mapper

public interface usermapper {

 

  @select ( "select * from tb_user where name = #{name}" )

  user getbyname( @param ( "name" ) string name);

 

  @insert ( "insert into tb_user(name, sex, age) values(#{name}, #{sex}, #{age})" )

  boolean insert(user user);

 

  @update ( "update tb_user set sex=#{sex}, age=#{age} where name=#{name}" )

  boolean update( @param ( "name" ) string name, @param ( "sex" ) string sex, @param ( "age" ) int age);

 

  @delete ( "delete from tb_user where name = #{name}" )

  void delete( @param ( "name" ) string name);

}

如果一切顺利,即将输入localhost:8080/index 你将看到如下内容

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

原文链接:https://segmentfault测试数据/a/1190000016476431

查看更多关于SpringBoot中利用MyBatis进行数据操作的示例的详细内容...

  阅读:18次