发表于: 2017-09-19 19:39:02

1 759


今天完成事情:

一、学习使用IntelliJ IDEA 2017.2.3 x64 开发工具完成任务一第17小节。

1.jdbcTemplate连接数据库

(1)数据库采用之前创建的修真院线下表明帖如下

mysql> desc user;

+----------+--------------+------+-----+---------+-------+

| Field    | Type         | Null | Key | Default | Extra |

+----------+--------------+------+-----+---------+-------+

| id       | int(11)      | NO   | PRI | NULL    |       |

| name     | varchar(255) | YES  | MUL | NULL    |       |

| qqNum    | varchar(255) | YES  |     | NULL    |       |

| type     | varchar(255) | YES  |     | NULL    |       |

| college  | varchar(255) | YES  |     | NULL    |       |

| stuNum   | int(11)      | YES  |     | NULL    |       |

| staDay   | date         | YES  |     | NULL    |       |

| url      | varchar(255) | YES  |     | NULL    |       |

| ambition | varchar(255) | YES  |     | NULL    |       |

| senior   | varchar(255) | YES  |     | NULL    |       |

| info     | varchar(255) | YES  |     | NULL    |       |

+----------+--------------+------+-----+---------+-------+

11 rows in set (0.00 sec)

(2)在idea中创建项目task,用maven-webapp模板,pom.xml文件添加依赖包

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.yiibai</groupId>
 <artifactId>fistapp</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <packaging>jar</packaging>
 <name>Student</name>
 <url>http://maven.apache.org</url>
 <dependencies>
   <dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>3.8.1</version>
     <scope>test</scope>
   </dependency>
   <dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>5.1.40</version>
   </dependency>
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-jdbc</artifactId>
     <version>4.1.0.RELEASE</version>
   </dependency>
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-context</artifactId>
     <version>4.1.4.RELEASE</version>
   </dependency>
   <dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>5.1.40</version>
   </dependency>
   <dependency>
     <groupId>org.mybatis</groupId>
     <artifactId>mybatis</artifactId>
     <version>3.1.1</version>
   </dependency>
 </dependencies>
</project>

(3)整个项目的文件结构目录如下


(4)DAO包下主要建User接口用来访问数据库及相关操作的抽象方法。

package DAO;
import jdbcTemplate.Userbean;
import javax.sql.DataSource;
import java.util.*;    
public interface User {
//初始化数据库
   public void setDateSource(DataSource ds);

   //插入数据
   public void create(int id,String name);

   public User getuser(int id);

   //更新数据
   public void update(String name , String url);


   //删除数据
   public void delete(int id);

   //查询数据
   public List<Userbean> allusers();


}

(5)Userbean文件主要是定义数据库中的字段及set和get方法

package jdbcTemplate;
import java.util.Date;
public class Userbean {
private int id;
   private String name;
   private String qqNum;
   private String type;
   private String college;
   private String stuNum;
   private Date staDay;
   private String url;
   private String ambition;
   private String senior;
   private String info;
   public int getId() {
return id;
   }

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

public String getName() {
return name;
   }

public void setName(String name) {
this.name = name;
   }

public String getQqNum() {
return qqNum;
   }

public void setQqNum(String qqNum) {
this.qqNum = qqNum;
   }

public String getType() {
return type;
   }

public void setType(String type) {
this.type = type;
   }

public String getCollege() {
return college;
   }

public void setCollege(String college) {
this.college = college;
   }

public String getStuNum() {
return stuNum;
   }

public void setStuNum(String stuNum) {
this.stuNum = stuNum;
   }

public Date getStaDay() {
return staDay;
   }

public void setStaDay(Date staDay) {
this.staDay = staDay;
   }

public String getUrl() {
return url;
   }

public void setUrl(String url) {
this.url = url;
   }

public String getAmbition() {
return ambition;
   }

public void setAmbition(String ambition) {
this.ambition = ambition;
   }

public String getSenior() {
return senior;
   }

public void setSenior(String senior) {
this.senior = senior;
   }

public String getInfo() {
return info;
   }

public void setInfo(String info) {
this.info = info;
   }
}

(6)UserjdbcTemplate主要实现User接口中声明的方法。

package jdbcTemplate;
import java.util.List;
import DAO.User;
import org.springframework.jdbc.core.JdbcTemplate;

import javax.sql.DataSource;

public  class UserJdbcTemplate implements User{
private DataSource dateSource;
   private JdbcTemplate jdbcTemplateuser;
   //连接数据库
   public void setDateSource(DataSource dataSource){
this.dateSource=dataSource;
       this.jdbcTemplateuser=new JdbcTemplate(dataSource);
   }


//插入表数据
   public void create(int id ,String name){
String sql= "insert into user(id ,name)values(?,?)";
       jdbcTemplateuser.update(sql,id,name);
       System.out.println("创建记录:ID="+id+" 姓名:"+name);
       return;
   }

//更新数据
   public void update(String name,String url){
String sql="update user set url=? where name=?";
       jdbcTemplateuser.update(sql,url,name);
       System.out.println("更新数据:"+name +" url"+url);
       return;
   }
//删除数据
   public void delete(int id){
String sql="delete from user where id=?";
       jdbcTemplateuser.update(sql,id);
   }
//查询数据
   public List<Userbean> allusers(){
String sql="select * from user";
       List<Userbean>aa=jdbcTemplateuser.query(sql, new UserMapper());
       return aa;
   }
//获取用户

   public User getuser(int id) {
return null;
   }
}

(7)UserMapper主要定义Java程序中变量和数据库中的字段映射关系。

package jdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;

public  class UserMapper implements RowMapper<Userbean> {
public Userbean mapRow(ResultSet rs, int rowNum) throws SQLException{
Userbean one= new Userbean();
       one.setId(rs.getInt("id"));
       one.setName(rs.getString("name"));
       one.setUrl(rs.getString("url"));
       return one;
   }
}

(8)beans.xml文件定义数据库的连接以及jdbcTemplate接口的定义

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

   <!-- Initialization for data source -->
   <bean id="dataSource"
         class="org.springframework.jdbc.datasource.DriverManagerDataSource">
       <property name="driverClassName" value="com.mysql.jdbc.Driver" />
       <property name="url" value="jdbc:mysql://localhost:3306/task" />
       <property name="username" value="root" />
       <property name="password" value="1234" />
   </bean>

   <!-- Definition for userJDBCTemplate bean -->

   <bean id="userJdbcTemplate" class="jdbcTemplate.UserJdbcTemplate">
       <property name="dateSource" ref="dataSource" />
   </bean>

</beans>

(9)编写Test文件实现数据库的连接操作,这里主要以查询为主

package main;
import jdbcTemplate.UserJdbcTemplate;
import jdbcTemplate.Userbean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;
public class Test {
public static void main(String[] args){
ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
       UserJdbcTemplate userJdbcTemplate =(UserJdbcTemplate)context.getBean("userJdbcTemplate");
       /*
       //插入数据
       System.out.println("------------插入表数据记录--------------");
       userJdbcTemplate.create(100,"allen");             */

       //更新数据
       System.out.println("-----------更新数据--------------------");
       userJdbcTemplate.update("allen","www.baidu.com");

       /*删除数据
       System.out.println("------------删除数据--------------------");
       userJdbcTemplate.delete(100);
       */
       //查询数据所有记录
       System.out.println("-----------查询数据---------------------");
       List<Userbean> users=userJdbcTemplate.allusers();
       for(Userbean aa:users ){
System.out.print("ID:"+aa.getId()+"\t");
           System.out.print("Name:"+aa.getName()+"\t");
           System.out.println("Url:"+aa.getUrl());
       }
}
}

运行结果:

ID:1 Name:姚远 Url:http://www.jnshu.com/daily/29770?dailyType=others&total=8&page=1&uid=14229&sort=0&orderBy=3

ID:2 Name:张锦润 Url:http://www.jnshu.com/daily/31081#reply

ID:3 Name:高琳翔 Url:http://www.jnshu.com/daily/31066?dailyType=others&total=20&page=2&uid=14241&sort=0&orderBy=3

ID:4 Name:马正 Url://www.jnshu.com/daily/33886?dailyType=others&total=8&page=1&uid=16318&sort=0&orderBy=3

ID:5 Name:邓静 Url:http://www.jnshu.com/daily/26575?dailyType=others&total=60&page=14&uid=10663&sort=0&orderBy=3

ID:100 Name:allen Url:www.baidu.com

2.mybatis连接数据库

(1)这里主要贴一下项目文件目录

运行结果:

============= Userbean[1]=================

Userbean Id: 1

Userbean Name: 姚远

Userbean Website: http://www.jnshu.com/daily/29770?dailyType=others&total=8&page=1&uid=14229&sort=0&orderBy=3

============= Userbean[2]=================

Userbean Id: 2

Userbean Name: 张锦润

Userbean Website: http://www.jnshu.com/daily/31081#reply

============= Userbean[3]=================

Userbean Id: 3

Userbean Name: 高琳翔

Userbean Website: http://www.jnshu.com/daily/31066?dailyType=others&total=20&page=2&uid=14241&sort=0&orderBy=3

============= Userbean[4]=================

Userbean Id: 4

Userbean Name: 马正

Userbean Website: //www.jnshu.com/daily/33886?dailyType=others&total=8&page=1&uid=16318&sort=0&orderBy=3

============= Userbean[5]=================

Userbean Id: 5

Userbean Name: 邓静

Userbean Website: http://www.jnshu.com/daily/26575?dailyType=others&total=60&page=14&uid=10663&sort=0&orderBy=3

============= Userbean[6]=================

Userbean Id: 100

Userbean Name: allen

Userbean Website: www.baidu.com

---------结束-------------

具体的代码就不贴出来了,篇幅太长。 mybatis主要把数据库的连接,增删改查操作写到了.xml文件里,所以它的大部分工作在于配置.xml文件,Java接口也不需要写implement实现类。

明天的计划:

1.学习单元测试,在学习spring框架。

遇到的问题:

1.在idea软件里默认的.xml配置文件是要放到src/main/resources文件下的,不然会报错,找不到.xml文件。

收获;

    jdbcTemplate和mybatis两种方式来连接数据的他们的本质过程没有区别,都是要先连接数据库,然后操作数据库,然后返回数据大致是一样的过程。两者在实现的过程中有所不同,jdbcTemplate它是把JAVA中jdbc的操作流程进一步进行封装,把固定不变的操作二次封装成一个接口,然后程序员只要关注SQL语句的实现及数据映射关系。而mybatis则这这方便有所区别,它是把基本的设置写入.xml文件里,然后提供外部的接口和方法等来实现数据库中数据的直接反馈。这样的好处是基本上不需要改动Java源文件和接口,只需要配置.xml文件即可,但是这也同样带来一个问题,这样做导致.xml文件的配置很复杂,namespace空间很容易搞错,各个类相互调用关系也显得很繁杂。



返回列表 返回列表
评论

    分享到