步骤大概就是:连接MySQL,执行MySQL语句,生成数据与打印结果。
记得要先导入相关的 jar包到项目库中!!!
记得要先导入相关的 jar包到项目库中!!!
记得要先导入相关的 jar包到项目库中!!!
大概有:spring的基础包、commons-logging-1.2.jar、mysql-connector-java-5.1.45-bin.jar,版本可以自定。
举个例子:
1.首先创建并配置.xml文件,实现连接数据库等功能。
2.在实体层entity包中创建实体类MyUser,并完善其属性方法:
package jdbcBao.entity;
public class MyUser {
private Integer uid;
private String uname;
private String usex;
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUsex() {
return usex;
}
public void setUsex(String usex) {
this.usex = usex;
}
//省略set和get方法
public String toString() {
return "myUser [uid=" + uid +", uname=" + uname + ", usex=" + usex + "]";
}
}
3.在数据访问层dao包创建TestDao接口和TestDaoImpl类(注解):
package jdbcBao.dao;
import java.util.List;
import jdbcBao.entity.MyUser;
public interface TestDao {
public int update(String sql, Object[] param);
public List query(String sql, Object[] param);
}
package jdbcBao.dao;
import jdbcBao.entity.MyUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository //数据访问层
public class TestDaoImpl implements TestDao{
@Autowired //自动填充
//使用配置类中的JDBC模板
private JdbcTemplate jdbcTemplate;
/**
* 更新方法,包括添加、修改、删除
* param为 sql 中的参数,如通配符 ?
*/
@Override
public int update(String sql, Object[] param) {
return jdbcTemplate.update(sql, param);
}
/**
* 查询方法
* param为 sql 中的参数,如通配符 ?
*/
@Override
public List query(String sql, Object[] param) {
RowMapper rowMapper = new BeanPropertyRowMapper(MyUser.class);
return jdbcTemplate.query(sql, rowMapper);
}
}
4.在业务逻辑层service包创建TestService接口和TestServiceImpl类(注解):
package jdbcBao.service;
public interface TestService {
public void testJDBC();
}
package jdbcBao.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import jdbcBao.dao.TestDao;
@Service //业务逻辑层
public class TestServiceImpl implements TestService{
@Autowired
public TestDao testDao;
@Override
public void testJDBC () {
String insertSql = "insert into user values(null,?,?)";
//数组param的值与insertSql语句中?一一对应
Object param1[] = {"薛之谦", "男"};
Object param2[] = {"古力娜扎", "女"};
Object param3[] = {"肖战", "男"};
Object param4[] = {"赵丽颖", "女"};
String insertSql1 = "insert into user values(?,?,?)";
Object param5[] = {1,"刘亦菲", "女"};
Object param6[] = {1,"那英", "女"};
try {
//添加用户
testDao.update(insertSql, param1);
testDao.update(insertSql, param2);
testDao.update(insertSql, param3);
testDao.update(insertSql, param4);
System.out.println("添加用户成功!");
//添加两个ID相同的用户,出现唯一性约束异常,使事务回滚。
testDao.update(insertSql1, param5);
testDao.update(insertSql1, param6);
System.out.println("事务回滚完成!");
} catch (Exception e) {
System.out.println("主键重复(异常),事务回滚。");
//TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
}
}
5.在测试test包中创建TestJDBC类:
package jdbcBao.test;
import jdbcBao.service.TestService;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestJDBC {
public static void main(String[] args) {
ClassPathXmlApplicationContext cpxac = new ClassPathXmlApplicationContext("applicationContext.xml");
TestService t1 = (TestService) cpxac.getBean("testServiceImpl");
t1.testJDBC();
}
}
运行结果如下:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)