Mybatis学习笔记(1)——第一个程序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40693171/article/details/82667514

暑期之前就有打算学习SSM,但是我记得当时再配置一个框架疯狂报错,弄得我很难受,,再加上当时有点其他事情,所以就放了下来。现在很有需求要会ssm,所以就学了一下。感觉框架这东西配置就烦的要死。错一丁点就全错。。下面开始说配置详情。
这里写图片描述
介绍一下这些东西,将mybatis的jar包依赖放入lib目录。User类是一个bean对象,test类是一个测试类(就是要用到这个服务的)。conf.xml是全局配置,配置了数据库相关信息和数据库操作文件的映射(userMapper等数据库操作)。userMapper.xml封装了数据库操作给test调用。
首先,数据库创建数据库

1 create database mybatis;
2 use mybatis;
3 CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);
4 INSERT INTO users(NAME, age) VALUES('hehe',15 );
//随便输入几条数据

在src目录下建立对应的user对象:

package com.test.mybits;

public class User {
    private int id;
    private String name;
    private int age;
    public User(){}
    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;
    }
    public String toString()
    {
        return "user [id="+id+",name="+name+",age="+age+"]";
    }

}

这样bean对象就建好了。
下一步建立conf.xml,这个是一个全局配置的xml文件,里面包含连接数据库的相关信息,有个要注意的是要把 < DOCTYPE confi—-/>这个写在头。

<?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://127.0.0.1:3306/mybits?useSSL=false"/>
            <property name="username" value="root"/>
            <property name="password" value="123456"/>
           </dataSource>

     </environment>
   </environments>
</configuration>

这个和普通JDBC连接差不多。
下一步。创建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="userMapper">
  <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复
      使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
      resultType="com.test.mybits.User"就表示将查询结果封装成一个User类的对象返回
     User类就是users表所对应的实体类
     -->
     <!-- 
         根据id查询得到一个user对象
      -->
      <select id="getuser"  parameterType="Integer" resultType="com.test.mybits.User">
      select * from users where id=#{id}
      </select>
</mapper>

这里的id就是让后面java调用的,注意文件配置名称和路径,返回的对象类型。
这个之后就在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://127.0.0.1:3306/mybits?useSSL=false"/>
            <property name="username" value="root"/>
            <property name="password" value="123456"/>
           </dataSource>

     </environment>
   </environments>
 <mappers>
  <mapper resource="userMapper.xml"/>
 </mappers>
</configuration>

最后编写test类

package com.test.test1;

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

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.test.mybits.User;

public class Test {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        String resource="conf.xml";
        //使用类加载mybatis驱动文件,(他也加载关联的附带文件)
    //  InputStream is=Test.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文件
        SqlSession session=sessionFactory.openSession();

        String statement="getuser";
        User user=session.selectOne(statement,3);
        System.out.println(user);
        User user2=session.selectOne(statement,1);
        System.out.println(user2);



        //System.out.print(11);
    }
}

运行输出为:

user [id=3,name=弟弟,age=22]
user [id=1,name=张赛,age=21]

根据个人的数据库查询出不同结果。在main函数中,statement对应xml中配置的id。这个只是实现了简单的查询功能,后续的增删该查都是类似模块,就是要注意映射的一一对应和路径的问题。

猜你喜欢

转载自blog.csdn.net/qq_40693171/article/details/82667514