第一節:mybatis入門

一、新建數據表


本次測試使用mysql數據,數據庫名稱爲mybatis,新建一張表person,建表語句以下:html

CREATE TABLE `person` (
`id` INT ( 11 ) PRIMARY KEY auto_increment,
`first_name` VARCHAR ( 255 ),
`last_name` VARCHAR ( 255 ),
`age` INT ( 11 ),
`email` VARCHAR ( 255 ),
`address` VARCHAR ( 255 ) 
);

插入測試數據以下:java

insert into person(first_name,last_name,age,email,address) VALUES('Schmitt', 'Carine',25,null,'beijing');
insert into person(first_name,last_name,age,email,address) VALUES('King', 'Jean',36,'Jean@163.com','beijing');
insert into person(first_name,last_name,age,email,address) VALUES('Ferguson', 'Schmitt',23,'88888@qq.com','shanghai');
insert into person(first_name,last_name,age,email,address) VALUES('Piestrzeniewicz', 'Nelson',55,null,'nanjing');
insert into person(first_name,last_name,age,email,address) VALUES('Jytte', 'Jean',22,'55555@qq.com','shenzhen');
insert into person(first_name,last_name,age,email,address) VALUES('Victorino', 'Diego',19,'Diego@163.com','shanghai');
insert into person(first_name,last_name,age,email,address) VALUES('Julie', 'Schmitt',56,null,'nanjing');
insert into person(first_name,last_name,age,email,address) VALUES('Gao', 'Diego',45,'66666@qq.com','beijing');
insert into person(first_name,last_name,age,email,address) VALUES('Piestrzeniewicz', 'Schmitt',36,'44444@qq.com','beijing');
insert into person(first_name,last_name,age,email,address) VALUES('Frdrique', 'Juri',25,'99999@qq.com','beijing');

結果以下:mysql

數據表格

二、mybatis入門


一、新建maven工程sql

本次演示使用IntelliJ IDEA社區版,新建一個maven工程,最終結果以下:數據庫

mybatis工程結構

二、添加依賴,主要是mybatis和mysqlapache

<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.6</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.47</version>
    </dependency>
</dependencies>

三、編寫數據庫表person對應的實體。session

package com.yefengyu.mybatis.entity;

public class Person
{
    private Integer id;

    private String firstName;

    private String lastName;

    private Integer age;

    private String email;

    private String address;

    public Integer getId()
    {
        return id;
    }

    public void setId(Integer id)
    {
        this.id = id;
    }

    public String getFirstName()
    {
        return firstName;
    }

    public void setFirstName(String firstName)
    {
        this.firstName = firstName;
    }

    public String getLastName()
    {
        return lastName;
    }

    public void setLastName(String lastName)
    {
        this.lastName = lastName;
    }

    public Integer getAge()
    {
        return age;
    }

    public void setAge(Integer age)
    {
        this.age = age;
    }

    public String getEmail()
    {
        return email;
    }

    public void setEmail(String email)
    {
        this.email = email;
    }

    public String getAddress()
    {
        return address;
    }

    public void setAddress(String address)
    {
        this.address = address;
    }

    @Override
    public String toString()
    {
        return "Person{" +
               "id=" + id +
               ", firstName='" + firstName + '\'' +
               ", lastName='" + lastName + '\'' +
               ", age=" + age +
               ", email='" + email + '\'' +
               ", address='" + address + '\'' +
               '}';
    }
}

四、編寫mapper接口mybatis

package com.yefengyu.mybatis.mapper;

import com.yefengyu.mybatis.entity.Person;


public interface PersonMapper
{
    Person getPerson(Integer id);
}

五、編寫mapper映射文件app

在resources下面新建一個mapper文件夾,再在裏面新建一個PersonMapper.xml文件,內容以下:maven

<?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.yefengyu.mybatis.mapper.PersonMapper">
    <select id="getPerson" resultType="com.yefengyu.mybatis.entity.Person">
        select * from person where id = #{id}
    </select>
</mapper>

六、新建一個mybatis全局配置文件,詳細信息見官網

在resources下面新建mybatis-config.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/mybatis?characterEncoding=utf8"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="mapper/PersonMapper.xml"/>
  </mappers>
</configuration>

七、測試

package com.yefengyu.mybatis;

import com.yefengyu.mybatis.mapper.PersonMapper;
import com.yefengyu.mybatis.entity.Person;
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 java.io.IOException;
import java.io.InputStream;


public class Main
{
    public static void main(String[] args)
        throws IOException
    {
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        PersonMapper mapper = sqlSession.getMapper(PersonMapper.class);
        Person person = mapper.getPerson(1);
        System.out.println(person);
        sqlSession.close();
    }
}

八、結果

Person{id=1, firstName='null', lastName='null', age=25, email='null', address='beijing'}

分析:這條查詢的結果和數據庫相比,firstName和lastName字段查詢有問題,沒有查詢到結果,這個主要緣由是數據庫字段命名是使用下劃線,而java實體使用駝峯法命名,致使mybatis沒法自動匹配,解決方法有不少,此處使用最原始的一種:給查詢語句中的字段添加別名的方式

<?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.yefengyu.mybatis.mapper.PersonMapper">
    <select id="getPerson" resultType="com.yefengyu.mybatis.entity.Person">
        select * from person where id = #{id}
    </select>
</mapper>

中的查詢語句由

select * from person where id = #{id}

改成下面這句

select id, first_name firstName, last_name lastName, age, email, address  from person where id = #{id}

這樣就能夠查詢到咱們須要看到的效果,是否是很神奇?

Person{id=1, firstName='Schmitt', lastName='Carine', age=25, email='null', address='beijing'}
相關文章
相關標籤/搜索