Spring与Dao

Spring与DAO

Spring与JDBC模板(对IOC的应用)

对增删改的操作

//对于增删改操作统一使用update
@Override
//增
public void insertStudent(Student student) { 
    String sql = "insert into student(id,name,age) values(?,?,?)";   
    this.getJdbcTemplate().update(sql, student.getId(), student.getName(), student.getAge());
}
//删
@Override
public void deleteById(int id) {    
    String sql = "delete from student where id=?"; 
    this.getJdbcTemplate().update(sql, id);
}
//改
@Override
public void updateStudent(Student student) { 
    String sql = "update student set name=?,age=? where id=?";   
    this.getJdbcTemplate().update(sql, student.getName(), student.getAge(), student.getId());
}

普通Bean的注册

<!--注册Dao-->
<bean id="studentDao" class="priv.ze.spring.Dao.Impl.StudentDaoImpl">   
    <property name="dataSource" ref="myDataSource"/>
</bean>
<!--注册Service-->
<bean id="studentService" class="priv.ze.spring.Dao.Impl.IStudentServiceImpl">  
    <property name="dao" ref="studentDao"/>
</bean>

数据源的注册

此种方式并不是最简洁的方式

<!--注册数据源 Spring内置连接池-->
<bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
    <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/> 
    <property name="url" value="jdbc:mysql://localhost:3306/spring? 
                                serverTimezone=GMT%2B8&amp;useSSL=false"/>   
    <property name="username" value="root"/> 
    <property name="password" value="00312000"/>
</bean>

<!--注册数据源 c3p0内置连接池-->
<bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
    <property name="driverClass" value="com.mysql.cj.jdbc.Driver"/>   
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/spring?
                                    serverTimezone=GMT%2B8&amp;useSSL=false"/>  
    <property name="user" value="root"/>  
    <property name="password" value="00312000"/>
</bean>
    <!--注册JdbcTemplate-->
    <bean id="myJdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="myDataSource"/>
    </bean>
<!--注册Dao-->
<bean id="studentDao" class="priv.ze.spring.Dao.Impl.StudentDaoImpl">   
    <property name="dataSource" ref="myJdbcTemplate"/>
</bean>
<!--注册Service-->
<bean id="studentService" class="priv.ze.spring.Dao.Impl.IStudentServiceImpl">  
    <property name="dao" ref="studentDao"/>
</bean>

从属性连接读取DB的四要素

<!--注册数据源 c3p0内置连接池-->
<bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
    <property name="driverClass" value="${jdbc.driver}"/> 
    <property name="jdbcUrl" value="${jdbc.url}"/> 
    <property name="user" value="${jdbc.user}"/>   
    <property name="password" value="${jdbc.password}"/>
</bean>

<!--注册属性文件 :方式一-->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">   
    <property name="location" value="jdbc.properties"/>
</bean>

<!--注册属性文件 :方式二(常用)-->
<context:property-placeholder location="jdbc.properties"/>

同时需要相应的配置文件(在类路径下)

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring?serverTimezone=GMT%2B8&amp;useSSL=false
jdbc.user=root
jdbc.password=00312000

将数据源注入给Dao

此种方式省略了JdbcTemplate的注册,更简便

 <!--注册数据源 c3p0内置连接池-->
<bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="com.mysql.cj.jdbc.Driver"/>
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/spring?serverTimezone=GMT%2B8&amp;useSSL=false"/>
    <property name="user" value="root"/>
    <property name="password" value="00312000"/>
</bean>
<!--注册Dao-->
<bean id="studentDao" class="priv.ze.spring.Dao.Impl.StudentDaoImpl"> 
    <property name="dataSource" ref="myDataSource"/>
</bean>
<!--注册Service-->
<bean id="studentService" class="priv.ze.spring.Dao.Impl.IStudentServiceImpl">  
    <property name="dao" ref="studentDao"/>
</bean>

jdbc模板对象是多例的

jdbcTemplate对象是多例的,即系统会为每一个使用模板对象的线程(方法)创建一个jdbcTemplate实例,并且在该线程(方法)结束时,自动释放jdbcTemplate实例,所以在每次使用jdbcTemplate对象时,搜需要通过getjdbcTemplate()方法获取。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值