Spring二刷笔记-JdbcTemplate

一、使用JdbcTemplate依赖

spring-jdbc:spring自带封装的jdbc
spring-tx:事务依赖Tranaction
spring-orm:spring整合数据层框架所需依赖

		<!--mysql连接驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.32</version>
        </dependency>

        <!--spring自己封装的jdbc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.6</version>
        </dependency>


        <!--事务依赖 Transaction -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.3.6</version>
        </dependency>

        <!--spring整合数据层框架所需依赖-->
        <dependency>
            <groupId>springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>1.2.6</version>
        </dependency>

以下样例使用的druid连接池

	<!--druid连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.6</version>
        </dependency>

二、配置Druid数据源和JdbcTemplate

	<!--引入外部文件-->
	<context:property-placeholder location="classpath:jdbc.properties"/>

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>

三、JdbcTemplate操作数据库

1、样例代码

(1)dao层

给dao层实现类注入jdbcTemplate
使用jdbcTemplate实现CRUD

@Repository
public class TicketMapper implements TicketDao {
    @Autowired
    JdbcTemplate jdbcTemplate;
	//添加数据
    public void add(Ticket ticket) {
        String sql="insert into ticket (id,name,author) values(?,?,?)";
        int update=jdbcTemplate.update(sql,ticket.getTicketId(),ticket.getTicketName(),ticket.getAuthor());
        System.out.println(update);
    }
	//删除数据
    public void delete(int id) {
        String sql="delete from ticket where id=?";
        int update=jdbcTemplate.update(sql,id);
        System.out.println(update);
    }

    //查询对象
    public Ticket query(int id) {
        String sql="select id ticketId,name ticketName,author from ticket where id=?";
        Ticket ticket=jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<Ticket>(Ticket.class),id);
        return ticket;
    }
	//查询集合
    public List<Ticket> findAll() {
        String sql="select id ticketId,name ticketName,author from ticket";
        List<Ticket> ticketList=jdbcTemplate.query(sql,new BeanPropertyRowMapper<Ticket>(Ticket.class));
        return ticketList;
    }

    public void update(Ticket ticket) {
        String sql="update ticket set name=? , author=? where id=?";
        String args[]={ticket.getTicketName(),ticket.getAuthor(),ticket.getTicketId()};

        int update = jdbcTemplate.update(sql, args);
        System.out.println(update);

    }
    //查询记录总数
    public int seleteCount() {
        String sql="select COUNT(*) from ticket";
        Integer cnt = jdbcTemplate.queryForObject(sql, Integer.class);
        return cnt;
    }
    //批量添加
    public void batchAdd(List<Object[]> batchList) {
        String sql="insert into ticket (id,name,author) values(?,?,?)";
        //批量添加 values (),(),()  对象这list的Object数组 o1,o2,o3
        int[] ints=jdbcTemplate.batchUpdate(sql,batchList);
        System.out.println(Arrays.toString(ints));
    }
    //批量删除
    public void batchDelete(List<Object[]> batchList) {
        String sql="delete from ticket where id=?";
        int[] ints=jdbcTemplate.batchUpdate(sql,batchList);
        System.out.println(Arrays.toString(ints));
    }
    //批量修改
    public void batchUpdate(List<Object[]> batchList) {
        String sql="update ticket set name=?,author=? where id=?";
        int[] ints=jdbcTemplate.batchUpdate(sql,batchList);
        System.out.println(Arrays.toString(ints));
    }
}

(2)service层

给Service实现类注入dao,使用dao来完成操作

@Service("ticketService")
public class TicketServiceImpl implements TicketService{
    @Autowired
    TicketDao ticketDao;

    public void add(Ticket ticket) {
        ticketDao.add(ticket);
    }

    public void delete(int id) {
        ticketDao.delete(id);
    }

    public Ticket query(int id) {
        return ticketDao.query(id);
    }

    public List<Ticket> findAll() {
        return ticketDao.findAll();
    }

    public void update(Ticket ticket) {
        ticketDao.update(ticket);
    }

    public int getCount() {
        return ticketDao.seleteCount();
    }
    public void batchAdd(List<Object[]> batchList) {
        ticketDao.batchAdd(batchList);
    }

    public void batchDelete(List<Object[]> batchList) {
        ticketDao.batchDelete(batchList);
    }

    public void batchUpdate(List<Object[]> batchList) {
        ticketDao.batchUpdate(batchList);
    }
}

2、不同查询

(1)普通查询
					jdbcTemplate.queryForObject(
									sql,
									Integer.class   //返回什么类型写什么
					);
(2)对象查询
 jdbcTemplate.queryForObject(
		sql,      //sql语句
		new BeanPropertyRowMapper<Ticket>(Ticket.class),  //RowMapper 查询的什么类型泛型写什么
		id        //sql参数
);
(3)集合查询

应用场景:查询分页

		jdbcTemplate.query(
							sql,      //sql语句
							new BeanPropertyRowMapper<Ticket>(Ticket.class)
		);		
 //查询对象
    public Ticket query(int id) {
        String sql="select id ticketId,name ticketName,author from ticket where id=?";
        Ticket ticket=jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<Ticket>(Ticket.class),id);
        return ticket;
    }
	//查询集合
    public List<Ticket> findAll() {
        String sql="select id ticketId,name ticketName,author from ticket";
        List<Ticket> ticketList=jdbcTemplate.query(sql,new BeanPropertyRowMapper<Ticket>(Ticket.class));
        return ticketList;
    }
ApplicationContext context=new ClassPathXmlApplicationContext("bean2.xml");

        Ticket ticket=new Ticket("3","砍僵尸","林正英");
        TicketService ticketService = context.getBean("ticketService", TicketService.class);
        int id=5;
        Ticket ticket=ticketService.query(id);

java.lang.NoSuchMethodException
这个错误发现是实体类没有无参构造,无法映射

3.批量操作

(1)批量添加
//批量添加
   public void batchAdd(List<Object[]> batchList) {
       String sql="insert into ticket (id,name,author) values(?,?,?)";
       //批量添加 values (),(),()  对象这list的Object数组 o1,o2,o3
       int[] ints=jdbcTemplate.batchUpdate(sql,batchList);
       System.out.println(Arrays.toString(ints));
   }
	 List<Object[]> batchList=new ArrayList<Object[]>();
       Object[] o1={"5","Web"};
       Object[] o2={"6","大数据","2"};
       Object[] o3={"7","中间件","3"}; 
       batchList.add(o1);
       batchList.add(o2);
       batchList.add(o3);
       ticketService.batchAdd(batchList);
(2)批量删除
 //批量删除
 public void batchDelete(List<Object[]> batchList) {
     String sql="delete from ticket where id=?";
     int[] ints=jdbcTemplate.batchUpdate(sql,batchList);
     System.out.println(Arrays.toString(ints));
 }
(3)批量修改
   //批量修改
   public void batchUpdate(List<Object[]> batchList) {
       String sql="update ticket set name=?,author=? where id=?";
       int[] ints=jdbcTemplate.batchUpdate(sql,batchList);
       System.out.println(Arrays.toString(ints));
   }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值