博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring(三)
阅读量:7273 次
发布时间:2019-06-29

本文共 9849 字,大约阅读时间需要 32 分钟。

hot3.png

1、概述

100452_GV3d_2320342.png

100539_Zzge_2320342.png

2、Spring持久层

100852_sxuX_2320342.png

100947_fKAo_2320342.png101040_Vh9Z_2320342.png101120_vTFx_2320342.png101201_4QqF_2320342.png101359_6RQq_2320342.png102657_Xiwg_2320342.jpeg

 103933_zWDa_2320342.png104402_EvdL_2320342.png

104853_fiWR_2320342.png104941_QnJ9_2320342.png105846_Fv46_2320342.png

 110102_YJan_2320342.png

 111406_9Jaf_2320342.png

样例:

Sort.java

package com.ljb.entity;public class Sort {  private int id; private String sortName; public int getId() {  return id; } public void setId(int id) {  this.id = id; } public String getSortName() {  return sortName; } public void setSortName(String sortName) {  this.sortName = sortName; }}

ISortDao.java

package com.ljb.dao;import com.ljb.entity.Sort;public interface ISortDao { public Sort findById(Integer id);}

SortDaoImpl.java

package com.ljb.dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import javax.sql.DataSource;import com.ljb.entity.Sort;public class SortDaoImpl implements ISortDao { private DataSource dataSource;   public DataSource getDataSource() {  return dataSource; } public void setDataSource(DataSource dataSource) {  this.dataSource = dataSource; } @Override public Sort findById(Integer id) {  Connection conn= null;  PreparedStatement ps = null;  ResultSet rs = null;  try {   conn = dataSource.getConnection();   ps = conn.prepareStatement("select * from es_sort where id=?");   ps.setInt(1, id);   rs = ps.executeQuery();      Sort sort = new Sort();   if (rs.next()) {    sort.setId(rs.getInt("id"));    sort.setSortName(rs.getString("sortname"));   }   return sort;  } catch (SQLException e) {   e.printStackTrace();  } finally {   try {    if (rs != null) {     rs.close();    }    if (ps != null) {     ps.close();    }    if (conn != null) {     conn.close();    }   } catch (SQLException e) {    e.printStackTrace();   }  }  return null; }}

applicationContext.xml

     
       
          
              
com.mysql.jdbc.Driver
                    
              
jdbc:mysql://localhost:3306/shopping
                    
              
root
                    
              
root
                      
          
          

