Spring的数据库编程——Spring JDBCTemplate的常用方法————自学的书本上的一个程序。

JdbcTemplate类的常用方法

  • update()和query()方法。
public int update(String sql, Object args[]);

该方法可以对数据表进行增加、修改、删除等操作。使用args[]设置sql语句中的参数,并返回更新的行数。

public List query(String sql, RowMapper rowMapper, Object args[]);

该方法可以对数据表进行查询操作。rowMapper将结果集映射到用户自定义的类中(前提是自定义类中的属性要与数据表的字段对应)。

Spring JDBC的使用过程

  1. JAR包
    • commons-logging
    • spring-aop
    • mysql-connector-java
    • spring-jdbc
    • spring-tx
  2. 在src目录下创建数据库配置的属性文件jdbc.properties
jdbc.driverClassName = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/springtest?characterEncoding = utf8
jdbc.username = root
jdbc.password = root
  1. 在src目录下创建config包,并在包里创建配置类SpringConfig
@Configuration //通过该注解来表明该类是一个Spring配置,相当于一个xml文件
@ComponentScan(basePackages = {"dao", "service"}) //配置扫描包
@PropertySource(value = {"classpath:jdbc.properties"}, ignoreResourceNotFound = true) 
//配置多个配置文件 value = {"classpath:jdbc.properties","xx","xxx"}

public class SpringJDBCConfig{
	@Value("${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(){
		DriverManagerDataSource myDataSource = new DriverManagerDataSource();
		//数据库驱动
		myDataSource.setDriverClassName(jdbcDriverClassName);
		//相应驱动的jdbcUrl
		myDataSource.setUsername(jdbcUsername);
		//数据库的用户名
		myDataSource.setPassword(jdbcPassword);
		//数据库的密码
		return myDataSource;
	}
	
	@Bean(value = "jdbcTemplate")
	public JdbcTemplate getJdbcTemplate(){
		return new JdbcTemplate(dataSource()));
	}
}
  1. 创建数据表与实体类
$mysql -u root -p

create database springtest;
use springtest;
create table user(uid int(10), uname varchar(20), usex varchar(10));

在src目录下,创建包entity,在该包中创建实体类MyUser

public class MyUser{
	private Integer uid;
	private String uname;
	private String usex;
	//省略set和get方法
	public String toString(){
		return //省略了,会自动的。
	}
}
  1. 创建数据访问层
    在src目录下,创建dao包,在该包中创建数据访问接口TestDao和接口实现类TestDaoImpl.

TestDao的代码

public interface TestDao{
	public int update(String sql, Object[] param);
	public List<MyUser> query(String sql, Object[] param);
}

TestDaoImpl的代码

@Repository
public class TestDaoImpl implements TestDao{
	@Autowired
	private JdbcTemplate jdbcTemplate;

	@Override
	public int update(String sql, Object[] param){
		return jdbcTemplate.update(sql, param);
	}

	@Override
	public List<Myuser> query(String sql, Object[] param){
		RowMapper<MyUser> rowMapper = new BeanPropertyRowMapper<MyUser>(MyUser.class);
		return jdbcTemplate.query(sql, rowMapper);
	}
}
  1. 创建业务逻辑层
    在src目录下创建service包,在该包中创建访问接口TestService和实现类TestServiceImpl。
    TestService的代码
public interface TestService{
	public void testJDBC();
}

TestServiceImpl的代码

@Service
public class TestService implements TestService{
	@Autowired
	private TestDao testDao;
	@Override
	public void testJDBC(){
		String insertSql = "insert into user values(null, ?, ?)";
		Object param1[] = {"chenheng1", "男"};
		Object param2[] = {"chenheng2", "男"};
		Object param3[] = {"chenheng3", "男"};
		Object param4[] = {"chenheng4", "男"};

		//添加用户
		testDao.upate(inserSql, param1);
		testDao.upate(inserSql, param2);
		testDao.upate(inserSql, param3);
		testDao.upate(inserSql, param4);
		//查询用户
		String selectSql = "select * from user";
		List<MyUser> list = testDao.query(selectSql, null);
		for(MyUser mu : list){
			System.out.println(mu);
		}
	}
}
  1. 创建测试类
    在config包中,创建测试类TestJDBC
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();
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值