1. 程式人生 > >10.spring:常用的資料庫程式碼.....(不長使用瞭解即可)

10.spring:常用的資料庫程式碼.....(不長使用瞭解即可)

測試程式碼:
ApplicationContext ctx = new ClassPathXmlApplicationContext("JDBC.xml");
DataSource datasource = (DataSource)ctx.getBean("dataSource",DataSource.class);
//測試能否連上
//System.out.println(datasource);

JdbcTemplate jdbcTemplate = (JdbcTemplate) ctx.getBean("jdbcTemplate");

//執行update
//String sql = "update student set sname=? where id =?";
//jdbcTemplate.update(sql, "MrChengs",3);
String sql = "update student set sname = ? where id = ?";
jdbcTemplate.update(sql,"Mc",4 );

//批量更新:可以執行的目標方法insert update delete
//batchArgs:是Object[] 事物List型別,因為需要修改一條Object的陣列,那麼多條就需要多個數組
//String sql = "insert student(sname,sclass) values(?,?)";
//List<Object []> batchArgs = new ArrayList<>();
//batchArgs.add(new Object []{"Rui",1221});
//batchArgs.add(new Object []{"Ruis",1212});
//jdbcTemplate.batchUpdate(sql, batchArgs);
String sql1 = "insert into student(sname,sclass) values(?,?)";
List<Object []> batchArgs = new ArrayList<Object []>();
batchArgs.add(new Object [] {"asd",12});
batchArgs.add(new Object [] {"qwe",321});
jdbcTemplate.batchUpdate(sql1, batchArgs);

//從資料庫中獲取一條記錄,實際得到的是一個物件
//queryForObject(String sql, Object[] args, RowMapper<T> rowMapper)
//其中的RowMapper指定如何去對映結果集的行,常用的實現類為BeanPropertyRowMapper
//使用SQL中的列的別名完成列名和屬性別名的對映
//不支援級聯屬性:jdbcTemplate到底是jdbc的小工具,而不是ORM框架
//String sql = "select * from student where id =?";
//RowMapper<Student> rowMapper = new BeanPropertyRowMapper<Student>(Student.class);
//Student student = jdbcTemplate.queryForObject(sql, rowMapper, 3);
//System.out.println(student);
String sql2 = "select * from student where id = ?";
RowMapper<Student> rowMapper = new BeanPropertyRowMapper<Student>();
Student stu = jdbcTemplate.queryForObject(sql2, rowMapper);

//查到實體類的集合
//.query(String sql, RowMapper<Student> rowMapper, Object... args)
//String sql = "select * from student where id < ?";
//RowMapper<Student> rowMapper = new BeanPropertyRowMapper<Student>(Student.class);
//List<Student> stu = jdbcTemplate.query(sql, rowMapper,10);
//System.out.println(stu);

//獲取單個列資料的值
//queryForObject(String sql, Class<Long> requiredType)
//String sql = "select count(id) from student";
//long count = jdbcTemplate.queryForObject(sql, Long.class);
//System.out.println(count);

///////////////////////////////////////////////////////////////////
//具名引數
//NamedParameterJdbcTemplate
//可以為引數起名字,引數多的情況下,這種方法的穩定正確性
NamedParameterJdbcTemplate namedParameterJdbcTemplate = (NamedParameterJdbcTemplate) ctx.getBean("namedParameterJdbcTemplate");

//.update(String sql, SqlParameterSource paramSource)
//String sql = "insert into student(sname,sclass) values(:sname,:sclass)";
//Map<String, Object> paramMap = new HashMap<String, Object>();
//paramMap.put("sname", "jack");
//paramMap.put("sclass", 3424);
//namedParameterJdbcTemplate.update(sql, paramMap);

//update(String sql, SqlParameterSource paramSource)
//String sql = "insert into student(sname,sclass) values(:sname,:sclass)";
//Student stu = new Student();
//stu.setSname("Tom");
//stu.setSclass(0000);
//SqlParameterSource paramSource = new BeanPropertySqlParameterSource(stu);
//namedParameterJdbcTemplate.update(sql, paramSource);



//事務簡介
//用來確保資料的完整性和一致性
//他們被當作一個獨立的單元,要麼全部起作用,要麼全部不起作用
//事物的四個特性
//-->原子性,一致性,隔離性,永續性

//從不同的事物管理機制API中抽取了一整套事物機制,開發人員不必瞭解底層的事物的Api,就可以利用這些事物管理機制
//有了這些事物管理機制,事物管理程式碼就能獨立於特定的事物技術了

xml檔案的配置:

<bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
  <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  <property name="url" value="jdbc:mysql://127.0.0.1:3307/shijian" />
  <property name="username" value="root" />
  <property name="password" value="1234" />
</bean>

<!-- 配置Spring的JdbcTemplate -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
  <property name="dataSource" ref="dataSource"></property>
</bean>

<!--namedParameterJdbcTemplate具名引數,可以使用具名引數,其沒有無參的構造器,必須為其建構函式指定引數 -->
  <bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate

">
  <constructor-arg ref="dataSource" ></constructor-arg>
</bean>