spring-jdbc模板连接数据库(增删改查)

学生类Student,定义事务类接口IStudentService 以及实现的接口StudentImpl ,StudentImpl中有dao的方法,定义dao层及实现的接口StudentDaoImpl插入sql语句控制表单,spring配置文件applcation.xml,测试类mytest

mysql创建表单,加入mysql jar包以及  spring-jdbc-4.3.6.RELEASE.jar   spring-tx-4.3.6.RELEASE.jar。 掌握sql语句

package com.abc.beans;



public class Student {


private Integer id;
  private String name;
  private int age;
  
  
  public Student() {
super();
// TODO Auto-generated constructor stub
}
  
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}


public void setId(Integer id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;

}

public Integer getId() {
return id;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
}


}

package com.abc.service;


import java.util.List;


import com.abc.beans.Student;


public interface IStudentService {
void saveStudent(Student student);
void removeStudentById(int id);
void modifyStudent(Student student);
 
String findStudentNameById(int id) ;
List<String> findAllstudentNames();
 
Student findStudentById(int id) ;
List<Student> findAllStudents();
}

package com.abc.service;


import java.util.List;


import com.abc.beans.Student;
import com.abc.dao.IStudentDao;


public class StduentsImpl implements IStudentService {

                                                                                                      ps:由于要用到spring容器,在此创建属性使其连接到Dao层,dao层方法与IStudentService方法一样,只是改变名字
private IStudentDao dao;
                                                                                                     只不过dao层要链接数据库,用到sql语句,实现曾删改查。

public void setDao(IStudentDao dao) {
this.dao = dao;
}


public void saveStudent(Student student) {
dao.insertStudent(student);


}


public void removeStudentById(int id) {
dao.deleteStudentById(id);


}


public void modifyStudent(Student student) {
dao.updateStudent(student);


}


public String findStudentNameById(int id) {

return dao.selectStudentNameById(id);
}
public List<String> findAllstudentNames() {
// TODO Auto-generated method stub
return dao.selectAllstudentNames();
}



public Student findStudentById(int id) {
return dao.selectStudentById(id);
}


public List<Student> findAllStudents() {
return  dao.selectAllStudents();


}

}

package com.abc.dao;


import java.util.List;


import com.abc.beans.Student;


public interface IStudentDao {


void insertStudent(Student student);
void deleteStudentById(int id);
void updateStudent(Student student);
 
String selectStudentNameById(int id) ;
List<String> selectAllstudentNames();
 
Student selectStudentById(int id) ;
List<Student> selectAllStudents();

}

package com.abc.dao;


import java.util.List;


import org.springframework.jdbc.core.support.JdbcDaoSupport;


import com.abc.beans.Student;


public class StudentDaoImpl extends JdbcDaoSupport implements IStudentDao {
                                                                             既然要用jdbc模板,自然要用他的方法,所以继承jdbcDaoSupport   alt+?可以提示单词。

                                                                              此接口要链接他的源码,查看他的方法及其属性,因为spring容器要创建他们而不是StudentDaoImpl(继承)。

                                                                              

@Override
public void insertStudent(Student student) {
   String sql = "insert into student(name,age) values(?,?)";//sql语句
this.getJdbcTemplate().update(sql, student.getName(),student.getAge());

                                                                                                                                 
}


@Override
public void deleteStudentById(int id) {
String sql = "delete from student where id =?";
this.getJdbcTemplate().update(sql, id);


}


@Override
public void updateStudent(Student student) {
String sql ="update student set name=?,age=? where id=?  ";
this.getJdbcTemplate().update(sql, student.getName(),student.getAge(),student.getId());


}


@Override
public String selectStudentNameById(int id) {
/* 通过id查询名字     args为出租参数。getJdbcTemplate().queryForObject方法
         因为返回值是string,方法里填的是 String.class
*/

String sql="select name from student where id=?";
Object[] args ={id};
return this.getJdbcTemplate().queryForObject(sql,args,String.class);
}


public List<String> selectAllstudentNames() {
//查询所有学生   调用.getJdbcTemplate().queryForList   ,集合
String sql="select name from student ";

return this.getJdbcTemplate().queryForList(sql,String.class);
}



@Override
public Student selectStudentById(int id) {
//通过id查询学生,返回值为封装了student
//定义StudentRowMap())方法继承的RowMapper

String sql="select id,name,age from student where id=?";
Object[] args ={id};
return this.getJdbcTemplate().queryForObject(sql, args,new StudentRowMap());
}


@Override
public List<Student> selectAllStudents() {
String sql="select id,name,age from student  ";

return this.getJdbcTemplate().query(sql, new StudentRowMap());
}


}

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd">


