Spring实现连接MySQL数据传输

步骤大概就是:连接MySQL,执行MySQL语句,生成数据与打印结果。

记得要先导入相关的 jar包到项目库中!!!

记得要先导入相关的 jar包到项目库中!!!

记得要先导入相关的 jar包到项目库中!!!

大概有:spring的基础包、commons-logging-1.2.jar、mysql-connector-java-5.1.45-bin.jar,版本可以自定。

1d1eec967aa0424187fc7f7bbf889d90.png  f2872f47d72d4cd88307279f8a9beaf1.png

 举个例子:

1.首先创建并配置.xml文件,实现连接数据库等功能。

    <!-- 指定需要扫描的包(包括子包),使注解生效 -->
    <context:component-scan base-package="jdbcBao.dao"/>
    <context:component-scan base-package="jdbcBao.service"/>

    <!-- 配置数据源 -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <!-- MySQL数据库驱动 -->
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <!-- 连接数据库的URL -->
        <property name="url" value="jdbc:mysql://localhost:3306/springtest?useUnicode=false&amp;useSSL=false&amp;characterEncoding=utf-8"/>
        <!-- 连接数据库的用户名 -->
        <property name="username" value="BLS"/>
        <!-- 连接数据库的密码 -->
        <property name="password" value="123456"/>
    </bean>

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

    <!-- 为数据源添加事务管理器 -->
    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <!-- 为事务管理器注册注解驱动 -->
    <tx:annotation-driven transaction-manager="txManager" />

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<MyUser> 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<MyUser> query(String sql, Object[] param) {
        RowMapper<MyUser> rowMapper = new BeanPropertyRowMapper<MyUser>(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();
    }
}

运行结果如下:

a6b0cef9be8b4c959f0ab3d7108d7a85.png

23471cf2b6d04c288b50ff055a8253e3.png

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值