JDBC-Druid增删改查

由于刚学完JDBC,所以来小练一下,通过Druid实现对数据库的增删改查操作

(现在是真正简单的纯数据库操作,等我学过前端,再做一个比较具体的!)

•数据库

新建一个数据库tb,创建brand表,有主键,品牌名,公司名,排序,描述,状态属性。

并插入三条信息(为防止主键id错乱,使用自动生成,即不写默认从1开始依次增加)

CREATE DATABASE  IF NOT EXISTS tb;
USE tb;

-- 建表
CREATE TABLE brand(
    id  INT PRIMARY KEY AUTO_INCREMENT, -- 主键,自动生成
    brand_name VARCHAR(20),             -- 品牌名
    company_name VARCHAR(20),           -- 公司名
    ordered INT,                        -- 排序
    description VARCHAR(100),           -- 商品描述
    statu INT                           -- 状态 0:禁用 1:启用
);

-- 添加数据
INSERT INTO brand (brand_name,company_name,ordered,description,statu) VALUES
("三只松鼠", "三只松鼠股份有限公司", 5, "好吃不上火", 0),
("华为", "华为有限公司", 100, "华为华为华为",1),
("小米", "小米科技有限公司", 50, "are you ok?",1);​​​​​​​

 

•代码

•创建品牌类

首先,先创建一个brand类(so easy),记得重写一下toString方法方便输出

package JDBCtest;

/*
 * 品牌
 */

public class Brand {

    // id 主键
    private int id;
    // 品牌名
    private String brand_name;
    // 公司名
    private String company_name;
    // 排序
    private int ordered;
    // 描述
    private String description;
    // 状态 0:禁用 1:启用
    private Integer statu;// 包装类默认为null,不会影响数据, 建议使用包装类

    public void setId(int id) {
        this.id = id;
    }

    public void setBrand_name(String brand_name) {
        this.brand_name = brand_name;
    }

    public void setCompany_name(String company_name) {
        this.company_name = company_name;
    }

    public void setOrdered(int ordered) {
        this.ordered = ordered;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public void setStatu(Integer statu) {
        this.statu = statu;
    }

    public int getId() {
        return id;
    }

    public String getBrand_name() {
        return brand_name;
    }

    public String getCompany_name() {
        return company_name;
    }

    public int getOrdered() {
        return ordered;
    }

    public String getDescription() {
        return description;
    }

    public Integer getStatu() {
        return statu;
    }

    @Override
    public String toString() {
        String s = "Brand{" + "id=" + id + ",brand_name=" + brand_name + ",company_name=" + company_name + ",ordered="
                + ordered + ",description" + description + ",status=" + statu + "}";
        return s;
    }
}

•增删改查操作

重头戏开始,其实四个操作代码差不多,主要是sql语句不同,具体步骤如下:

1. 加载Connection

•加载配置文件

•获取连接池对象

•获取数据库连接

2.Sql语句

3. 获取PreparedStatement对象

4. 设置参数

5. 执行Sql语句

6. 处理结果

7. 释放资源

•先以查询brand表全部数据为例:

上一篇博客已经给出加载Connection的代码,这里就不再多说。

使用PreparedStatement对象是为了防止SQL注入,也已经熟练使用了。

所以这个操作就是前几篇博客的一个综合运用。

查询全部 Select * from brand

