Spring学习——JDBC数据库操作

爱被打了一巴掌 2022-05-13 11:34 307阅读 0赞

JDBC Java数据库连接(Java Data Base Connectivity),是一种执行SQL语句的API,提供关系型数据库的统一访问

1、配置beans.xml配置文件
需要jar包 spring-jdbc-release.jar 、mysql-connect-java.jar

  1. <!-- 初始化数据库配置文件 -->
  2. <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  3. <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  4. <property name="url" value="jdbc:mysql://localhost:3306/test"/>
  5. <property name="username" value="root"/>
  6. <property name="password" value=""/>
  7. </bean>
  8. <!-- 注册jdbc核心实现类 -->
  9. <bean id="userJdbcTemplate" class="com.spring.jdbc.demo.UserJdbcTemplate" >
  10. <!-- 注入数据库配置文件 不然在实现时报空指针-->
  11. <property name="dataSource" ref="dataSource" />
  12. </bean>

2、核心实现类

  1. private JdbcTemplate jdbcTemplate;
  2. private DataSource dataSource;
  3. //JdbcTemplate 需要提供jdbc配置数据,否则使用时空指针异常
  4. public void setDataSource(DataSource dataSource) {
  5. this.dataSource = dataSource;
  6. this.jdbcTemplate = new JdbcTemplate(dataSource);
  7. }

3、JdbcTemplate程序执行

  1. 1>JdbcTemplate操作数据库分两种:更新数据库(insert,update,delete)和查询数据库(select)
  2. 2>sql语句,可以使用"id = ?" "id = "+ id 两种
  3. "id = ?" jdbcTemplate执行操作时,需要另赋值;
  4. "id = "+ id 只需要执行SQL便可

4、JdbcTemplate查询操作

  1. /*方法一重写
  2. List<UserPO> list = jdbcTemplate.query(sql,new RowMapper() {
  3. public UserPO mapRow(ResultSet rs, int rownum) throws SQLException {
  4. UserPO user = new UserPO();
  5. user.setId(rs.getInt("id"));
  6. user.setPassword(rs.getString("password"));
  7. user.setUsername(rs.getString("username"));
  8. return user;
  9. }
  10. });
  11. */
  12. /*方法二自定义
  13. List<UserPO> list = jdbcTemplate.query(sql, new UserMapper());
  14. */
  15. package com.spring.jdbc.demo;
  16. import java.sql.ResultSet;
  17. import java.sql.SQLException;
  18. import org.springframework.jdbc.core.RowMapper;
  19. public class UserMapper implements RowMapper<UserPO>{
  20. @Override
  21. public UserPO mapRow(ResultSet rs, int rownum) throws SQLException {
  22. UserPO user = new UserPO();
  23. user.setId(rs.getInt("id"));
  24. user.setUsername(rs.getString("username"));
  25. user.setPassword(rs.getString("password"));
  26. return user;
  27. }
  28. }
  29. /*
  30. 使用list<map>查询后转化为目标对象
  31. */
  32. List<Map<String, Object>> mapList = jdbcTemplate.queryForList(sql);
  33. List<UserPO> list = new ArrayList();
  34. for (int i = 0; i < mapList.size(); i++) {
  35. UserPO user = new UserPO();
  36. user.setId((Integer)mapList.get(i).get("id"));
  37. user.setUsername(mapList.get(i).get("username").toString());
  38. user.setPassword(mapList.get(i).get("password").toString());
  39. list.add(user);
  40. }
  41. return list;

JDBCBeans.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd ">
  6. <!-- 初始化数据库配置文件 -->
  7. <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  8. <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  9. <property name="url" value="jdbc:mysql://localhost:3306/test"/>
  10. <property name="username" value="root"/>
  11. <property name="password" value=""/>
  12. </bean>
  13. <!-- 配置jdbc实现类 -->
  14. <bean id="userJdbcTemplate" class="com.spring.jdbc.demo.UserJdbcTemplate" >
  15. <!-- 注入数据库配置文件 -->
  16. <property name="dataSource" ref="dataSource" />
  17. </bean>
  18. </beans>

