好得很程序员自学网

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

Spring Boot整合Mybatis并完成CRUD操作的实现示例

mybatis 是一款优秀的持久层框架,被各大互联网公司使用,本文使用spring boot整合mybatis,并完成crud操作。

为什么要使用mybatis?我们需要掌握mybatis吗?

说的官方一点:

mybatis 是一款优秀的持久层框架,它支持定制化 sql、存储过程以及高级映射。mybatis 避免了几乎所有的 jdbc 代码和手动设置参数以及获取结果集。mybatis 可以使用简单的 xml 或注解来配置和映射原生信息,将接口和 java 的 pojos(plain ordinary java object,普通的 java对象)映射成数据库中的记录。

说的功利一点:

据说目前各大互联网公司通常使用mybatis,还不赶快学习一下吗?

怎么使用?

这才是本文的重点。

新建spring boot工程和导入eclipse这些在这里就不啰嗦了,不会的可以查看 只需两步!eclipse+maven快速构建第一个spring boot项目。

1. pom.xml添加依赖

spring boot整合mybatis需要引入 mybatis-spring-boot-starter;我使用的是mysql数据库,需要引入ysql-connector-java。

?

1

2

3

4

5

6

7

8

9

10

11

12

<!-- mysql驱动 -->

     <dependency>

       <groupid>mysql</groupid>

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

     </dependency>

      

     <!-- spring-boot整合mybatis -->

     <dependency>

       <groupid>org.mybatis.spring.boot</groupid>

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

       <version> 1.1 . 1 </version>

     </dependency>

2. application.property配置mybatis和数据源

?

1

2

3

4

5

6

7

8

mybatis.config-location=classpath:mapper/mybatis_config.xml