    /*
     * 查询全部
     */
    public static void SelectAll() throws Exception {

        // 1.加载connection
        // 加载配置文件
        Properties prop = new Properties();
        prop.load(new FileInputStream("druid.properties"));
        // 获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        // 获取数据库连接
        Connection conn = dataSource.getConnection();

        // 2.SQL语句
        String sql = "Select * from brand";

        // 3.获取preparedStatement对象
        PreparedStatement pstmt = conn.prepareStatement(sql);

        // 4.设置参数
          //虽然这个查询不需要设置参数

        // 5.执行SQL
        ResultSet rs = pstmt.executeQuery();

        // 6.处理结果
        ArrayList<Brand> alist = new ArrayList<Brand>();
        while (rs.next()) {
            Brand b = new Brand();
            b.setId(rs.getInt(1));
            b.setBrand_name(rs.getString(2));
            b.setCompany_name(rs.getString(3));
            b.setOrdered(rs.getInt(4));
            b.setDescription(rs.getString(5));
            b.setStatu(rs.getInt(6));
            alist.add(b);
        }
        for (Brand b : alist) {
            System.out.println(b.toString());
        }

        // 7.释放资源
        rs.close();
        pstmt.close();
        conn.close();

    }

结果:

•添加数据:

和上述步骤相同,改变Sql语句,添加数据:Insert into brand(brand_name,company_name,ordered,description,statu) values(?,?,?,?,?)

注意id是自动生成,所以这里不写id(默认补充),从brand_name开始,接下来给preparedStatement对象使用setXxx()方法设置参数

