Spring Boot學習02
阿新 • • 發佈:2020-09-14
本文在上一篇文章的基礎上,繼續完成Mybatis的“增、刪、改”的操作。
修改3.3的Mybatis對映檔案,新增三個新的sql語句:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 3 <!-- namespace 所對應的是一個介面的全限定名--> 4 <mapper namespace="com.example.demo.mapper.IUserMapper"> 5 <select id="getUserById" resultType="com.example.demo.model.Users"> 6 SELECT id,last_name,gender,email FROM tbl_employee WHERE id = #{id} 7 </select> 8 <update id="updateUser"> 9 UPDATE tbl_employee set last_name=#{last_name},gender=#{gender},email=#{email}10 where id=#{id} 11 </update> 12 13 <delete id="delUser"> 14 DELETE from tbl_employee where id=#{id} 15 </delete> 16 17 <insert id="addUser"> 18 INSERT into tbl_employee values(#{id},#{last_name},#{gender},#{email}) 19 </insert> 20 </mapper>
修改3.4節的介面檔案,增加三個方法:
1 package com.example.demo.mapper; 2 3 import com.example.demo.model.Users; 4 import org.springframework.stereotype.Component; 5 6 @Component 7 public interface IUserMapper { 8 //查詢 9 public Users getUserById(Integer id); 10 11 //更新 12 public boolean updateUser(Users user); 13 14 //刪除 15 public boolean delUser(Integer id); 16 17 //新增 18 public boolean addUser(Users user); 19 }
修改第4節的Mybatis介面檔案,增加45、75、105行的三個方法,對應對映檔案中的更新、刪除以及新增操作:
1 package com.example.demo.service; 2 import com.example.demo.mapper.IUserMapper; 3 import org.apache.ibatis.io.Resources; 4 import org.apache.ibatis.session.SqlSession; 5 import org.apache.ibatis.session.SqlSessionFactory; 6 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 7 import org.springframework.stereotype.Service; 8 import java.io.IOException; 9 import java.io.InputStream; 10 @Service 11 public class Users { 12 13 public com.example.demo.model.Users getUserById(Integer id) throws IOException { 14 15 // 讀取mybatis-config.xml檔案 16 InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); 17 18 // 初始化mybatis,建立SqlSessionFactory類的例項 19 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 20 21 // 建立Session例項 22 SqlSession session = sqlSessionFactory.openSession(); 23 24 // 操作資料庫方法一:獲得xml對映檔案中定義的操作語句 25 // com.example.demo.model.Users s = session.selectOne("com.example.demo.mapper.IUserMapper.getUserById", 1); 26 // 列印Student物件 27 // System.out.println(s); 28 29 // 操作資料庫方法二:獲得mapper介面的代理物件 30 IUserMapper sm = session.getMapper(IUserMapper.class); 31 // 直接呼叫介面的方法,查詢id為1的Student資料 32 com.example.demo.model.Users s2 = sm.getUserById(1); 33 // 列印Peson物件 34 // System.out.println(s2); 35 36 // 提交事務 37 session.commit(); 38 // 關閉Session 39 session.close(); 40 41 return s2; 42 //return userMapper.getUserById(id); 43 } 44 45 public boolean updateUser(com.example.demo.model.Users user) throws IOException { 46 // 讀取mybatis-config.xml檔案 47 InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); 48 49 // 初始化mybatis,建立SqlSessionFactory類的例項 50 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 51 52 // 建立Session例項 53 SqlSession session = sqlSessionFactory.openSession(); 54 55 // 操作資料庫方法一:獲得xml對映檔案中定義的操作語句 56 // com.example.demo.model.Users s = session.selectOne("com.example.demo.mapper.IUserMapper.getUserById", 1); 57 // 列印Student物件 58 // System.out.println(s); 59 60 // 操作資料庫方法二:獲得mapper介面的代理物件 61 IUserMapper sm = session.getMapper(IUserMapper.class); 62 // 直接呼叫介面的方法,查詢id為1的Student資料 63 boolean b = sm.updateUser(user); 64 // 列印Peson物件 65 // System.out.println(s2); 66 67 // 提交事務 68 session.commit(); 69 // 關閉Session 70 session.close(); 71 72 return b; 73 } 74 75 public boolean delUser(Integer id) throws IOException { 76 // 讀取mybatis-config.xml檔案 77 InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); 78 79 // 初始化mybatis,建立SqlSessionFactory類的例項 80 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 81 82 // 建立Session例項 83 SqlSession session = sqlSessionFactory.openSession(); 84 85 // 操作資料庫方法一:獲得xml對映檔案中定義的操作語句 86 // com.example.demo.model.Users s = session.selectOne("com.example.demo.mapper.IUserMapper.getUserById", 1); 87 // 列印Student物件 88 // System.out.println(s); 89 90 // 操作資料庫方法二:獲得mapper介面的代理物件 91 IUserMapper sm = session.getMapper(IUserMapper.class); 92 // 直接呼叫介面的方法,查詢id為1的Student資料 93 boolean b = sm.delUser(1); 94 // 列印Peson物件 95 // System.out.println(s2); 96 97 // 提交事務 98 session.commit(); 99 // 關閉Session 100 session.close(); 101 102 return b; 103 } 104 105 public boolean addUser(com.example.demo.model.Users user) throws IOException { 106 // 讀取mybatis-config.xml檔案 107 InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); 108 109 // 初始化mybatis,建立SqlSessionFactory類的例項 110 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 111 112 // 建立Session例項 113 SqlSession session = sqlSessionFactory.openSession(); 114 115 // 操作資料庫方法一:獲得xml對映檔案中定義的操作語句 116 // com.example.demo.model.Users s = session.selectOne("com.example.demo.mapper.IUserMapper.getUserById", 1); 117 // 列印Student物件 118 // System.out.println(s); 119 120 // 操作資料庫方法二:獲得mapper介面的代理物件 121 IUserMapper sm = session.getMapper(IUserMapper.class); 122 // 直接呼叫介面的方法,查詢id為1的Student資料 123 boolean b = sm.addUser(user); 124 // 列印Peson物件 125 // System.out.println(s2); 126 127 // 提交事務 128 session.commit(); 129 // 關閉Session 130 session.close(); 131 132 return b; 133 } 134 }
修改第5節的Controller中的內容,增加三個Action:
1 package com.example.demo.controller; 2 3 import com.example.demo.model.Users; 4 import org.springframework.beans.factory.annotation.Autowired; 5 import org.springframework.web.bind.annotation.PathVariable; 6 import org.springframework.web.bind.annotation.RequestMapping; 7 import org.springframework.web.bind.annotation.RestController; 8 9 import java.io.IOException; 10 11 @RestController 12 public class UserController { 13 14 @Autowired 15 com.example.demo.service.Users userService; 16 17 @RequestMapping("/user/{id}") 18 public String getUserById(@PathVariable Integer id) throws IOException { 19 20 com.example.demo.model.Users users = userService.getUserById(id); 21 return users.getLast_name(); 22 } 23 24 @RequestMapping("/updateuser") 25 public String updateUser() throws IOException { 26 Users user = new com.example.demo.model.Users(1,"yangasen",1,"[email protected]"); 27 boolean b = userService.updateUser(user); 28 return b + ""; 29 } 30 31 @RequestMapping("/deluser/{id}") 32 public String delUser(@PathVariable Integer id) throws IOException { 33 boolean b = userService.delUser(id); 34 return b + ""; 35 } 36 37 @RequestMapping("/newuser") 38 public String newUser() throws IOException { 39 Users user = new com.example.demo.model.Users(1,"yangasen",1,"[email protected]"); 40 boolean b = userService.addUser(user); 41 return b + ""; 42 } 43 }
測試:
更新操作:使用[http://localhost:8080/updateuser]
刪除操作:使用[http://localhost:8080/deluser/1]
新增操作:使用[http://localhost:8080/newuser]
Spring Boot + MyBatis連線MySQL資料庫的“增刪改查”基本操作,已經完成。