栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring 如何整合 JDBC的详细讲解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring 如何整合 JDBC的详细讲解

文章目录

Spring 整合 JDBC一、搭建环境

1、搭建项目2、添加jar包3、创建配置文件4、 创建实体类5、 创建持久层6、 创建业务层 二、配置 Spring

1、 配置解析 properties 文件

1.1、 添加 db.properties 文件1.2、 修改 Spring 配置文件 2、 配置数据源

2.1、 什么是数据源?2.2、 添加数据源配置 3、配置 JdbcTemplate4、 配置其他 Bean 对象的依赖注入

4.1、 配置持久层依赖注入

修改接口实现类修改 Spring 配置文件 4.2、 配置业务层依赖注入 三、JdbcTemplate 的使用

1、执行单条 DML 语句

1.1、 修改持久层1.2、 修改业务层1.3、 创建测试类 2、 批量执行 DML 语句

2.1、 修改持久层2.2、 修改业务层2.3、 创建测试类 3、查询返回单条数据

3.1、 修改持久层3.2、修改业务层3.3、 创建测试类 4、 查询返回多条数据

4.1、 修改持久层4.2、 修改业务层4.3、 创建测试类 5、 查询多条数据简化版

5.1、 修改持久层5.2、 修改业务层5.3、 创建测试类 四、JdbcDaoSupport 的使用

1、 创建持久层2、 修改配置文件


Spring 整合 JDBC

Spring 为了提供对 Jdbc 的支持,在 Jdbc API 的基础上封装了一套实现用于简化 JDBC 操作的模板。
JDBC 模板的设计目的是为不同类型的 JDBC 操作提供模板方法,每个模板方法都能控制整个过程,通过这种方式, 可以在尽可能保留灵活性的情况下, 将数据库存取的工作量降到最低。

一、搭建环境 1、搭建项目

2、添加jar包

3、创建配置文件


        
4、 创建实体类
public class Users {
    private int userid;
    private String username;
    private String usersex;

    public int getUserid() {
        return userid;
    }

    public void setUserid(int userid) {
        this.userid = userid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getUsersex() {
        return usersex;
    }

    public void setUsersex(String usersex) {
        this.usersex = usersex;
    }

    @Override
    public String toString() {
        return "Users{" +
                "userid=" + userid +
                ", username='" + username + ''' +
                ", usersex='" + usersex + ''' +
                '}';
    }
}

5、 创建持久层
public interface UsersDao {
}

public class UsersDaoImpl implements UsersDao {
}

6、 创建业务层
public interface UsersService {
}

public class UsersServiceImpl implements UsersService {
    private UsersDao usersDao;

    public UsersDao getUsersDao() {
        return usersDao;
    }

    public void setUsersDao(UsersDao usersDao) {
        this.usersDao = usersDao;
    }
}

二、配置 Spring 1、 配置解析 properties 文件 1.1、 添加 db.properties 文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/bjsxt
jdbc.username=root
jdbc.userword=mysql
1.2、 修改 Spring 配置文件

添加命名空间:

xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd

添加





        
        
2、 配置数据源 2.1、 什么是数据源?

JDBC2.0 提供了 javax.sql.DataSource 接口,在接口中定义获取 Connection 对象的标准。数据源的作用是负责建立与数据库的连接,当在应用程序中访问数据库时不必编写数据库连接代码,直接引用 DataSource 获取操作数据库的 Connection 对象即可。

2.2、 添加数据源配置

        
                
                
                
                
         
3、配置 JdbcTemplate

        
                
        

4、 配置其他 Bean 对象的依赖注入 4.1、 配置持久层依赖注入 修改接口实现类
public class UsersDaoImpl implements UsersDao {
    private JdbcTemplate jdbcTemplate;

    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
}

修改 Spring 配置文件

        
                
        

4.2、 配置业务层依赖注入

        
                
        

三、JdbcTemplate 的使用 1、执行单条 DML 语句

单条的 insert、delete、update。

1.1、 修改持久层
public interface UsersDao {
    int insertUsers(Users users);
}
    //添加用户
    @Override
    public int insertUsers(Users users) {
        String sql = "insert into users values(default,?,?)";
        Object[] params = new Object[]{users.getUsername(),users.getUsersex()};
        return this.jdbcTemplate.update(sql,params);
    }
1.2、 修改业务层
public interface UsersService {
    int addUsers(Users users);
}
    //添加用户
    @Override
    public int addUsers(Users users) {
        return this.usersDao.insertUsers(users);
    }
1.3、 创建测试类
public class AddUsersTest {
    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        UsersService usersService = (UsersService)applicationContext.getBean("usersService");
        Users users = new Users();
        users.setUsername("suibian");
        users.setUsersex("male");
        int i = usersService.addUsers(users);
        System.out.println(i);
    }
}
2、 批量执行 DML 语句 2.1、 修改持久层
    int[] batchInsertUsers(List users);
    //批量添加用户

    @Override
    public int[] batchInsertUsers(List users) {
        String sql = "insert into users values(default,?,?)";
        BatchPreparedStatementSetter setter = new BatchPreparedStatementSetter() {
            @Override
            public void setValues(PreparedStatement preparedStatement, int i) throws SQLException {
                Users temp = users.get(i);
                preparedStatement.setString(1,temp.getUsername());
                preparedStatement.setString(2,temp.getUsersex());
            }

            @Override
            public int getBatchSize() {
                return users.size();
            }
        };
        return this.jdbcTemplate.batchUpdate(sql,setter);
    }