<!-- 注册DataSource数据源四大 -->
<bean id="myDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql:///test" />
<property name="username" value="root" />
<property name="password" value="111" />
</bean>
       <!-- 注册jdbcTemplate -->


<bean id="myjdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="myDataSource" />
</bean>
     <!-- 注册Dao -->
<bean id="studentDao" class="com.abc.dao.StudentDaoImpl">
<property name="jdbcTemplate" ref="myjdbcTemplate" />


</bean>
     <!-- 注册 Service-->
<bean id="studentService" class="com.abc.service.StduentsImpl">
<property name="dao" ref="studentDao" />

</bean>

</beans>


编译过程其实是个倒叙的注册顺序  Service-dao-jdbcTenmplate-jdbcResource,    ps:所有class填的是实现类路径。。


package com.abc.test;


import java.util.List;


import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


import com.abc.beans.Student;
import com.abc.service.IStudentService;


public class Mytest {


private IStudentService service;


@Before
public void before() {
String config = "applicationContext.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(config);
service = (IStudentService) ac.getBean("studentService");
}


@Test
public void test01() {


Student student = new Student("ppp", 23);
service.saveStudent(student);
}


@Test
public void test02() {
service.removeStudentById(2);
}


@Test
public void test03() {
Student student = new Student("zzz", 11);
student.setId(1);
service.modifyStudent(student);
}


@Test
public void test04() {
String name = service.findStudentNameById(5);
System.out.println(name);
}


@Test
public void test05() {
List<String> names = service.findAllstudentNames();
for (String name : names) {
System.out.println(name);
}
}


@Test
public void test06() {
Student student = service.findStudentById(3);
System.out.println(student);
}


@Test
public void test07() {
List<Student> students = service.findAllStudents();
for (Student student : students) {
System.out.println(student);
}
}
}


