JdbcTemplate类的常用方法
- update()和query()方法。
public int update(String sql, Object args[]);
该方法可以对数据表进行增加、修改、删除等操作。使用args[]设置sql语句中的参数,并返回更新的行数。
public List query(String sql, RowMapper rowMapper, Object args[]);
该方法可以对数据表进行查询操作。rowMapper将结果集映射到用户自定义的类中(前提是自定义类中的属性要与数据表的字段对应)。
Spring JDBC的使用过程
- JAR包
- commons-logging
- spring-aop
- mysql-connector-java
- spring-jdbc
- spring-tx
- 在src目录下创建数据库配置的属性文件jdbc.properties
jdbc.driverClassName = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/springtest?characterEncoding = utf8
jdbc.username = root
jdbc.password = root
- 在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()));
}
}
- 创建数据表与实体类
$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 //省略了,会自动的。
}
}
- 创建数据访问层
在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);
}
}
- 创建业务逻辑层
在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);
}
}
}
- 创建测试类
在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();
}
}