Mybatis+mysql入門使用

來源:互聯網
上載者:User

標籤:date   mave   parameter   hid   throw   res   方便   update   manage   

一、簡介

  MyBatis 是一款優秀的持久層架構,它支援定製化 SQL、預存程序以及進階映射。

二、入門使用

  1、添加依賴

          a、使用maven管理依賴,以我本次使用的版本為例

    <dependencies>        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>4.12</version>            <scope>test</scope>        </dependency>        <dependency>            <groupId>org.mybatis</groupId>            <artifactId>mybatis</artifactId>            <version>3.2.3</version>        </dependency>        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>5.1.38</version>        </dependency>    </dependencies>
View Code

         b、也可以使用gradle管理依賴

dependencies {    testCompile group: junit, name: junit, version: 4.12    compile org.mybatis:mybatis:3.2.3    compile mysql:mysql-connector-java:5.1.38}
View Code

        c、也可以去官網下載,官網地址:http://www.mybatis.org/mybatis-3/

      2、初始化資料庫和初始資料,以資料庫moy_mybatis和表t_test為例

## 建立資料庫CREATE DATABASE    moy_mybatis;## 建立一個測試表CREATE TABLE t_test(    id INT(11) AUTO_INCREMENT,    create_time DATE COMMENT ‘建立時間‘,    modify_time DATE COMMENT ‘修改時間‘,    content VARCHAR (50) COMMENT ‘內容‘,    PRIMARY KEY (id));
View Code

     3、建立實體類TestEntity

package com.moy.mybatis3.entity;import java.util.Date;/** * [Project]:moy-gradle-project  <br/> * [Email]:[email protected]  <br/> * [Date]:2018/2/20  <br/> * [Description]:  <br/> * * @author YeXiangYang */public class TestEntity {    private Integer id;    private Date createTime;    private Date modifyTime;    private String content;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public Date getCreateTime() {        return createTime;    }    public void setCreateTime(Date createTime) {        this.createTime = createTime;    }    public Date getModifyTime() {        return modifyTime;    }    public void setModifyTime(Date modifyTime) {        this.modifyTime = modifyTime;    }    public String getContent() {        return content;    }    public void setContent(String content) {        this.content = content;    }    @Override    public String toString() {        return "TestEntity{" +                "id=" + id +                ", createTime=" + createTime +                ", modifyTime=" + modifyTime +                ", content=‘" + content + ‘\‘‘ +                ‘}‘;    }}
View Code

     4、建立介面TestMapper

package com.moy.mybatis3.mapper;import com.moy.mybatis3.entity.TestEntity;import java.io.Serializable;import java.util.List;/** * [Project]:moy-gradle-project  <br/> * [Email]:[email protected]  <br/> * [Date]:2018/2/20  <br/> * [Description]:  <br/> * * @author YeXiangYang */public interface TestMapper {    List<TestEntity> list();    TestEntity get(Serializable id);    int insert(TestEntity TestEntity);    int update(TestEntity TestEntity);    int delete(Serializable id);    int count();}
View Code

     5、建立實體對應檔Test.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="com.moy.mybatis3.mapper.TestMapper">    <select id="list" resultType="TestEntity">        SELECT * FROM t_test    </select>    <select id="count" resultType="int">        SELECT count(*) FROM t_test    </select>    <select id="get" parameterType="int" resultType="TestEntity">        SELECT id,create_time as createTime,modify_time as modifyTime ,content         FROM t_test WHERE id=#{id}    </select>    <insert id="insert" parameterType="TestEntity">        INSERT INTO t_test (create_time,modify_time,content)        VALUES (#{createTime},#{modifyTime},#{content})    </insert>    <update id="update" parameterType="TestEntity">        UPDATE t_test SET modify_time=#{modifyTime},content=#{content}        WHERE id = #{id}    </update>    <delete id="delete" parameterType="int">        DELETE FROM t_test WHERE id = #{id}    </delete></mapper>
View Code

     6、建立mybatis配置資訊檔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>    <typeAliases>        <!--項目實體類對應的包名-->        <package name="com.moy.mybatis3.entity"/>    </typeAliases>        <!--myql資料庫連接資訊-->    <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/moy_mybatis?useSSL=false"/>                <property name="username" value="root"/>                <property name="password" value="123"/>            </dataSource>        </environment>    </environments>    <!--配置實體映射xml路徑-->    <mappers>        <mapper resource="mapper/Test.xml"></mapper>    </mappers></configuration>    
View Code

     7、為了方便測試,編寫一個擷取SqlSession的工具類Mybatis3Utils

package com.moy.mybatis3.utils;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.Reader;import java.util.Objects;/** * [Project]:moy-gradle-project  <br/> * [Email]:[email protected]  <br/> * [Date]:2018/2/19  <br/> * [Description]:  <br/> * * @author YeXiangYang */public abstract class Mybatis3Utils {    public static final SqlSessionFactory sqlSessionFactory;    public static final ThreadLocal<SqlSession> sessionThread = new ThreadLocal<>();    static {        try {            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);        } catch (IOException e) {            throw new RuntimeException(e);        }    }    public static SqlSession getCurrentSqlSession() {        SqlSession sqlSession = sessionThread.get();        if (Objects.isNull(sqlSession)) {            sqlSession = sqlSessionFactory.openSession();            sessionThread.set(sqlSession);        }        return sqlSession;    }    public static void closeCurrentSession() {        SqlSession sqlSession = sessionThread.get();        if (Objects.nonNull(sqlSession)) {            sqlSession.close();        }        sessionThread.set(null);    }}
View Code

     8、建立測試類別TestMapperTest測試

package com.moy.mybatis3.mapper;import com.moy.mybatis3.entity.TestEntity;import com.moy.mybatis3.utils.Mybatis3Utils;import org.apache.ibatis.session.SqlSession;import org.junit.After;import org.junit.Before;import org.junit.Test;import java.util.Arrays;import java.util.Date;import java.util.List;import static org.junit.Assert.*;/** * [Project]:moy-gradle-project  <br/> * [Email]:[email protected]  <br/> * [Date]:2018/2/20  <br/> * [Description]:  <br/> * * @author YeXiangYang */public class TestMapperTest {    SqlSession sqlSession;    TestMapper testMapper;    @Before    public void before() {        sqlSession = Mybatis3Utils.getCurrentSqlSession();        testMapper = sqlSession.getMapper(TestMapper.class);    }    @After    public void after() {        Mybatis3Utils.closeCurrentSession();    }    @Test    public void insert() {        TestEntity entity = new TestEntity();        entity.setCreateTime(new Date());        entity.setModifyTime(new Date());        entity.setContent("我是內容");        System.out.println(testMapper.insert(entity));        sqlSession.commit();    }    @Test    public void count() {        System.out.println(testMapper.count());    }    @Test    public void list() {        List<TestEntity> list = testMapper.list();        System.out.println(Arrays.toString(list.toArray()));    }    @Test    public void get() {        System.out.println(testMapper.get(1));    }    @Test    public void update() {        TestEntity entity = new TestEntity();        entity.setId(1);        entity.setModifyTime(new Date());        entity.setContent("我是修改後內容");        testMapper.update(entity);        sqlSession.commit();    }    @Test    public void delete() {        testMapper.delete(1);        sqlSession.commit();    }}
View Code

 

yexiangyang

[email protected]

 

 

Mybatis+mysql入門使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.