发表于: 2017-09-16 23:51:49
1 744
今天完成的任务
在spring-mybaits框架的基础上写了
关于查询、添加、按id查询三种调用数据库的方法
一.关于s-m框架
只需要
1.接口
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);
}
接口中通过注解的方式调用sql语句,接口里每一个方法都不是必须实现的,但只要添加一个新的方法,就能实现新的功能
2.和数据库相对的映射类
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+"]";
}
}
数据库中每增加的一个新的数据类型,在此类多添加一个对应的属性,并且多相应的get(set)方法就ok
3.构建框架的mxl接口
<?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:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-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/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<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&characterEncoding=UTF-8&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>
这里是使用的c3p0连接池,
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
/bean>
只需要更改这里的内容,就能轻易地转换用什么方式连接数据库
4。实现类
@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)
@ContextConfiguration("classpath:applicationContext.xml")
spring会自动帮你配置所有环境
你只需要实现接口里面的方法就ok,连接中断的时候,会自动报错并打印catch里面的输出语句...
也就是 无论数据库的表格有任何变化,需要实现什么方法,使用那种连接方式,在spring的框架里面,都可以通过简单的更改完成
关于插入2亿条数据然后通过索引和没有索引的方式感受功能
因为我电脑比较渣..虽然在上面的三个方法里分别的写的是 查询所有数据,插入2亿条数据并通过random()方法随机生成0-9的age。,通过输入的age来查询所有符合此age的数据
但是只要一插入的时间比较长电脑就自动死机...所以我只能根据现有推测证明:肯定是加入索引比较快
明天要做的任务
我可以在明天对任务一做总结之后深入spring的同时并开始任务二了吗..
遇到的问题
不给力的电脑
收获
评论