springMVC中使用spring JDBC访问数据库

(1)tomcat使用JDNI配置数据源连接数据库

在tomact(9.0+版本)的cong目录下的context.xml加入以下内容,其中driverClassName为对应的数据库驱动,这里是mysql-java驱动,版本用的是8.0版本,和mysql版本级别最好相差不大。

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <Resource name="jndi/test"
              auth="Container"
              type="javax.sql.DataSource"
              driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/springmvctest?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC"
              username="root"
              password="xxxxxx"
              maxActive="20"
              maxIdle="10"
              maxWait="10000"/>
</Context>

配置spring中的context的上下bean,作用是让jdbc用来寻找连接池(datasource)

 <!--JndiObjectFactoryBean从JNDI中查找DataSource-->
    <bean id="datasource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="java:comp/env/jndi/test"></property>
    </bean>
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="datasource" />
    </bean>

(2)JDBC实现数据访问对象(data access object, dao)
在这里插入图片描述
服务对象本身并不会处理数据访问,而是将数据访问委托给Repository。 Repository接口确保其与服务对象的松耦合。简单配置一个数据访问接口, Repository接口

public interface SpitterRepository {//spitter是数据库中表所代表的对象
    Spitter save(Spitter spitter);
    Spitter findByUserName(String userName); 
}

JDBC实现数据库访问对象, Repository实现

@Repository
public class JdbcSpitterRepository implements SpitterRepository {

    private final JdbcOperations jdbc;

    private static final String INSERT_SPITTER = "insert into Spitter (username, password, first_name, last_name, email) values (?, ?, ?, ?, ?)";
    private static final String FIND_SPITTER = "select id, username, password, first_name, last_name, email from Spitter where username=?";

    @Autowired
    public JdbcSpitterRepository(JdbcOperations jdbc) {
        this.jdbc = jdbc;
    }

    public Spitter save(Spitter spitter) {
        jdbc.update( //SQL语句insert into 不存在则插入,存在则修改
                INSERT_SPITTER,
                spitter.getUsername(),
                spitter.getPassword(),
                spitter.getFirstName(),
                spitter.getLastName(),
                spitter.getEmail());
        return spitter; // TODO: Determine value for id
    }

    public Spitter findByUserName(String username) {
        return jdbc.queryForObject(
                FIND_SPITTER,
                new SpitterRowMapper(),
                username);
    }
  
    //内部私有类
    private static class SpitterRowMapper implements RowMapper<Spitter> {
        public Spitter mapRow(ResultSet rs, int rowNum) throws SQLException {
            return new Spitter(
                    rs.getLong("id"),
                    rs.getString("username"),
                    rs.getString("password"),
                    rs.getString("first_name"),
                    rs.getString("last_name"),
                    rs.getString("email"));
        }
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值