Student [id=29, name=ppp, age=23]
Student [id=30, name=ppp, age=23]
Student [id=31, name=ppp, age=23]
Student [id=32, name=ppp, age=23]
Student [id=33, name=ppp, age=23]
Student [id=34, name=ppp, age=23]
Student [id=35, name=ppp, age=23]
Student [id=36, name=ppp, age=23]
Student [id=37, name=ppp, age=23]
Student [id=38, name=ppp, age=23]
Student [id=39, name=ppp, age=23]



















































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Spring Boot应用程序,使用JDBCTemplate获取数据库连接,进行增删改查操作,并将结果显示在网页上。 首先,我们需要在pom.xml文件添加以下依赖项: ```xml <dependencies> <!-- Spring Boot Starter JDBC --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- MySQL Connector --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies> ``` 接下来,我们需要在application.properties文件配置数据库连接信息: ```properties # 数据库连接信息 spring.datasource.url=jdbc:mysql://localhost:3306/testdb spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver # JDBCTemplate配置 spring.datasource.type=com.zaxxer.hikari.HikariDataSource spring.datasource.hikari.maximum-pool-size=5 spring.datasource.hikari.minimum-idle=2 spring.datasource.hikari.idle-timeout=60000 ``` 然后,我们可以创建一个User实体类,用于表示数据库的用户表: ```java public class User { private Long id; private String name; private Integer age; // getters and setters } ``` 接下来,我们需要创建一个UserDao类,用于操作数据库: ```java @Repository public class UserDao { @Autowired private JdbcTemplate jdbcTemplate; public void save(User user) { String sql = "insert into user(name, age) values(?, ?)"; jdbcTemplate.update(sql, user.getName(), user.getAge()); } public void update(User user) { String sql = "update user set name=?, age=? where id=?"; jdbcTemplate.update(sql, user.getName(), user.getAge(), user.getId()); } public void delete(Long id) { String sql = "delete from user where id=?"; jdbcTemplate.update(sql, id); } public User findById(Long id) { String sql = "select * from user where id=?"; return jdbcTemplate.queryForObject(sql, new Object[]{id}, new BeanPropertyRowMapper<>(User.class)); } public List<User> findAll() { String sql = "select * from user"; return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class)); } } ``` 最后,我们可以创建一个UserController类,用于处理HTTP请求并将结果显示在网页上: ```java @Controller public class UserController { @Autowired private UserDao userDao; @GetMapping("/") public String index(Model model) { List<User> userList = userDao.findAll(); model.addAttribute("userList", userList); return "index"; } @GetMapping("/add") public String add() { return "add"; } @PostMapping("/save") public String save(User user) { userDao.save(user); return "redirect:/"; } @GetMapping("/edit/{id}") public String edit(@PathVariable("id") Long id, Model model) { User user = userDao.findById(id); model.addAttribute("user", user); return "edit"; } @PostMapping("/update") public String update(User user) { userDao.update(user); return "redirect:/"; } @GetMapping("/delete/{id}") public String delete(@PathVariable("id") Long id) { userDao.delete(id); return "redirect:/"; } } ``` 在上面的代码,我们定义了五个方法来处理HTTP请求: - index方法用于显示所有用户信息; - add方法用于显示添加用户表单; - save方法用于保存用户信息; - edit方法用于显示编辑用户表单; - update方法用于更新用户信息; - delete方法用于删除用户信息。 最后,我们需要创建三个HTML模板文件,分别是index.html、add.html和edit.html,用于显示网页内容: index.html: ```html <!DOCTYPE html> <html> <head> <title>用户列表</title> </head> <body> <h1>用户列表</h1> <table border="1"> <tr> <th>ID</th> <th>Name</th> <th>Age</th> <th>Action</th> </tr> <tr th:each="user : ${userList}"> <td th:text="${user.id}"></td> <td th:text="${user.name}"></td> <td th:text="${user.age}"></td> <td> <a th:href="@{/edit/__${user.id}__}">编辑</a> <a th:href="@{/delete/__${user.id}__}">删除</a> </td> </tr> </table> <p><a href="/add">添加用户</a></p> </body> </html> ``` add.html: ```html <!DOCTYPE html> <html> <head> <title>添加用户</title> </head> <body> <h1>添加用户</h1> <form method="post" action="/save"> <p><label>Name: <input type="text" name="name"/></label></p> <p><label>Age: <input type="text" name="age"/></label></p> <p><input type="submit" value="Save"/></p> </form> <p><a href="/">返回</a></p> </body> </html> ``` edit.html: ```html <!DOCTYPE html> <html> <head> <title>编辑用户</title> </head> <body> <h1>编辑用户</h1> <form method="post" action="/update"> <input type="hidden" name="id" th:value="${user.id}"/> <p><label>Name: <input type="text" name="name" th:value="${user.name}"/></label></p> <p><label>Age: <input type="text" name="age" th:value="${user.age}"/></label></p> <p><input type="submit" value="Update"/></p> </form> <p><a href="/">返回</a></p> </body> </html> ``` 现在,我们可以运行应用程序,访问http://localhost:8080/,即可看到所有用户信息。我们还可以点击“添加用户”按钮来添加新用户,或者点击“编辑”按钮来更新用户信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值