首先 您需要有mysql数据库 然后创建这样一张表
然后 创建一个java项目 引入对应的Jar包
在src下创建一个包 叫 mydata 下面创建一个类 叫 user_list
参考代码如下
package mydata;
public class user_list {
private int user_id;
private String user_name;
private String user_post;
private int superior_id;
public int getUser_id() {
return user_id;
}
public void setUser_id(int user_id) {
this.user_id = user_id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getUser_post() {
return user_post;
}
public void setUser_post(String user_post) {
this.user_post = user_post;
}
public int getSuperior_id() {
return superior_id;
}
public void setSuperior_id(int superior_id) {
this.superior_id = superior_id;
}
}
这里大家应该有注意到 我们的 user_list 的属性 和 数据库中 user_list 表的字段 是一一对应的 一个实体类 代表一张表操作
然后 我们在src下创建一个包 叫 dao
在dao下创建一个接口 叫 BookDao
参考代码如下
package dao;
import mydata.user_list;
public interface BookDao {
void update(user_list user_list,int user_id);
void delete(int user_id);
}
这是一个接口 定义了两个抽象方法 分别对应
update 修改 接受两个参数 第一个是 user_list的实体 我们将根据实体内容修改数据 第二个 int 类型的用户di 我们将根据用户id确认具体修改哪一条数据
然后 我们写了接口 就要实现他
在dao目录下创建一个类 我这里叫 BookDaoImpl
参考代码如下
package dao;
import mydata.user_list;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
@Repository
public class BookDaoImpl implements BookDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void update(user_list user_list,int user_id) {
String sql = "UPDATE user_list SET user_name = ? WHERE user_id = ?;";
int hangm = jdbcTemplate.update(sql,user_list.getUser_name(),user_id);
System.out.println(hangm);
}
@Override
public void delete(int user_id) {
String sql = "delete FROM `user_list` WHERE user_id like ?;";
int hangm = jdbcTemplate.update(sql,user_id);
System.out.println(hangm);
}
}
首先 我们定义了一个JdbcTemplate 的实体对象 将通过它完成数据库操作
然后update 修改方法 我们写了一段修改的sql 修改一条数据的user_name等于问号 条件是 这条数据 user_id 要等于问号
然后我们调用 jdbcTemplate下的update操作数据库 update接受两个参数 第一个参数 是一个sql的字符串 后面的参数是一个可变参数 你在sql中用了几个问号 就有几个参数 这个问号 执行时 你一个问号 他就从你的可变参数中填上去
所以 简单理解 sql执行时是这样的
UPDATE user_list SET user_name = user_list.getUser_name() WHERE user_id = user_id
然后 delete代表删除 那个sql中的问号也是一样的理解方法
然后 在src下创建目录 叫 senvice
在下面创建一个类 叫
package senvice;
import dao.BookDao;
import mydata.user_list;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class BookService {
@Autowired
protected BookDao BookDao;
public void updateUser_list (user_list user_list,int user_id) {
BookDao.update(user_list,user_id);
}
public void deleteUser_list (int user_id) {
BookDao.delete(user_id);
}
}
我们再这里 声明了一个dao包下的BookDao 的对象 然后 编写了两个方法 分别调用了dao包下BookDao 的修改和删除方法
这是三级架构 是一种规范
在src下创建bean.xml配置文件 参考代码如下
<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 数据库连接池 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
destroy-method="close">
<property name="url" value="jdbc:mysql:///test" /><!--对应SQLyog里的数据库-->
<property name="username" value="root" /> <!-- 用户名 -->
<property name="password" value="root" /> <!-- 密码 -->
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
</bean>
<!-- JdbcTemplate对象 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!--注入dataSource属性-->
<property name="dataSource" ref="dataSource"></property>
</bean>
<context:component-scan base-package="senvice"></context:component-scan>
<context:component-scan base-package="dao"></context:component-scan>
</beans>
我们 配置文件 最下面 开启了 senvice和dao包的注解扫描 然后 上面的则都是数据库链接配置
要注意的是 jdbc:mysql:///要链接的数据库
例如 我是 jdbc:mysql:///test
链接test数据库
然后 username 代表用户名 如果没设置过 一般就是root password密码 没设置一般就没有 建议也搞成root
我们在src下创建测试类 试一下效果
测试类参考代码如下
import mydata.user_list;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import senvice.BookService;
public class text {
public static void main(String args[]) {
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
BookService bookService = context.getBean("bookService", BookService.class);
user_list user = new user_list();
user.setUser_name("刘峰");
bookService.updateUser_list(user,9);
}
}
这里 我们的逻辑 就是 改id为 9的数据 user_name 为刘峰
我们看一下数据库
目前 名称为9的是赵国公
那么 我们运行测试类 运行效果如下
控制台告诉我们成功了 jdbcTemplate.update返回了个1 说明 我们的这个sql 对一条数据生效了
我们到数据库中刷新表 并重新打开
可以看到 我们名称修改就完成了
然后来试删除 测试类代码更改如下
import mydata.user_list;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import senvice.BookService;
public class text {
public static void main(String args[]) {
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
BookService bookService = context.getBean("bookService", BookService.class);
user_list user = new user_list();
bookService.deleteUser_list(9);
}
}
这里 我们直接调用删除方法 传个9 进去 看sql语句 那就是把 id为9的数据删掉
运行结果如下
控制台还是报出运行成功 jdbcTemplate.update返回1 说明 我们的这个sql 对一条数据生效了
还是刷新表 在重新打开
这里 我们的数据就成功删掉了