发表于: 2017-06-08 22:50:10

1 922


今天完成的事情:完成mybatis的jdbc编译

1、添加Mybatis的配置文件conf.xml

  在src目录下创建一个conf.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>
   <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/test" />
               <property name="username" value="root" />
               <property name="password" value="<wyc>19960210" />
           </dataSource>
       </environment>
   </environments>
</configuration>

2、定义表所对应的实体类,如下图所示:

      编译Test.java

package me.wyc.domain;

public class Test{
private long id;
   private String name;
   private String qq;
   private String type;
   private String school;
   private String link;
   private String regeneration_time;
   private String declaration;
   private String senior;
   public long getId() {
return id;
   }
public void setId(long id) {
this.id = id;
   }
public String getName() {
return name;
   }
public void setName(String name) {
this.name = name;
   }
public String getQq() {
return name;
   }
public void setQq(String qq) {
this.qq = qq;
   }
public String getType()
{
return type;
   }
public void setType(String type) {
this.type = type;
   }
public String getSchool() {
return school;
   }
public void setSchool(String school) {
this.school = school;
   }
public String getLink() { return link;
   }
public void setLink(String link) {
this.link = link;
   }
public String getRegeneration_time() {
return regeneration_time;
   }
public void setRegeneration_time(String regeneration_time) {
this.regeneration_time = regeneration_time;
   }
public String getDeclaration() {
return declaration;
   }
public void setDeclaration(String declaration) {
this.declaration = declaration;
   }
public String getSenior() {
return senior;
   }
public void setSenior(String senior) {
this.senior = senior;
   }
@Override
   public String toString() {
return "User [id=" + id + ", name=" + name + ", qq=" + qq + "]";
   }}

3、定义操作tests表的sql映射文件testMapper.xml

创建一个me.wyc.mapping包,专门用于存放sql映射文件,在包中创建一个userMapper.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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
例如namespace="me.wyc.mapping.testMapper"就是me.wyc.mapping(包名)+testMapper(testMapper.xml文件去除后缀)
-->
<mapper namespace="me.wyc.mapping.testMapper">
   <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getTest,id属性值必须是唯一的,不能够重复
   使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
   resultType="me.wyc.domain.Test"就表示将查询结果封装成一个Test类的对象返回
   Test类就是tests表所对应的实体类
   -->
   <!--
       根据id查询得到一个test对象
    -->
   <select id="getTest" parameterType="long"
           resultType="me.wyc.domain.Test">
       select * from users where id=#{id}
</select>
</mapper>

4、在conf.xml文件中注册userMapper.xml文件

<mappers>
   <!-- 注册testMapper.xml文件,
   testMapper.xml位于me.wyc.mapping这个包下,所以resource写成me/wyc/mapping/testMapper.xml-->
   <mapper resource="me/wyc/mapping/userMapper.xml"/>
</mappers>

5、编写测试代码:执行定义的select语句

创建一个Test1类,编写如下的测试代码:

package me.wyc.test;

import java.io.IOException;
import java.io.InputStream;

import me.wyc.domain.Test;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class Test1 {

public static void main(String[] args) throws IOException {
//mybatis的配置文件
       String resource = "conf.xml";
       //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
       InputStream is = Test1.class.getClassLoader().getResourceAsStream(resource);
       //构建sqlSession的工厂
       SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
       //使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
       //Reader reader = Resources.getResourceAsReader(resource);
       //构建sqlSession的工厂
       //SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
       //创建能执行映射文件中sql的sqlSession
       SqlSession session = sessionFactory.openSession();
       /**
        * 映射sql的标识字符串,
        * me.wyc.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
        * getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
        */
       String statement = "me.wyc.mapping.testMapper.getTest";//映射sql的标识字符串
       //执行查询返回一个唯一user对象的sql
       Test test = session.selectOne(statement, 1);
       System.out.println(test);
   }

整体结构目录如下图所示

明天计划的事情:完成任务一

遇到的问题:运行的时候报错,配置文件conf.xml出了问题,property中不能出现特殊符号我的数据库密码中有<>,修改密码,执行set password for root@localhost = password('123');后出现问题,使用新密码无法登录,这个时候太晚,明天再解决。

收获:对mybatis有了初步的了解


返回列表 返回列表
评论

    分享到