UserJdbcTemplate.java 核心操作类

  1. package com.spring.jdbc.demo;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.Map;
  5. import javax.sql.DataSource;
  6. import org.springframework.jdbc.core.JdbcTemplate;
  7. public class UserJdbcTemplate{
  8. private JdbcTemplate jdbcTemplate;
  9. //@Autowired
  10. private DataSource dataSource;
  11. //@ConstructorProperties("dataSource")
  12. public void setDataSource(DataSource dataSource) {
  13. this.dataSource = dataSource;
  14. this.jdbcTemplate = new JdbcTemplate(dataSource);
  15. }
  16. public int createUser(UserPO user) {
  17. //System.out.println(user.getUsername()+";"+user.getPassword());
  18. String sql = "insert into user(username,password) values(?,?)";
  19. int rownum = jdbcTemplate.update(sql,user.getUsername(),user.getPassword());
  20. return rownum;
  21. }
  22. public int deleteUserById(int id) {
  23. String sql = "delete table user where id = ?";
  24. int rownum = jdbcTemplate.update(sql,id);
  25. return rownum;
  26. }
  27. public int updateUserById(UserPO user) {
  28. String sql ="update user set username=?,password=? where id = ?";
  29. int rownum = jdbcTemplate.update(sql, user.getUsername(),user.getPassword(),user.getId());
  30. return rownum;
  31. }
  32. public List<UserPO> getUserListAll() {
  33. String sql = "select * from user";
  34. /*方法一重写
  35. List<UserPO> list = jdbcTemplate.query(sql,new RowMapper() {
  36. public UserPO mapRow(ResultSet rs, int rownum) throws SQLException {
  37. UserPO user = new UserPO();
  38. user.setId(rs.getInt("id"));
  39. user.setPassword(rs.getString("password"));
  40. user.setUsername(rs.getString("username"));
  41. return user;
  42. }
  43. });
  44. */
  45. /*方法二自定义
  46. List<UserPO> list = jdbcTemplate.query(sql, new UserMapper());
  47. */
  48. List<Map<String, Object>> mapList = jdbcTemplate.queryForList(sql);
  49. List<UserPO> list = new ArrayList();
  50. for (int i = 0; i < mapList.size(); i++) {
  51. UserPO user = new UserPO();
  52. user.setId((Integer)mapList.get(i).get("id"));
  53. user.setUsername(mapList.get(i).get("username").toString());
  54. user.setPassword(mapList.get(i).get("password").toString());
  55. list.add(user);
  56. }
  57. return list;
  58. }
  59. public UserPO getUserById(Integer id) {
  60. String sql = "select * from user where id = ?";
  61. //UserPO user = (UserPO) jdbcTemplate.query(sql,new Object[]{id},new UserMapper());
  62. //Object obj =jdbcTemplate.queryForObject(sql, UserPO.class,id);
  63. List<Map<String, Object>> mapList = jdbcTemplate.queryForList(sql,id);
  64. List<UserPO> list = new ArrayList();
  65. for (int i = 0; i < mapList.size(); i++) {
  66. UserPO user = new UserPO();
  67. user.setId((Integer)mapList.get(i).get("id"));
  68. user.setUsername(mapList.get(i).get("username").toString());
  69. user.setPassword(mapList.get(i).get("password").toString());
  70. list.add(user);
  71. }
  72. return list.get(0);
  73. }
  74. }

PO类

  1. package com.spring.jdbc.demo;
  2. public class UserPO {
  3. private int id;
  4. private String username;
  5. private String password;
  6. public int getId() {
  7. return id;
  8. }
  9. public void setId(int id) {
  10. this.id = id;
  11. }
  12. public String getUsername() {
  13. return username;
  14. }
  15. public void setUsername(String username) {
  16. this.username = username;
  17. }
  18. public String getPassword() {
  19. return password;
  20. }
  21. public void setPassword(String password) {
  22. this.password = password;
  23. }
  24. @Override
  25. public String toString() {
  26. return "UserPO [id=" + id + ", username=" + username + ", password=" + password + "]";
  27. }
  28. }

主函数

  1. package com.spring.jdbc.demo;
  2. import java.util.List;
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5. public class SpringMain {
  6. public static void main(String[] args){
  7. ApplicationContext context = new ClassPathXmlApplicationContext("JDBCBeans.xml");
  8. UserJdbcTemplate ujt = (UserJdbcTemplate) context.getBean("userJdbcTemplate");
  9. UserPO user = new UserPO();
  10. user.setUsername("lg");
  11. user.setPassword("12345");
  12. int rownum = ujt.createUser(user);
  13. user.setUsername("zdj");
  14. user.setPassword("12345");
  15. rownum += ujt.createUser(user);
  16. user.setUsername("zh");
  17. user.setPassword("12345");
  18. rownum += ujt.createUser(user);
  19. System.out.println("插入条数:"+rownum);
  20. List<UserPO> list = ujt.getUserListAll();
  21. for(UserPO u : list){
  22. System.out.println(u.toString());
  23. }
  24. System.out.println("----------------");
  25. user.setId(1);
  26. user.setUsername("hm");
  27. rownum = ujt.updateUserById(user);
  28. user = ujt.getUserById(1);
  29. System.out.println(user);
  30. }
  31. }

发表评论

表情:
评论列表 (有 0 条评论,307人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JDBC操作SQLite数据库

    SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能