本文在上一篇文章的基础上,继续完成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,"yangasen@hotmial.com"); 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,"yangasen@hotmial.com"); 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数据库的“增删改查”基本操作,已经完成。