0
点赞
收藏
分享

微信扫一扫

Spring boot 整合JDBC

往复随安_5bb5 2022-03-30 阅读 75

Spring boot 整合JDBC

引入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

创建数据库

use db_01;
create table user
(
    id       int auto_increment
        primary key,
    username varchar(255) null,
    address  varchar(255) null
);

INSERT INTO db_01.user (id, username, address) VALUES (1, 'javaboy', 'www.javaboy.org');
INSERT INTO db_01.user (id, username, address) VALUES (2, 'itboyhub', 'www.itboyhub.com');

配置数据库

spring.datasource.one.jdbcUrl=jdbc:mysql:///db_01?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.one.username=root
spring.datasource.one.password=666666

创建User

@Data
public class User {
    private Long id;
    private String username;
    private String address;
}

创建UserService

@Service
public class UserService {
    @Autowired
    JdbcTemplate jdbcTemplate;

    public int addUser(User user) {
        int result = jdbcTemplate.update("insert into user (username,address) values(?,?)", user.getUsername(), user.getAddress());
        return result;
    }

    public int addUser2(User user) {
        GeneratedKeyHolder keyHolder = new GeneratedKeyHolder();
        int result = jdbcTemplate.update(new PreparedStatementCreator() {
            @Override
            public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
                PreparedStatement ps = connection.prepareStatement("insert into user (username,address) values(?,?)", Statement.RETURN_GENERATED_KEYS);
                ps.setString(1, user.getUsername());
                ps.setString(2, user.getAddress());
                return ps;
            }
        }, keyHolder);
        user.setId(keyHolder.getKey().longValue());
        return result;
    }

    public int deleteById(Long id) {
        return jdbcTemplate.update("delete from user where id=?", id);
    }

    public int updateById(Long id,String username) {
        return jdbcTemplate.update("update user set username=? where id=?", username, id);
    }

    public List<User> getAllUsers() {
        List<User> list = jdbcTemplate.query("select * from user", new RowMapper<User>() {
            @Override
            public User mapRow(ResultSet resultSet, int i) throws SQLException {
                String username = resultSet.getString("username");
                String address = resultSet.getString("address");
                long id = resultSet.getLong("id");
                User user = new User();
                user.setId(id);
                user.setUsername(username);
                user.setAddress(address);
                return user;
            }
        });
        return list;
    }
    public List<User> getAllUsers2() {
        List<User> list = jdbcTemplate.query("select * from user", new BeanPropertyRowMapper<>(User.class));
        return list;
    }

测试

@SpringBootTest
class JdbctemplateApplicationTests {

    @Autowired
    UserService userService;
    @Test

    void contextLoads() {
        User user = new User();
        user.setUsername("javaboy");
        user.setAddress("www.javaboy.org");
        int i = userService.addUser(user);
        System.out.println(i);
    }

    @Test
    void test1() {
        User u = new User();
        u.setUsername("itboyhub");
        u.setAddress("www.itboyhub.com");
        int i = userService.addUser2(u);
        System.out.println("i = " + i);
        System.out.println("u.getId() = " + u.getId());
    }

    @Test
    void test2() {
        userService.deleteById(10L);
        userService.updateById(9L, "itboyhub123");
    }
    @Test
    void test3() {
        List<User> allUsers = userService.getAllUsers();
        for (User allUser : allUsers) {
            System.out.println(allUser);
        }
    }

    @Test
    void test4() {
        List<User> allUsers = userService.getAllUsers2();
        for (User allUser : allUsers) {
            System.out.println(allUser);
        }
    }
}

Springboot 使用jdbc 配置多数据源

配置文件

spring.datasource.one.jdbcUrl=jdbc:mysql:///db_01?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.one.username=root
spring.datasource.one.password=666666

spring.datasource.two.jdbcUrl=jdbc:mysql:///db_02?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.two.username=root
spring.datasource.two.password=666666

DataSource 配置

@Configuration
public class DataSourceConfig {
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.one")
    DataSource dsOne() {
        return new HikariDataSource();
    }
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.two")
    DataSource dsTwo() {
        return new HikariDataSource();
    }
}

Jdbc 模板配置

@Configuration
public class JdbcTemplateConfig {

    @Bean
    JdbcTemplate jdbcTemplateOne(@Qualifier("dsOne") DataSource ds) {
        return new JdbcTemplate(ds);
    }

    @Bean
    JdbcTemplate jdbcTemplateTwo(@Qualifier("dsTwo") DataSource ds) {
        return new JdbcTemplate(ds);
    }
}

创建db_01,db_02,添加User表

use db_01;
create table user
(
    id       int auto_increment
        primary key,
    username varchar(255) null,
    address  varchar(255) null
);

INSERT INTO db_01.user (id, username, address) VALUES (1, 'javaboy', 'www.javaboy.org');
INSERT INTO db_01.user (id, username, address) VALUES (2, 'itboyhub', 'www.itboyhub.com');
use db_02;
create table user
(
    id       int auto_increment
        primary key,
    username varchar(255) null,
    address  varchar(255) null
);

INSERT INTO db_01.user (id, username, address) VALUES (1, 'javaboy', 'www.javaboy.org');
INSERT INTO db_01.user (id, username, address) VALUES (2, 'itboyhub', 'www.itboyhub.com');

创建User

@Data
public class User {
    private Long id;
    private String username;
    private String address;
}

测试:

@SpringBootTest
class JdbctemplatemultiApplicationTests {

    @Autowired
    @Qualifier("jdbcTemplateOne")
    JdbcTemplate jdbcTemplateOne;

    @Resource(name = "jdbcTemplateTwo")
    JdbcTemplate jdbcTemplateTwo;
    @Test
    void contextLoads() {
        List<User> list1 = jdbcTemplateOne.query("select * from user", new BeanPropertyRowMapper<>(User.class));
        List<User> list2 = jdbcTemplateTwo.query("select * from user", new BeanPropertyRowMapper<>(User.class));
        System.out.println("list1 = " + list1);
        System.out.println("list2 = " + list2);
    }

}
举报

相关推荐

0 条评论