发表于: 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空间很容易搞错,各个类相互调用关系也显得很繁杂。
评论