2.2、 修改业务层
    int[] addUsers(List users);
    //批量添加用户

    @Override
    public int[] addUsers(List users) {
        return this.usersDao.batchInsertUsers(users);
    }
2.3、 创建测试类
public class BachAddUsersTest {
    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        UsersService usersService = (UsersService)applicationContext.getBean("usersService");
        Users users = new Users();
        users.setUsername("suibian1");
        users.setUsersex("male1");
        Users users1 = new Users();
        users1.setUsername("suibian2");
        users1.setUsersex("male2");
        List list = new ArrayList<>();
        list.add(users);
        list.add(users1);
        int[] ints= usersService.addUsers(list);
        for (int i : ints) {
            System.out.println(i);
        }
    }
}
3、查询返回单条数据 3.1、 修改持久层
 Users selectUsersById(int userid);
    //通过ID查询用户
    @Override
    public Users selectUsersById(int userid) {
        String sql = "select * from users where userid = ?";
        Object[] params = new Object[]{userid};
        Users users = new Users();
        this.jdbcTemplate.query(sql, params, new RowCallbackHandler() {
            @Override
            public void processRow(ResultSet resultSet) throws SQLException {
                users.setUserid(resultSet.getInt("userid"));
                users.setUsername(resultSet.getString("username"));
                users.setUsersex(resultSet.getString("usersex"));
            }
        });
        return users;
    }
3.2、修改业务层
    Users findUsersById(int userid);
    @Override
    public Users findUsersById(int userid) {
        return this.usersDao.selectUsersById(userid);
    }
3.3、 创建测试类
public class FindUsersByIdTest {
    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        UsersService usersService = (UsersService)applicationContext.getBean("usersService");
        Users users = usersService.findUsersById(23);
        System.out.println(users);

    }
}
4、 查询返回多条数据 4.1、 修改持久层
    List selectUsersByName(String username);
    //查询用户返回多条数据
    @Override
    public List selectUsersByName(String username) {
        String sql = "select * from users where username = ?";
        Object[] param = new Object[]{username};
        return this.jdbcTemplate.query(sql, param, new RowMapper() {
            @Override
            public Users mapRow(ResultSet resultSet, int i) throws SQLException {
                Users users = new Users();
                users.setUserid(resultSet.getInt("userid"));
                users.setUsername(resultSet.getString("username"));
                users.setUsersex(resultSet.getString("usersex"));
                return users;
            }
        });
    }
4.2、 修改业务层
    List findUsersByName(String username);
    @Override
    public List findUsersByName(String username) {
        return this.usersDao.selectUsersByName(username);
    }
4.3、 创建测试类
public class FindUsersByNameTest {
    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        UsersService usersService = (UsersService)applicationContext.getBean("usersService");
        List list = usersService.findUsersByName("aaaaaa");
        list.forEach(System.out::println);
    }
}
5、 查询多条数据简化版

通过 BeanPropertyRowMapper 完成对象的映射处理

5.1、 修改持久层
    List selectUsersByName2(String username);
    @Override
    public List selectUsersByName2(String username) {
        String sql = "select * from users where username = ?";
        Object[] param = new Object[]{username};
        return this.jdbcTemplate.query(sql,param,new BeanPropertyRowMapper<>(Users.class));
    }
5.2、 修改业务层
    List findUsersByName2(String username);
    @Override
    public List findUsersByName2(String username) {
        return this.usersDao.selectUsersByName2(username);
    }
5.3、 创建测试类
public class FindUsersByName2Test {
    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        UsersService usersService = (UsersService)applicationContext.getBean("usersService");
        List list = usersService.findUsersByName2("aaaaaa");
        list.forEach(System.out::println);
    }
}

四、JdbcDaoSupport 的使用 1、 创建持久层
public class UsersDaoImplSupport extends JdbcDaoSupport implements UsersDao {

    @Override
    public List selectUsersByName2(String username) {
        String sql = "select * from users where username = ?";
        Object[] param = new Object[]{username};
        return this.getJdbcTemplate().query(sql,param,new BeanPropertyRowMapper<>(Users.class));
    }
}

2、 修改配置文件

        
                
        

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759142.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号