初识mybatis,第一个简单的mybatis项目

Posted dongline

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识mybatis,第一个简单的mybatis项目相关的知识,希望对你有一定的参考价值。

 

声明:I‘m 初学者,这是我对mybytis的初步认识

这是一个简单的不能再简单的初级Mybatis项目,它可以使我们连接数据库更加容易,思路更加清晰。我这里用一个图来解释一下: 

技术分享图片

开始创建这个项目:

 

 技术分享图片

这是我项目中用的数据库,数据库名是store,表名person,属性如图

 

1.创建一个java项目

2.在项目中新建一个文件夹lib

3.把连接mysql的jar包和mybatis包放进去bulidpath一下

技术分享图片

4.创建包目录如下

技术分享图片

这里  com.dongline.mybatistest包存放的java代码,

config存放的全局配置文件和映射文件

5.在config下创建全局配置文件mybatisconfig.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/store?    characterEncoding=utf-8"/>
                 <property name="username" value="root"/>
                 <property name="password" value="123456"/>
             </dataSource>
         </environment>
     </environments>

 </configuration>

代码很多,信息量很大,但大多都是模版代码。

这里我关注的是dataSource

标签property代表的是属性。这里我们就能和以前Dao原始开发方式有点关联了。driver,url username,password属性就是以前我们初始化连接对象所用到的。

这里只需要把value值设置成自己数据库对应的值即可。

 

6.创建Person类

package com.dongline.mybatistest;

public class Person {

    String personname;
    String persongpassword;
    int persongid;
    String personmail;
    @Override
    public String toString() {
        return "Person [personname=" + personname + ", persongpassword=" + persongpassword + ", persongid=" + persongid
                + ", personmail=" + personmail + "]";
    }
    public String getPersonname() {
        return personname;
    }
    public void setPersonname(String personname) {
        this.personname = personname;
    }
    public String getPersongpassword() {
        return persongpassword;
    }
    public void setPersongpassword(String persongpassword) {
        this.persongpassword = persongpassword;
    }
    public int getPersongid() {
        return persongid;
    }
    public void setPersongid(int persongid) {
        this.persongid = persongid;
    }
    public String getPersonmail() {
        return personmail;
    }
    public void setPersonmail(String personmail) {
        this.personmail = personmail;
    }
}

这里就是数据库中person表对应的Person类。它是数据库数据和java数据之间传递的载体。

7.在config文件夹添加person.xml映射文件

其中内容为

<?xml version="1.0" encoding="UTF-8" ?>   
<!DOCTYPE mapper   
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"  
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> 
<!-- 映射文件 -->
<mapper namespace="test">
<select id="findPersonByName" resultType="com.dongline.mybatistest.Person" parameterType="java.lang.String">
select * from person where personname=#{id}          
</select>


</mapper>

 

 我们关注的是mapper标签namespace是我们自己设置的,为了避免工程中引用引起同名冲突,就像c++中的namespace一样。

 

mapper标签下可以配置我们的数据库增删改查逻辑这里我就不一一展示,我以查询为例

 

 

然后是一个select标签

这里id是我们调用这个select的唯一标识。

resultTpye是这个查询语句结果所对应的单个对象类型(当查询结果为List时每个结果的类型)

parameterType是输入类型我们看到sql语句中的personname=#{id} #{id}所对应的类型

其中#{}代表一个输入参数(是防sql注入的)

 这里的输入和输出类型如果不是java简单类型都要加上包名。输入类型和输出类型都可以是我们自己创建的pojo

也就是我们sql和java 数据传递的载体

 

 

 8.

我们映射文件配置好了但是没有与jdbc关联,这里就需要mybatis来关联我们的映射文件

在全局配置文件中添加

 <mappers>
     <mapper resource="config/person.xml"/>
     </mappers>

就实现了映射文件的配置

mappers可以添加多个mapper那就意味着可以用这一个配置文件关联多个映射文件

9.用mybatis来实现查询数据库

在com.dongline.mybatistest下新建一个测试类Test.java

package com.dongline.mybatistest;

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

import javax.annotation.Resource;

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

public class Test {

    public static void main(String[] args) throws Exception {
        
        String resource="config/mybatisconfig.xml";
        InputStream in= Resources.getResourceAsStream(resource);
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(in);
        SqlSession session=factory.openSession();
        Person person=session.selectOne("test.findPersonByName","dong");
        System.out.println(person);
    
    }
}

这里通过Resources.getResourceAsStream(resource)获取resource输入流

再获取SqlSessionFactory,这个是会话工厂。

建立我们的会话 session,

通过会话session中的增删改查关联我们映射文件中配置的id就能调用我们的sql语句了。

执行结果如下

技术分享图片

 

第一次写blog有什么不足请大家指出。

 

以上是关于初识mybatis,第一个简单的mybatis项目的主要内容,如果未能解决你的问题,请参考以下文章

Y2 初识MyBatis

MyBatis-Plus——初识MyBatis的增强框架MP

MyBatis-Plus——初识MyBatis的增强框架MP

Mybatis基础学习—初识MyBatis

初识MyBatis

mybatis之旅第一篇-初识mybatis