Spring入门案例之JDBC(五)
Spring连接数据库的实现增删改查
数据库连接JDBC
JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯JavaAPI编写数据库应用程序,并且可跨平台运行,并且不受数据库供应商的限制。
JDBC连接数据库的流程及其原理如下:
(1)在开发环境中加载指定数据库的驱动程序。不如你使用的是MySQL,那么需要去下载MySQL支持JDBC的驱动程序(mysql-connector-java-5.1.18-bin.jar)。
(2)在Java程序中加载驱动程序。在Java程序中,可以通过“Class.forName("指定数据库的驱动程序")”的方式来加载添加到开发环境中的驱动程序,例如加载MySQL的数据驱动程序的代码为Class.forName("com.mysql.jdbc.Driver")。
(3)创建数据连接对象。通过DriverManager类创建数据库连接对象Connection。DriverManager类作用于Java程序和JDBC驱动程序之间,用于检查所加载的驱动程序是否可以建立连接,然后通过它的getConnection方法根据数据库的URL、用户名和密码,创建一个JDBC Connection对象,例如:Connection connection = DriverManager.getConnection("连接数据库的URL","用户名","密码")。其中URL = 协议名 + IP地址(域名)+端口+数据库名称;用户名和密码是指登录数据库所使用的用户名和密码。
(4)创建Statement对象。Statement类的主要是用于执行静态SQL语句并返回它所生成结果的对象。通过Connection对象的createStatement()方法可以创建一个Statement对象。例如:Statement statement = connection.createStatement()。
(5)调用Statement对象的相关方法执行相对应的SQL语句。通过execuUpdate方法来对数据更新,包括插入和删除等操作;通过调用Statement对象的executeQuery方法进行数据的查询,而查询的结果会得到ResultSet对象,ResultSet表示执行查询数据库返回的数据的集合,ResultSet对象具有可以指向当前数据行的指针。通过该对象的next方法,使得指针指向下一行,然后将数据以列号或者字段名取出,如果next方法返回null,则表示下一行中没有数据存在。
(6)关闭数据库连接。使用完数据库或者不需要访问数据库时,通过Connection的close方法及时关闭数据库连接。
Spring连接数据库程序实现
Spring中的JDBC连接与直接使用JDBC去连接还是有所差别的,Spring对JDBC做了大量封装,消除了冗余代码,使得开发量大大减少。下面举个例子简单认识Spring中的JDBC操作。
需要的jar包:
目录结构:
一:创建表结构:
SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `age` int(100) NULL DEFAULT NULL, `birthday` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `tall` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of user -- ---------------------------- INSERT INTO `user` VALUES (1, '张三', 18, '2000-11-12', '180'); INSERT INTO `user` VALUES (2, '李四', 19, '1998-05-23', '178'); INSERT INTO `user` VALUES (3, '王五', 20, '1997-09-03', '189'); INSERT INTO `user` VALUES (4, 'Tom', 21, '1996-01-21', '176'); INSERT INTO `user` VALUES (5, 'Jike', 17, '2001-01-23', '173'); SET FOREIGN_KEY_CHECKS = 1;
Dao层:
package demo10.dao; import demo10.pojo.User; /** * @Author * @Date 2020/7/2 15:24 * @Version 1.0 */ public interface UserDao { /* * 添加 * */ boolean addUser(User user); /* * 删除 * */ boolean deleteUser(Integer id); /* * 修改 * */ boolean updateUser(User user); /* * 查询 * */ User findUserById(Integer id); }
Impl:
package demo10.dao.impl; import demo10.dao.UserDao; import demo10.pojo.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; /** * @Author * @Date 2020/7/2 15:35 * @Version 1.0 */ public class UserDaoImpl implements UserDao { @Autowired private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } @Override public boolean addUser(User user) { boolean flag = false; String addSql = "insert into user values(?,?,?,?,?)"; int row = jdbcTemplate.update(addSql,user.getId(),user.getName(),user.getAge(),user.getBirthday(),user.getTall()); if(row > 0){ flag = true; } return flag; } @Override public boolean deleteUser(Integer id) { boolean flag = false; String deleteSql = "delete from user where id = ?"; int row = jdbcTemplate.update(deleteSql,id); if(row > 0){ flag = true; } return flag; } @Override public boolean updateUser(User user) { boolean flag = false; String updateSql = "update user set name = ?,age = ?,birthday = ? ,tall =? where id = ?"; int row = jdbcTemplate.update(updateSql,user.getName(),user.getAge(),user.getBirthday(),user.getTall(),user.getId()); if(row > 0){ flag = true; } return flag; } @Override public User findUserById(Integer id) { User user = new User(); // String findAllSql="select * from user where id=?"; return user; } }
Pojo:
package demo10.pojo; /** * @Author * @Date 2020/7/2 15:21 * @Version 1.0 */ public class User { private Integer id; private String name; private Integer age; private String birthday; private String tall; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } public String getTall() { return tall; } public void setTall(String tall) { this.tall = tall; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + ", birthday='" + birthday + '\'' + ", tall='" + tall + '\'' + '}'; } }
Service:
package demo10.service; import demo10.pojo.User; import java.util.List; /** * @Author * @Date 2020/7/2 15:41 * @Version 1.0 */ public interface UserService { /* * 添加 * */ boolean addUser(User user); /* * 删除 * */ boolean deleteUser(Integer id); /* * 修改 * */ boolean updateUser(User user); /* * 查询 * */ User findUserById(Integer id); }
ServiceImpl:
package demo10.service.impl; import demo10.dao.UserDao; import demo10.pojo.User; import demo10.service.UserService; import org.springframework.beans.factory.annotation.Autowired; /** * @Author * @Date 2020/7/2 15:42 * @Version 1.0 */ public class UserServiceImpl implements UserService { /* * Spring自动注入 * */ @Autowired private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } @Override public boolean addUser(User user) { return userDao.addUser(user); } @Override public boolean deleteUser(Integer id) { return userDao.deleteUser(id); } @Override public boolean updateUser(User user) { return userDao.updateUser(user); } @Override public User findUserById(Integer id) { return userDao.findUserById(id); } }
junit:
package demo10.junit; import demo10.pojo.User; import demo10.service.UserService; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * @Author * @Date 2020/7/2 15:56 * @Version 1.0 */ public class UserTest { private ApplicationContext ac; User user = new User(); /** * 加载配置文件 */ @Before public void into(){ ac = new ClassPathXmlApplicationContext("jdbc.xml"); } @Test public void userAddTest(){ user.setId(7); user.setName("BEYOND"); user.setAge(48); user.setBirthday("1975-06-25"); user.setTall("176"); UserService userService = (UserService)ac.getBean("userService"); boolean boo = userService.addUser(user); System.out.println(boo); } @Test public void userDeletsTest(){ UserService userService=(UserService)ac.getBean("userService"); boolean boo = userService.deleteUser(176); System.out.println(boo); } @Test public void userUpdate(){ User user = new User(); user.setId(7); user.setName("dupo"); user.setAge(23); user.setBirthday("1997-06-13"); user.setTall("178"); UserService userService = (UserService)ac.getBean("userService"); boolean boo = userService.updateUser(user); System.out.println(boo); } @Test public void userFindAll(){ } }
—————————————————————————————————————— 完毕--————————————————————————————————————————————————