mybatis.mapper-locations=classpath:mapper/*mapper.xml

mybatis.type-aliases- package =com.shangguan.mybatis.entity

 

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

spring.datasource.url = jdbc:mysql: //localhost:3306/spring_boot?servertimezone=gmt%2b8

spring.datasource.username = root

spring.datasource.password = 123456

例如我的mybatis_config.xml的路径为/mybatis/src/main/resources/mapper/mybatis_config.xml(下面是目录结构图),那么我的mybatis.config-location配置为classpath:mapper/mybatis_config.xml,请注意一定要根据自己项目的目录结构进行配置mybatis。数据库也一样。

mapper包里面是mybatis的映射类。

interceptor包是拦截器,如果还有疑问请参考之前的博文: spring boot配置拦截器及实现跨域访问

3. mybatis全局配置文件

mybatis 的配置文件包含了会深深影响 mybatis 行为的设置(settings)和属性(properties)信息。关于配置文件的详解请看  xml映射配置文件 。

mybatis_config.xml

?

1

2

3

4

5

<?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>

 

</configuration>

4. 实体类user

user使用的和之前使用的一样,没有修改。

user:

?

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

public class user implements serializable {

 

   private static final long serialversionuid = 1l;

   private long id;

   private string username;

   private string password;

 

   public user() {

     super ();

   }

 

   public user(string username, string password) {

     super ();

     this .username = username;

     this .password = password;

   }

 

   public long getid() {

     return id;

   }

 

   public void setid( long id) {

     this .id = id;

   }

 

   public string getusername() {

     return username;

   }

 

   public void setusername(string username) {

     this .username = username;

   }

 

   public string getpassword() {

     return password;

   }

 

   public void setpassword(string password) {

     this .password = password;

   }

 

   @override

   public string tostring() {

     return "username " + this .username + ", pasword " + this .password;

   }

}

5. 添加user的映射文件和映射类

sql 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序):

cache – 给定命名空间的缓存配置。 cache-ref – 其他命名空间缓存配置的引用。 resultmap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。 parametermap – 已废弃!老式风格的参数映射。内联参数是首选,这个元素可能在将来被移除,这里不会记录。 sql – 可被其他语句引用的可重用语句块。 insert – 映射插入语句 update – 映射更新语句 delete – 映射删除语句 select – 映射查询语句

更多信息请参考   xml映射文件  。

增删改查的sql语句在usermapper.xml里面书写,具体的看代码,里面有注释。

有几点需要注意的地方:

①<select id="getall" resulttype="user">,这里的id的名字是自己取的,但是要和usermapper.java里面的名字相同public list<user> getall();

②当sql语句中有多个参数的时候,需要在映射类方法里面加@param的注解,不然会抛出异常说找不到参数。例如:

?

1

2

public void updateuser( @param ( "id" ) long id, @param ( "username" ) string username,

       @param ( "password" ) string password);

③主键自增,需要设置usegeneratedkeys="true" keyproperty="id"

usermapper.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

<?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.shangguan.mybatis.mapper.usermapper" >

    <resultmap id= "baseresultmap" type= "com.shangguan.mybatis.mapper.usermapper" >

     <id column= "id" property= "id" jdbctype= "bigint" />

     <result column= "username" property= "username" jdbctype= "varchar" />

     <result column= "password" property= "password" jdbctype= "varchar" />

   </resultmap>

  

   <!--查询所有-->

   <select id= "getall" resulttype= "user" >

     select * from user

   </select>

  

   <!--保存用户-->

   <insert id= "saveuser" usegeneratedkeys= "true" keyproperty= "id" >

     insert into user(username,password) values(#{username},#{password})

   </insert>

  

   <!--通过id删除用户-->

   <delete id= "deleteuserbyid" >

     delete from user where id =#{id}

   </delete>

  

   <!--更新该用户信息-->

   <update id= "updateuser" >

     update user set username = #{username},password = #{password}

     where id = #{id}

   </update>

  

</mapper>

映射类usermapper.java:

?

1

2

3

4

5

6

7

8

@mapper

public interface usermapper {

   public list<user> getall();

   public void saveuser(user user);

   public void deleteuserbyid( long id);

   public void updateuser( @param ( "id" ) long id, @param ( "username" ) string username,

       @param ( "password" ) string password);

}

6. service层实现

userservice里面有四个方法:增删改查。查询所有的用户,保存用户,通过id删除用户,更新用户信息。

userservice:

?

1

2

3

4

5

6

7

8

public interface userservice {

 

   public list<user> getalluser();

   public void saveuser(user user);

   public void deleteuserbyid( long id);

   public void updateuser( long id, string username, string password);

 

}

userserviceimpl:

?

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

@service

public class userserviceimpl implements userservice {

 

   @autowired

   private usermapper usermapper;

 

   @override

   public list<user> getalluser() {

     list<user> list = usermapper.getall();

     return list;

   }

 

   @override

   public void saveuser(user user) {

     usermapper.saveuser(user);

   }

 

   @override

   public void deleteuserbyid( long id) {

     usermapper.deleteuserbyid(id);

   }

 

   @override

   public void updateuser( long id, string username, string password) {

     usermapper.updateuser(id, username, password);

   }

}

7. controller层实现

usercontroller里面对接口进行封装:

?

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

@restcontroller

@springbootapplication

@requestmapping ( "/mybatis" )

public class usercontroller {

 

   @autowired

   private userservice userservice;

 

   @requestmapping ( "/getalluser" )

   public list<user> getalluser() {

     list<user> list = userservice.getalluser();

     return list;

   }

 

   @requestmapping ( "/saveuser" )

   public void saveuser(user user) {

     userservice.saveuser(user);

   }

 

   @requestmapping ( "/deleteuserbyid" )

   public void deleteuserbyid( long id) {

     userservice.deleteuserbyid(id);

   }

 

   @requestmapping ( "/updateuser" )

   public void updateuser( long id, string username, string password) {

     userservice.updateuser(id, username, password);

   }

}

8. 测试

启动spring boot项目,使用postman进行测试:

① http://localhost:8080/mybatis/getalluser 获取所有的用户信息

 

对比数据库无误:

 

② http://localhost:8080/mybatis/saveuser?username=啊哈&password=123321 添加一个名字为啊哈,密码为123321的用户

添加成功:

③ http://localhost:8080/mybatis/deleteuserbyid?id=6 删除id为6的用户

删除成功:

 

④ http://localhost:8080/mybatis/updateuser?id=7&username=三只松鼠&password=three 设置id为7的用户的用户名和密码

设置成功:

 

总结

许多事情总是看起来简单做起来难,看着网上的spring boot整合教程觉得太简单了,自己动手实践的过程中依然会发现有一些需要注意的细节。

完整代码: github地址

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

原文链接:http://HdhCmsTestcnblogs测试数据/sgh1023/p/10134110.html

查看更多关于Spring Boot整合Mybatis并完成CRUD操作的实现示例的详细内容...

  阅读:16次