发表于: 2017-09-17 17:39:49

3 733


今天完成的任务


关于任务一的总结


1.mysqls&navicat


mysql是数据库的一种,navicat是通过可视化的界面管理mysql的工具

配置好mysql后可以在cmd中通过

net start mysql #启动mysql服务      net stop mysql  #关闭mysql服务


mysql可以通过相应的sql语句进行操作,这些sql语句也是以后使用mybatis时候调用数据库的语句

INSERT INTO table_name ( field1, field2,...fieldN )  VALUES    ( value1, value2,...valueN );添加
SELECT column_name,column_name
FROM table_name查询



索引:索引是对数据库性能的提高,加快了对数据库查询等操作的查询速度,减少了系统相应的时间


索引分为聚焦索引和非聚焦索引



聚焦索引本质是对数据库的根据索引的重新排序


非聚焦索引可以看成一个含有聚焦索引的表,包含指向实际表的指针


虽然因为各种原因我没有体验到用索引查询的便利之处,但是我仔细思考一下就知道,肯定是非常方便的东西...



2.JDK&JRE

 JRE是Java Runtime Environment的缩写,是Java程序的运行环境。包含JVMjava虚拟机

JDK是Java Development Kit的缩写,是Java的开发工具包,主要包含了各种类库和工具


3.Maven

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具


但是我一般只用在idea中建立maven项目,通过pom.xml添加相关的jar依赖。



4.spring


1.基础

对spring框架来说,总是必须一个映射的类


public class Category {

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;
   }
private int id;
   private String name;
}

...其实我觉得写一个项目,先写这个准没错..

通过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:aop="http://www.springframework.org/schema/aop"
   xmlns:tx="http://www.springframework.org/schema/tx"
   xmlns:context="http://www.springframework.org/schema/context"
   xsi:schemaLocation="
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  http://www.springframework.org/schema/aop
  http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
  http://www.springframework.org/schema/tx
  http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
  http://www.springframework.org/schema/context      
  http://www.springframework.org/schema/context/spring-context-3.0.xsd">

   <bean name="c" class="com.how2java.pojo.Category">
       <property name="name" value="category 1" />
   </bean>

</beans>


通过里面的bean保存实体

 

2.注入

在上面建立的Category类的前提下,新建profuct类

public class Product {

private int id;
  private String name;
  @Autowired//这个地方加表情,或者getCateory的地方加标签
  //@Resource(name="c")//这样也可以哦
  private Category category;
  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 Category getCategory() {
return category;
  }

public void setCategory(Category category) {
this.category = category;
  }
}


修改xml为

<bean name="c" class="com.how2java.pojo.Category">
  <property name="name" value=" 1" />
</bean>
<bean name="p" class="com.how2java.pojo.Product">   <!-- 配置bean,配置后该类由spring管理 -->
  <property name="name" value="product1" /><!-- 给Product里面的name属性赋值 -->
  <!--  <property name="category" ref="c" /> --><!--  -->
  <!-- 在com.how2java.pojo.Product这个类中有个名为 category 的属性,
  它的类型是com.how2java.pojo.category,  在spring初始化的时候把 c注入到category类中 -->
</bean>



这样获得的product中就存在一个category对象,可以调用它



5.mybatis

首先还是创建一个category的类,所以写框架先写这个其实没差


public class Category {
private int id;
   private String name;
   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;
   }

}



在mybatis中,通过xml置入连接数据库需要的信息


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
   <typeAliases>
     <package name="com.how2java.pojo"/>
   </typeAliases>
   <environments default="development">
       <environment id="development">
           <transactionManager type="JDBC"/>
           <dataSource type="POOLED">
               <property name="driver" value="com.mysql.jdbc.Driver"/>
           <property name="url" value="jdbc:mysql://localhost:3306/how2java?characterEncoding=UTF-8"/>
           <property name="username" value="root"/>
           <property name="password" value="123456"/>
       </dataSource>
       </environment>
   </environments>
   <mappers>
       <mapper resource="com/how2java/pojo/Category.xml"/>
   </mappers>
</configuration>


上面的样本是通过jdbc连接的,如果通过连接池连接,只需要置换这里的内容就可以了...


<c3p0-config>
   <!-- This is default config! -->
   <default-config>
       <property name="driverClass">com.mysql.jdbc.Driver</property>
       <property name="jdbcUrl">jdbc:mysql://localhost:3306/how2java?characterEncoding=UTF-8</property>
       <property name="user">root</property>
           <property name="password">123456</property>
       <!--连接池中保留的最大连接数。 -->
       <property name="maxPoolSize" value="4" />
       <!--连接池中保留的最小连接数。-->
       <property name="minPoolSize" value="1" />
       <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。-->
       <property name="initialPoolSize" value="10" />
       <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。 -->
       <property name="maxIdleTime" value="30" />
       <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。 -->
       <property name="acquireIncrement" value="5" />
       <!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。-->
       <property name="maxStatements" value="0" />
       <!--每60秒检查所有连接池中的空闲连接。 -->
       <property name="idleConnectionTestPeriod" value="60" />
       <!--定义在从数据库获取新连接失败后重复尝试的次数。-->
       <property name="acquireRetryAttempts" value="30" />
       <!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。-->
       <property name="breakAfterAcquireFailure" value="true" />
       <!--因性能消耗大请只在需要的时候使用它。-->
       <property name="testConnectionOnCheckout" value="false" />
   </default-config>
   <!-- This is my config for mysql-->

