吴裕雄--天生自然--SPRING--Spring的数据库编程

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了吴裕雄--天生自然--SPRING--Spring的数据库编程脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
数据库编程是互联网编程的基础,SPRing框架为开发者提供了JDBC模板模式,即jdbcTemplate,它可以简化许多代码,但在实际应用中jdbcTemplate并不常用。工作更多的时候,用的是Hibernate框架和MyBatis框架进行数据库编程。
package entITy;

public class MyUser {
    private Integer uid;
    private String uname;
    private String usex;

    public Integer getUid() {
        return uid;
    }

    public void setUid(Integer uid) {
        this.uid = uid;
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String getUsex() {
        return usex;
    }

    public void setUsex(String usex) {
        this.usex = usex;
    }

    public String toString() {
        return "myUser [uid=" + uid + ", uname=" + uname + ", usex=" + usex + "]";
    }
}
package DAO;

import java.util.List;
import entity.MyUser;

public interface testDao {
    public int update(String SQL, Object[] param);

    public List<;myUser> query(String sql, Object[] param);
}
package dao;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanProPErtyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;

import entity.MyUser;

@Repository
public class TestDaoImpl implements TestDao {
    @Autowired // 使用配置类中的JDBC模板
    private JdbcTemplate jdbcTemplate;

    /**
     * 更新方法,包括添加、修改、删除 param为sql中的参数,如通配符?
     */
    @override
    public int update(String sql, Object[] param) {
        return jdbcTemplate.update(sql, param);
    }

    /**
     * 查询方法 param为sql中的参数,如通配符?
     */
    @Override
    public List<MyUser> query(String sql, Object[] param) {
        RowMapper<MyUser> rowMapper = new BeanPropertyRowMapper<MyUser>(MyUser.class);
        return jdbcTemplate.query(sql, rowMapper);
    }
}
package service;

public interface TestService {
    public void testJDBC();
}
package service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import dao.TestDao;
import entity.MyUser;

@Service
@Transactional
public class TestServiceimpl implements TestService {
    @Autowired
    public TestDao testDao;

    @Override
    public void testJDBC() {
        String insertSql = "insert into user values(null,?,?)";
        // 数组param的值与insertSql语句中?一一对应
        Object param1[] = { "chenheng1", "男" };
        Object param2[] = { "chenheng2", "女" };
        Object param3[] = { "chenheng3", "男" };
        Object param4[] = { "chenheng4", "女" };
        String insertSql1 = "insert into user values(?,?,?)";
        Object param5[] = { 1, "chenheng5", "女" };
        Object param6[] = { 1, "chenheng6", "女" };
        // 添加用户
        testDao.update(insertSql, param1);
        testDao.update(insertSql, param2);
        testDao.update(insertSql, param3);
        testDao.update(insertSql, param4);
        // 添加两个ID相同的用户,出现唯一性约束异常,使事物回滚。
        //testDao.update(insertSql1, param5);
        //testDao.update(insertSql1, param6);
        // 查询用户
        String selectSql = "select * From user";
        List<MyUser> list = testDao.query(selectSql, null);
        for (MyUser mu : list) {
            System.out.println(mu);
        }
    }
}
package config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.componentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration // 通过该注解来表明该类是一个Spring的配置,相当于一个XMl文件
@ComponentScan(basePackages = { "dao", "service" }) // 配置扫描包
//配置多个配置文件value={"classpath:jdbc.properties","xx","xxx"}
@PropertySource(value = { "classpath:jdbc.properties" }, ignoreResourceNotFound = true)
@EnableTransactionManagement // 开启声明式事务的支持
public class SpringJDBCConfig {
    @Value("${jdbc.url}") // 注入属性文件jdbc.properties中的jdbc.url
    private String jdbcUrl;
    @Value("${jdbc.driverclassname}")
    private String jdbcdriverClassName;
    @Value("${jdbc.username}")
    private String jdbcUsername;
    @Value("${jdbc.password}")
    private String jdbcPassword;

    /**
     * 配置数据
     */
    @Bean
    public DriverManagerDataSource dataSource() {
        System.out.println(this.jdbcUrl);
        System.out.println(this.jdbcDriverClassName);
        System.out.println(this.jdbcUsername);
        System.out.println(this.jdbcPassword);
        DriverManagerDataSource myDataSource = new DriverManagerDataSource();
        // 数据库驱动
        myDataSource.setDriverClassName(this.jdbcDriverClassName);
        // 相应驱动的jdbcUrl
        myDataSource.setUrl(this.jdbcUrl);
        // 数据库的用户名
        myDataSource.setUsername(this.jdbcUsername);
        // 数据库的密码
        myDataSource.setPassword(this.jdbcPassword);
        return myDataSource;
    }

    /**
     * 配置JdbcTemplate
     */
    @Bean(value = "jdbcTemplate")
    public JdbcTemplate getJdbcTemplate() {
        return new JdbcTemplate(dataSource());
    }

    /**
     * 为数据源添加事务管理器
     */
    @Bean
    public DataSourceTransactionManager transactionManager() {
        DataSourceTransactionManager dt = new DataSourceTransactionManager();
        dt.setDataSource(dataSource());
        return dt;
    }
}
jdbc.driverClassName=com.MySQL.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/springtest?useUnicode=true&amp;characterEncoding=UTF-8&serverTimezone=UTC
jdbc.username=root
jdbc.password=admin
package config;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import service.TestService;

public class TestJDBC {
    public static void main(String[] args) {
        // 初始化Spring容器ApplicationContext
        AnnotationConfigApplicationContext appCon = new AnnotationConfigApplicationContext(SpringJDBCConfig.class);
        TestService ts = appCon.getBean(TestService.class);
        ts.testJDBC();
        appCon.close();
    }
}

吴裕雄--天生自然--SPRING--Spring的数据库编程

 

 

吴裕雄--天生自然--SPRING--Spring的数据库编程

 

 

CREATE DATABASE springtest;
commit;

use springtest;
commit;

CREATE TABLE user(
uid INT NOT NULL AUTO_INCREMENT,
uname VArchAR(40) NOT NULL,
usex VARCHAR(40) NOT NULL,
Primary KEY (uid)
)ENginE=InnoDB DEFAULT CHARSET=utf8
;
commit;

 

吴裕雄--天生自然--SPRING--Spring的数据库编程

 

脚本宝典总结

以上是脚本宝典为你收集整理的吴裕雄--天生自然--SPRING--Spring的数据库编程全部内容,希望文章能够帮你解决吴裕雄--天生自然--SPRING--Spring的数据库编程所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。