发表于: 2017-09-19 16:39:27
1 701
今天完成的内容:
(1)学习Mybatis。
首先要学习ORM框架,全称Object/Relation Mapping,即对象/关系数据库映射。当使用一种面向对象编程的编程语言来进行应用开发时,从项目一开始就采用的是面向对象分析、面向对象设计、面向对象编程,但到了持久层数据库访问时,又必须重返关系数据库的访问方式,这是非常不方便的,因此需要把关系数据库包装成面向对象的模型,即是ORM。采用该框架之后,应用程序不在直接访问底层数据库,而是以面向对象的方式(如创建、修改、删除等)来操作持久化对象,而ORM框架则是将这些面向对象的操作转换成底层的SQL操作。
Mybatis是一个支持普通SQL查询、存储过程和高级映射的优秀持久层框架。它去掉了所有的JDBC代码和参数的手工设置以及对结果集的检索封装。
项目结构:
PO(persistent obje——持久化对象)如下,程序无须访问数据库,只需对PO进行操作,同时Mybatis负责将这些操作转换为对指定数据库表的操作。持久化类不要求继承任何父类,或者实现任何接口,保证代码不被污染, 具有抵侵入性。
package com.lzy.domain;
public class Person {
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;
}
}
XML文件:
创建mybatis的主配置文件mybatis-config.xml,其作用主要是提供连接数据库用的驱动,数据库名称,编码方式,账号密码。定义别名,自动扫描com.lzy.domain下的类型,使得在后续配置文件person.xml中使用resultType的时候,可以直接使用Person而不比写全com.lzy.domain.Person。
<?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>
<typeAlias type="com.lzy.domain.Person" alias="Person"></typeAlias>
</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/test1?characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="0000"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/Person.xml"/>
</mappers>
</configuration>
<?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="com.lzy.mapper.Person">
<select id="listPerson" resultType="Person">
select * from student
</select>
</mapper>
上面的xml配置中,定义了selec语句,mapper指定唯一namespace,namespa值一般设置为包名+sqk映射文件名,Person是Person.xml去掉后缀。
测试类:
根据配置文件mybatis-config.xml得到sqlSessionFactory 。
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
然后再根据sqlSessionFactory 得到session。
SqlSession session=sqlSessionFactory.openSession();
最后通过session的selectList方法,调用sql语句listPerson,就是在配置文件Person.xml中那条sql语句设置的id。执行完毕之后,得到一个Person集合,遍历即可看到数据。
List<Person> cs=session.selectList("listPerson");
for (Person c : cs) {
System.out.println(c.getName());
System.out.println(c.getId());
System.out.println(c.getAge());
输出:
遇到的问题:运行时报错,一直以为是resource路径有问题,结果查出是写类型别名的格式错误。
明天的计划:继续学习Mybatis其他知识,学完看spring。
禅道:http://task.ptteng.com/zentao/task-view-10625.html 剩余2小时。
评论