</c3p0-config>


置换为连接池...


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的  -->
   <mapper namespace="com.how2java.pojo">

   <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复
   使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
     resultType就表示将查询结果封装成一个Category类的对象返回
    Category类就是Category表所对应的实体类
   -->

       <select id="listCategory" resultType="Category">
           select * from category_
<!--
13         根据id查询得到一个user对象
14      -->
       </select>
   </mapper>

写一个调用sql语句的xml文件,这里也可以使用标签和接口调用相应的sql语句,在main方法里通过spring框架实现相应的方法即可做到相同的效果,我会在下面详细说的..



6.mybatis&spring&单元测试

首先还是一如既往的category...在这里值得注意的一点是重写了toString方法


public class Category {
private int id;
   private String name;
   private int age;
   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 int getAge() {
return age;
   }
public void setAge(int age) {
this.age = age;
   }
@Override
   public String toString() {
return "Category [id=" + id + ", name=" + name + ",age="+age+"]";
   }



}


定义方法的接口,这里用标签的方式把sql语句与方法联系到了一起,只要实现这个方法就会调用相应的sql语句


public interface CategoryMapper {

@Insert("insert into student ( name,age) values (#{name},#{age})")
public int add(Category category);
   @Select("select * from   student")
public List<Category> list();
   @Select("  select * from   student where id= #{id}")
public List<Category>ListOfId(Category category);


}


<context:annotation-config />
   <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
       <property name="driverClass">
           <value>com.mysql.jdbc.Driver</value>
       </property>
       <property name="jdbcUrl">
           <value>jdbc:mysql://localhost:3306/how2java?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC</value>
       </property>
       <property name="user">
           <value>root</value>
       </property>
       <property name="password">
           <value>123456</value>
       </property>


       <!--连接池中保留的最大连接数。 -->
       <property name="maxPoolSize" value="4" />
       <!--连接池中保留的最小连接数。-->
       <property name="minPoolSize" value="1" />
       <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。-->
       <property name="initialPoolSize" value="10" />
       <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。 -->
       <property name="maxIdleTime" value="30" />
       <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。 -->
       <property name="acquireIncrement" value="5" />
       <!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。-->
       <property name="maxStatements" value="0" />
       <!--每60秒检查所有连接池中的空闲连接。 -->
       <property name="idleConnectionTestPeriod" value="60" />
       <!--定义在从数据库获取新连接失败后重复尝试的次数。-->
       <property name="acquireRetryAttempts" value="30" />
       <!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。-->
       <property name="breakAfterAcquireFailure" value="true" />
   </bean>
   <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
       <property name="typeAliasesPackage" value="com.task.dao" />
       <property name="dataSource" ref="dataSource"/>
   </bean>
   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
       <property name="basePackage" value="com.task.dao"/>
   </bean>



</beans>

与mybatis类似,也是通过xml文件联系数据库,这里使用的c3p0连接池,如果想使用其它的方式,在这里更改就可以了..



@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class MybatisTest {

@Autowired
   private CategoryMapper categoryMapper;

   @Test
   public void testList() {
try{
System.out.println(categoryMapper);
       List<Category> cs=categoryMapper.list();
       for (Category c : cs) {
System.out.println(c.getName());
       }
}catch (Exception e) {
System.out.print("出错了");
       }
}
@Test
   public void add(){
Category category = new Category();
for(long i=1;i<(long)200000000;i++){
int a= (int)(10*Math.random());
       category.setName("new Category");
       category.setAge(a);
       categoryMapper.add(category);

       }

}
@Test
   public void ListOfId(){
Category category = new Category();
       category.setId(2);
       List<Category> cs=categoryMapper.ListOfId(category);
       for (Category c : cs) {
System.out.println(c.getName());
       }
}
}


通过单元测试的方式实现方法


@RunWith(SpringJUnit4ClassRunner.class)

证明是在spring里的单元测试


@ContextConfiguration("classpath:applicationContext.xml")

调用连接数据库的xml文件


@Autowired
private CategoryMapper categoryMapper;

对成员变量、方法和构造函数进行标注,来完成自动装配的工作


@Test
   public void add(){
Category category = new Category();
for(long i=1;i<(long)200000000;i++){
int a= (int)(10*Math.random());
       category.setName("new Category");
       category.setAge(a);
       categoryMapper.add(category);

       }

}

替代main方法




7.Debug


debug是一个很常见的查询找bug的手段


通过点击上面甲虫一样的标志,程序会在你标注红点的地方停下,直到你运行下一步



明天要做的事


接着整github


遇到的问题

22端口失效


收获



返回列表 返回列表
评论

    分享到