spring—JdbcTemplate
Spring提供的JDBC操作类
依赖连接池DataSource(数据源)
实例:
1.1创建数据库表
T_user
1.2导入jar
1.3javabean
1.3.1使用api(了解)
// 1.创建来连接池(dbcp)
BasicDataSource dataSource=new BasicDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/springstudata");
dataSource.setUsername("root");
dataSource.setPassword("lfno11");
//2.创建模板
JdbcTemplate jdbcTemplate=new JdbcTemplate();
jdbcTemplate.setDataSource(dataSource);
//3.通过api操作
jdbcTemplate.update("insert into t_user(username,password) value(?,?)", "jake","123");
1.3.2配置DBCP
<bean id="dataSourceId" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/springstudata"></property>
<property name="username" value="root"></property>
<property name="password" value="lfno11"></property>
</bean>
<!-- 创建模板 -->
<bean id="jdbcTemplateId" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 需要注入数据源 -->
<property name="dataSource" ref="dataSourceId"></property>
</bean>
<bean id="UserDaoId" class="com.java.dbcp.UserDao">
<!-- 需要注入模板 -->
<property name="jdbcTemplate" ref="jdbcTemplateId"></property>
</bean>
1.3.3配置C3P0
<!-- 创建模板 -->
<bean id="jdbcTemplateId" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 需要注入数据源 -->
<property name="dataSource" ref="dataSourceId"></property>
</bean>
<bean id="UserDaoId" class="com.java.c3p0.UserDao">
<!-- 需要注入模板 -->
<property name="jdbcTemplate" ref="jdbcTemplateId"></property>
</bean>
1.3.4 JdbcTemplate的使用:
参考:https://blog.csdn.net/weixin_40001125/article/details/88538576
//jdbc模板将由spring注入
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
//这行代码省略,继承父类extends JdbcDaoSupport,下面的jdbcTemplate换成this.getjdbcTemplate()
Bean里面配置直接省去创建模板,自动创建
//修改数据
public void update(User user) {
String sql="update t_user set username=?,password=? where id=?";
Object[] args= {user.getUsername(),user.getPassword(),user.getId()};
jdbcTemplate.update(sql, args);
}
//添加数据
public void add(User user) {
String sql="insert into t_user values(null,?,?)";
Object[] args= {user.getUsername(),user.getPassword()};
jdbcTemplate.update(sql, args);
}
//删除数据
public void delete(int id) {
String sql="delete from t_user where id=?";
jdbcTemplate.update(sql, id);
}
//查询所有数据
public List<User> queryAll() {
return jdbcTemplate.query("select * from t_user", BeanPropertyRowMapper.newInstance(User.class));
}
1.3.5使用DaoSupport
Dao层类继承父类jdbcDaoSupport。
配置文件中省去了创建模板步骤,直接注入数据源
1.3.5配置properties
<context:property-placeholder location="classpath:com/java/JdbcDaoSupport/jdbcin.properties"/>
<bean id="dataSourceId" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
如果报Could not load driverClass com.mysql.jdbc.Driver警告
解决办法:检查每个配置值最后是否有空格,把鼠标放在配置值最后,如果前面有空格,去掉即可。
此外:以上在properties中的配置写法是:
jdbcurl=jdbc:mysql://localhost/sys?useUnicode=true&characterEncoding=utf-8&useSSL=FALSE&serverTimezone = UTC
而在xml文件中配置写法(需要转义-&,并用分号隔开)是:
jdbc:mysql://localhost/sys?useUnicode=true&characterEncoding=utf-8&useSSL=FALSE&
serverTimezone=UTC
参考:https://blog.csdn.net/weixin_40001125/article/details/88538576