技术栈

五、(三)持久层框架——JDBC

2019-07-22  本文已影响0人  烟雨乱平生
@Configuration
public class DataSourceConfig {

    @Bean(name = "dataSource")
    public DataSource dataSource(){
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/userinfo?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false");
        dataSource.setUsername("root");
        dataSource.setPassword("");
        return dataSource;
    }

    @Bean(name = "dbcp")
    public DataSource dbcp(){
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/userinfo?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false");
        dataSource.setUsername("root");
        dataSource.setPassword("");
        dataSource.setInitialSize(5);
        dataSource.setMaxIdle(10);
        return dataSource;
    }

    @Bean(name = "c3p0")
    public DataSource c3p0() throws PropertyVetoException {
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        dataSource.setDriverClass("com.mysql.jdbc.Driver");
        dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/userinfo?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false");
        dataSource.setUser("root");
        dataSource.setPassword("");
        dataSource.setInitialPoolSize(5);
        dataSource.setMaxPoolSize(10);
        return dataSource;
    }

    @Bean(name = "druid")
    public DataSource druid() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/userinfo?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false");
        dataSource.setUsername("root");
        dataSource.setPassword("");
        dataSource.setInitialSize(5);
        dataSource.setMaxActive(10);
        return dataSource;
    }

    @Bean
    public JdbcTemplate jdbcTemplate(){
        JdbcTemplate template = new JdbcTemplate(dataSource());
        return template;
    }

    @Bean
    public NamedParameterJdbcTemplate namedParameterJdbcTemplate(){
        NamedParameterJdbcTemplate template = new NamedParameterJdbcTemplate(dbcp());
        return template;
    }

}

使用JDBC

@Component
public class UserServiceUseJDBC {

    @Autowired
    @Qualifier("dataSource")
    private DataSource dataSource;

    public void insert(User user){
        Connection connection = null;
        PreparedStatement statement = null;
        String sql = "insert into user(name,account,password,gender) values(?,?,?,?)";
        try {
            connection = dataSource.getConnection();
            statement =connection.prepareStatement(sql);
            statement.setString(1,user.getName());
            statement.setString(2,user.getAccount());
            statement.setString(3,user.getPassword());
            statement.setString(4,user.getGender());
            statement.execute();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                if(statement!=null) {
                    statement.close();
                }
                if(connection!=null){
                    connection.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

使用JDBC模板

@Component
public class UserServiceUseTemplate {

    @Autowired
    private JdbcTemplate template;

    public void insert(User user){
        String sql = "insert into user(name,account,password,gender) values(?,?,?,?)";
        template.update(sql,user.getName(),user.getAccount(),user.getPassword(),user.getGender());
    }
}
@Component
public class UserServiceUseTemplate {

    @Autowired
    private JdbcTemplate template;

    @Autowired
    private NamedParameterJdbcTemplate namedTemplate;

    public void insert(User user){
        String sql = "insert into user(name,account,password,gender) values(:name,:account,:password,:gender)";
        Map<String,Object> params = new HashMap<>();
        params.put("name",user.getName());
        params.put("account",user.getAccount());
        params.put("password",user.getPassword());
        params.put("gender",user.getGender());
        namedTemplate.update(sql,params);
    }
}

使用DAO支持类

上一篇 下一篇

猜你喜欢

热点阅读