发表于: 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小时。



返回列表 返回列表
评论

    分享到