Test.java

 package com.ljb.test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.ljb.dao.ISortDao;import com.ljb.entity.Sort;public class Test { /**  * @param args  */ public static void main(String[] args) {  ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");  ISortDao sortDao = (ISortDao)context.getBean("sortDao");  Sort sort = sortDao.findById(2);  System.out.println("编号"+ sort.getId() + "类名"+ sort.getSortName()); }}

执行结果:

编号2类名玩具类

161833_uj7Z_2320342.png

3、JDBCTemplate

163136_PHuU_2320342.png

163217_CrYm_2320342.png

JdbcTemplateSortDaoImpl.java

package com.ljb.dao;import java.util.Iterator;import java.util.List;import java.util.Map;import javax.sql.DataSource;import org.springframework.jdbc.core.JdbcTemplate;import com.ljb.entity.Sort;public class JdbcTemplateSortDaoImpl implements ISortDao { private JdbcTemplate jdbcTemplate;  /**  * 注入数据源,创建JdbcTemplate  * @param dataSource  */ public void setDataSource(DataSource dataSource) {  jdbcTemplate = new JdbcTemplate(dataSource); } @Override public Sort findById(Integer id) {  List sortMapList = jdbcTemplate.queryForList("select * from es_sort where id="+id.intValue());  for (Iterator it = sortMapList.iterator(); it.hasNext();) {   Map sortMap = it.next();      Sort sort = new Sort();   sort.setId((Integer)sortMap.get("id"));   sort.setSortName((String)sortMap.get("sortname"));      return sort;  }  return null; }}

applicationContext.xml

          
      

Test.java

package com.ljb.test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.ljb.dao.ISortDao;import com.ljb.entity.Sort;public class Test { /**  * @param args  */ public static void main(String[] args) {  ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");  ISortDao sortDao = (ISortDao)context.getBean("sortDao");  Sort sort = sortDao.findById(3);  System.out.println("编号"+ sort.getId() + "类名"+ sort.getSortName()); }}

执行结果:

编号3类名手机‘苹果’类

113505_Sfog_2320342.jpeg

 114059_CPFP_2320342.png

 JdbcTemplateSortDaoImpl.java

@Override public void add(Sort sort) {  jdbcTemplate.update("insert into es_sort values (?,?)",new Object[]{sort.getId(),sort.getSortName()}); }

Test.java

package com.ljb.test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.ljb.dao.ISortDao;import com.ljb.entity.Sort;public class Test { /**  * @param args  */ public static void main(String[] args) {  ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");  ISortDao sortDao = (ISortDao)context.getBean("sortDao");//  Sort sort = sortDao.findById(3);//  System.out.println("编号"+ sort.getId() + "类名"+ sort.getSortName());  Sort sort = new Sort();  sort.setId(7);  sort.setSortName("玻璃制品");  sortDao.add(sort); }}

144309_iK5A_2320342.png

 145541_GnJ2_2320342.jpeg

 150551_F4sX_2320342.png

 TestBatch.java

package com.ljb.test;import java.sql.PreparedStatement;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import javax.sql.DataSource;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.jdbc.core.BatchPreparedStatementSetter;import org.springframework.jdbc.core.JdbcTemplate;public class TestBatch { public static int count = 20; /**  * @param args  */ public static void main(String[] args) {  ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");  DataSource dataSource = (DataSource) context.getBean("dataSource");  JdbcTemplate jt = new JdbcTemplate(dataSource);    String create_sql = "create table if not exists person(id int(10) primary key auto_increment,name varchar(20))";  jt.execute(create_sql);  System.out.println("执行完毕");    String batch_sql = "insert into person values(?,?)";    final List ids = new ArrayList();  final List names = new ArrayList();    for (int i = 0 ; i < count; i++ ) {   ids.add(i+1);   names.add("name"+(i+1));  }    BatchPreparedStatementSetter bps = new BatchPreparedStatementSetter() {      @Override   public void setValues(PreparedStatement ps, int index) throws SQLException {    ps.setInt(1, (Integer)ids.get(index));    ps.setString(2, (String)names.get(index));   }      @Override   public int getBatchSize() {    return count;   }  };    jt.batchUpdate(batch_sql, bps); }}

160806_bdQf_2320342.png

 4、JdbcTemplate以对象方式操作数据库

162025_biNY_2320342.png

 162218_VPEm_2320342.png162256_BVND_2320342.png162355_P8ar_2320342.png

162629_fSH4_2320342.png

162817_C8Si_2320342.png162907_yORk_2320342.png163153_jmtL_2320342.png163241_6525_2320342.png163549_IrGM_2320342.png

163819_hETg_2320342.png

163856_j774_2320342.png104910_pRmD_2320342.png

104922_KYTb_2320342.png

样例:

PersonFunction.java

package com.ljb.jdbc.object;import javax.sql.DataSource;import org.springframework.jdbc.object.SqlFunction;public class PersonFunction extends SqlFunction { public PersonFunction(DataSource ds) {  super(ds,"select count(*) from person");  compile(); }}

PersonQuery.java

package com.ljb.jdbc.object;import java.sql.ResultSet;import java.sql.SQLException;import javax.sql.DataSource;import org.springframework.jdbc.object.MappingSqlQuery;import com.ljb.entity.Person;public class PersonQuery extends MappingSqlQuery { public PersonQuery (DataSource ds) {  super(ds,"select * from person");  compile(); }  @Override protected Object mapRow(ResultSet rs, int arg1) throws SQLException {  Person p = new Person();  p.setId(rs.getInt("id"));  p.setName(rs.getString("name"));    return p; }}

PersonUpdate.java

package com.ljb.jdbc.object;import java.sql.Types;import javax.sql.DataSource;import org.springframework.jdbc.object.SqlUpdate;public class PersonUpdate extends SqlUpdate { public PersonUpdate (DataSource ds) {  super(ds,"insert into person values(?,?)");  int[] types = {Types.INTEGER,Types.VARCHAR};  setTypes(types);  compile(); }}

IPersonDao.java

package com.ljb.jdbc.object.dao;import java.util.List;import com.ljb.entity.Person;public interface IPersonDao { public List findAll ();  public void update (Person p);  public int getCount();}

ObjectJdbcTemplatePersonDaoImpl.java

package com.ljb.jdbc.object.dao;import java.util.List;import javax.sql.DataSource;import com.ljb.entity.Person;import com.ljb.jdbc.object.PersonFunction;import com.ljb.jdbc.object.PersonQuery;import com.ljb.jdbc.object.PersonUpdate;public class ObjectJdbcTemplatePersonDaoImpl implements IPersonDao { private PersonFunction pf; private PersonQuery pq; private PersonUpdate pu;  public void setDataSource (DataSource ds) {  pf = new PersonFunction(ds);  pq = new PersonQuery(ds);  pu = new PersonUpdate(ds); }  @Override public List findAll() {  return pq.execute(); } @Override public void update(Person p) {  pu.update(new Object[]{p.getId(),p.getName()}); } @Override public int getCount() {  return pf.run(); }}

TestObject.java

package com.ljb.jdbc.object.test;import java.util.Iterator;import java.util.List;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.ljb.entity.Person;import com.ljb.jdbc.object.dao.IPersonDao;public class TestObject { /**  * @param args  */ public static void main(String[] args) {  ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");  IPersonDao personDao = (IPersonDao) context.getBean("personDao");  List persons = personDao.findAll();    Person p = new Person();  p.setId(21);  p.setName("jdbc操作对象");  personDao.update(p);    System.out.println("记录总数:"+personDao.getCount());    for (Iterator it = persons.iterator();it.hasNext();) {   Person temp = (Person) it.next();   System.out.println("编号:"+temp.getId()+",姓名:"+temp.getName());  } }}

applicationContext.xml

          
      

执行结果:

记录总数:21

编号:1,姓名:name1
编号:2,姓名:name2
编号:3,姓名:name3
编号:4,姓名:name4
编号:5,姓名:name5
编号:6,姓名:name6
编号:7,姓名:name7
编号:8,姓名:name8
编号:9,姓名:name9
编号:10,姓名:name10
编号:11,姓名:name11
编号:12,姓名:name12
编号:13,姓名:name13
编号:14,姓名:name14
编号:15,姓名:name15
编号:16,姓名:name16
编号:17,姓名:name17
编号:18,姓名:name18
编号:19,姓名:name19
编号:20,姓名:name20

数据库:

154104_GFI0_2320342.png

 

转载于:https://my.oschina.net/u/2320342/blog/470503

你可能感兴趣的文章
日志及参数的乱码问题
查看>>
自定义广播
查看>>
UWP开发入门(十五)——在FlipView中通过手势操作图片
查看>>
大战设计模式【2】—— 观察者模式
查看>>
一个完整的Node.js RESTful API
查看>>
tornado源码分析-模块介绍
查看>>
高性能 Lua 技巧(译)
查看>>
百度地图手机端单触点单击和长按事件,解决部分手机(小米手机)地图单击事件失效,多触点、拖动依然触发长按的bug...
查看>>
lua------------------Unity3D研究院编辑器之打开unity不可识别的文件(十三)
查看>>
【转】windows 控制台cmd乱码的解决办法
查看>>
JavaWEB开发一些小的思想与功能小记
查看>>
wmiprvse.exe cpu占用高怎么解决
查看>>
一张图讲清楚TCP流量控制
查看>>
GC日志分析
查看>>
java线程同步方法,方法块差别
查看>>
【Java知识点专项练习】之 接口和抽象类的区别
查看>>
Docker 常用命令
查看>>
linux添加新磁盘和创建分区
查看>>
Nginx配置文件(nginx.conf)配置具体解释
查看>>
Android中如何在代码中设置View的宽和高?
查看>>