    /*
     * 增
     */
    public void Addtest() throws Exception {
        // 1.加载connection
        // 加载配置文件
        Properties prop = new Properties();
        prop.load(new FileInputStream("druid.properties"));
        // 获取数据库连接池
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        // 获取conn
        Connection conn = dataSource.getConnection();

        // 2.SQL语句
        String sql = "Insert into brand(brand_name,company_name,ordered,description,statu) values(?,?,?,?,?)";

        // 3.获取pstmt
        PreparedStatement pstmt = conn.prepareStatement(sql);
        // 完善sql语句
        Scanner sc = new Scanner(System.in);

        String bname = sc.next();
        String cname = sc.next();
        int ordered = sc.nextInt();
        String description = sc.next();
        int statu = sc.nextInt();
        pstmt.setString(1, bname);
        pstmt.setString(2, cname);
        pstmt.setInt(3, ordered);
        pstmt.setString(4, description);
        pstmt.setInt(5, statu);

        // 4.执行sql
        pstmt.executeUpdate();
        SelectAll();

        // 5.释放资源
        pstmt.close();
        conn.close();
    }

例:添加一条(香飘飘,香飘飘,2,绕地球3圈,0)

再增一条(华米,华米,1,华为和小米,1)

查看数据库

•删除数据:

删除数据:delete from brand where id=?

这里是用id删除,也可以换成其他属性

/*
     * 删
     */
    public void DeleteTest() throws Exception {
        // 1.加载connection
        // 加载配置文件
        Properties prop = new Properties();
        prop.load(new FileInputStream("druid.properties"));
        // 获取数据库连接池
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        // 获取conn
        Connection conn = dataSource.getConnection();

        // 2.sql语句
        String sql = "delete from brand where id=?";

        // 3.创建pstmt
        PreparedStatement pstmt = conn.prepareStatement(sql);
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        pstmt.setInt(1, num);

        // 4.执行sql
        pstmt.executeUpdate();
        SelectAll();

        // 5.释放资源
        pstmt.close();
        conn.close();
    }

删除id=4

•模糊查询:

模糊查询我做的是品牌名的模糊查询,也可以改成其他或者多个属性的

模糊查询:Select * from brand where brand_name like ?

注意模糊查询时 %要放在setXxx()方法里!(这里我就错了,后来百度出来的....)

public void SelectTest() throws Exception {
        // 1.加载connection
        // 加载配置文件
        Properties prop = new Properties();
        prop.load(new FileInputStream("druid.properties"));
        // 获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        // 获取数据库连接
        Connection conn = dataSource.getConnection();

        // 2.SQL语句
        String sql = "Select * from brand where brand_name like ?";

        // 3.获取preparedStatement对象
        PreparedStatement pstmt = conn.prepareStatement(sql);

        // 4.设置参数
        Scanner sc = new Scanner(System.in);
        String bname = sc.next();
        pstmt.setString(1, "%" + bname + "%"); //注意这里
        // 5.执行SQL
        ResultSet rs = pstmt.executeQuery();

        // 6.处理结果
        ArrayList<Brand> alist = new ArrayList<Brand>();
        while (rs.next()) {
            Brand b = new Brand();
            b.setId(rs.getInt(1));
            b.setBrand_name(rs.getString(2));
            b.setCompany_name(rs.getString(3));
            b.setOrdered(rs.getInt(4));
            b.setDescription(rs.getString(5));
            b.setStatu(rs.getInt(6));
            alist.add(b);
        }
        for (Brand b : alist) {
            System.out.println(b.toString());
        }

        // 7.释放资源
        rs.close();
        pstmt.close();
        conn.close();
    }

查询:华

ok!✿✿ヽ(°▽°)ノ✿结束

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个简单的SSM框架的增删示例代码。假设您要操作的实体类为User,包含id、name和age三个属性: 1. 首先,在MyBatis的mapper文件中定义SQL语句,例如: ```xml <!-- 根据id询用户 --> <select id="getUserById" parameterType="int" resultType="User"> SELECT * FROM user WHERE id = #{id} </select> <!-- 询所有用户 --> <select id="getAllUsers" resultType="User"> SELECT * FROM user </select> <!-- 添加用户 --> <insert id="addUser" parameterType="User"> INSERT INTO user(name, age) VALUES(#{name}, #{age}) </insert> <!-- 根据id更新用户 --> <update id="updateUserById" parameterType="User"> UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id} </update> <!-- 根据id删除用户 --> <delete id="deleteUserById" parameterType="int"> DELETE FROM user WHERE id = #{id} </delete> ``` 2. 在Spring的配置文件中定义MapperScannerConfigurer,自动扫描mapper接口,并注入到Spring容器中: ```xml <!-- 配置MapperScannerConfigurer --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.example.mapper"/> </bean> ``` 3. 定义mapper接口,例如: ```java public interface UserMapper { User getUserById(int id); List<User> getAllUsers(); void addUser(User user); void updateUserById(User user); void deleteUserById(int id); } ``` 4. 在Spring的配置文件中定义SqlSessionFactoryBean,连接数据库并注入到Spring容器中: ```xml <!-- 配置SqlSessionFactoryBean --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> </bean> ``` 5. 在Spring的配置文件中定义DataSource,连接池管理数据库连接: ```xml <!-- 配置DataSource --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="url" value="jdbc:mysql://localhost:3306/test"/> <property name="username" value="root"/> <property name="password" value="123456"/> </bean> ``` 6. 在Spring的配置文件中定义事务管理器TransactionManager: ```xml <!-- 配置TransactionManager --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> ``` 7. 在Service层中注入Mapper接口,并实现增删的逻辑代码,例如: ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public User getUserById(int id) { return userMapper.getUserById(id); } @Override public List<User> getAllUsers() { return userMapper.getAllUsers(); } @Override public void addUser(User user) { userMapper.addUser(user); } @Override public void updateUserById(User user) { userMapper.updateUserById(user); } @Override public void deleteUserById(int id) { userMapper.deleteUserById(id); } } ``` 8. 在Controller层中处理用户请求,例如: ```java @Controller @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @RequestMapping("/get/{id}") @ResponseBody public User getUserById(@PathVariable("id") int id) { return userService.getUserById(id); } @RequestMapping("/add") @ResponseBody public String addUser(@RequestParam("name") String name, @RequestParam("age") int age) { User user = new User(); user.setName(name); user.setAge(age); userService.addUser(user); return "success"; } @RequestMapping("/update") @ResponseBody public String updateUserById(@RequestParam("id") int id, @RequestParam("name") String name, @RequestParam("age") int age) { User user = new User(); user.setId(id); user.setName(name); user.setAge(age); userService.updateUserById(user); return "success"; } @RequestMapping("/delete/{id}") @ResponseBody public String deleteUserById(@PathVariable("id") int id) { userService.deleteUserById(id); return "success"; } @RequestMapping("/list") @ResponseBody public List<User> getAllUsers() { return userService.getAllUsers(); } } ``` 以上便是一个简单的SSM框架的增删示例代码,希望能够对您有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值