发表于: 2017-08-04 21:58:08

7 1056


今天完成的事情:今天继续理解mybatis  使用它连接mysql   参照了很多  详细写下步骤 和理解先贴一下自己的结构       

                                                               

  1 pom.xml添加依赖 

 2 建立数据库mybatis,创建user表 

       create database mybatis;

        use mybatis;

        CREATE TABLE user(

          id  int (11)NOT Null AUTO_INCREMENT,

         username varchar(50) DEFAULT NULL,

         age int(11)  DEFAULT NULL,

          Primary KEY(id)

       )ENGINE=Innodb DEFAULT CHARSET=utf8;

  随便插3条数据 

配置Configuration.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>
   <typeAlias alias="User" type="cn.bj.mybatis.model.User"/>
</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/mybatis" />

<property name="username" value="root" />

<property name="password" value="root" />

</dataSource>

</environment>

</environments>

</configuration>

            大意就是建立连接池 都是jdbc的东西 加载驱动 连接数据库

            注意我加粗加下划线的地方  自己的数据库名称 用户名 密码

           typeAliases 类型别名是为 Java 类型设置一个短的名字,就是后面type里面的简写成Typealises里面的。

            它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余        

4 定义表所对应的实体类(就是那个User)常用的get set方法  话说我看人能用快捷方法不知道怎摸弄的

 

public class User {private int id;
   private String username;
   private int age;
   public int getId() {
return id;
   }
public void setId(int id) {
this.id = id;
   }
public String getUsername() {
return username;
   }
public void setUsername(String username) {
this.username = username;
   }
public int getAge() {
return age;
   }
public void setAge(int age) {
this.age = age;
   }
}

5 定义操作users表的sql映射文件User.xml(这个名字好像是起什么都可以约定俗成这样起)

<?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就是给这个文件起个唯一的名  就是文件的位置没有xml加上Mapper 但是教程都不是Idea的不放在Resources下所以我也有点不懂 


<mapper namespace="cn.bj.mybatis.models.UserMapper"> 


//根据id查询Users表中对应的记录 返回 User对象 id是int类型 


<select id="selectUser"  parameterType="int"  resultType="User"> 

select * from User where id = #{id} 

</select> 

</mapper>

6 在Configuration.xml文件中注册User.xml文件

 (所有的mapper都由cofiguration这个文件管理)

<mappers>

<mapper resource="User.xml"/>

</mappers>

 注意这里就是xml文件的位置 但是注意用 / 不用 . 例如 com/atguigu/day03_mybatis/test1/userMapper.xml

7 编写测试文件MybatisTest

public class MybatisTest {
public static void main(String[] args) {
SqlSessionFactory sqlSessionFactory = null;
       SqlSession session = null;
       String resource = "Configuration.xml";
       InputStream inputStream;
       try {
inputStream = Resources.getResourceAsStream(resource);
           sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
           session = sqlSessionFactory.openSession();
           System.out.println(session);
           User user = (User) session.selectOne("cn.bj.mybatis.models.UserMapper.selectUser", 1);
           System.out.println(user.getId());
           System.out.println(user.getUsername());
       } catch (IOException e) {
e.printStackTrace();
       } finally {
if (session != null) {
session.close();
           }
}
}
}

     这里就不是很理解了  大致是声明能执行映射文件中sql的sqlSession一个空值 声明session一个空值 

               String resource = "configuration.xml"; //加载mybatis的配置文件(它也加载关联的映射文件)

              InputStream  声明了什么不知道

try里面   能执行映射文件中sql的sqlSession

               映射sql的标识字符       打印出来 也不知道到底会打印出啥

                 执行查询返回一个唯一user对象的sql  

          (mybatis的sal语句写在 xml中  这里调用第五步骤里面 的User.xml 需要定位 就是有下划线的那个

               是从下图 下划线 加上id的组合来的 唯一 来定位sql语句位置 )


         


       跑一下 第一个不知道打印的是啥 然后打印第一行数据 就是成功了

  大概 看了看junit 感觉还是先看懂mybatis 感觉挺难的 也挺需要时间 

   注意:斜体是注释理解 加黑加下斜线 是需要改的地方


明天计划的事情:仔细研究mybatis实现增删改查代码的具体含义
遇到的问题:很多错误 像上面加粗加下划线部分没有改对的 还有java需要XX  缺少; 等

         还有Error:(85, 26) java: 不兼容的类型: java.util.Date无法转换为java.sql.Date收获:

                           这个仔细想了想 把import java.util.Date 改成了 java.sql.Date 就好了      

        

       这个配置个依赖 在main/resources下新建log4j.properties

#配置根目录Logger 优先级为INFO,A1 给输出的目的地起个名字方便下面的配置。log4j.rootLogger=INFO, A1 #配置输出目的地为控制台log4j.appender.A1=org.apache.log4j.ConsoleAppender #配置输出格式的布局(可以灵活地指定布局模式)log4j.appender.A1.layout=org.apache.log4j.PatternLayout #配置日志信息的输出格式log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n

就好了


返回列表 返回列表
评论

    分享到