第一個MyBatis程式

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   os   io   檔案   

最近研究了一些MyBatis技術,雖然工作中還未用到,但是覺得瞭解一下也是不錯的.這裡記錄了第一個簡單的Demo程式,防止自己忘記.

第一步需要配置Mybatis-config.xml檔案.注意:這裡使用了2種方式對實體類進行了映射.在<Mapper>中,第一個User對象用XMl格式進行映射,第二個Category用註解CategoryMappper格式進行映射.

<?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>    <properties resource="jdbc.properties" ></properties>    <!-- <typeAliases>        <package name="com.mybatis02.model"/>    </typeAliases> -->    <environments default="devEnvironment">        <environment id="devEnvironment">            <transactionManager type="JDBC"></transactionManager>            <dataSource type="POOLED">                <property name="driver" value="${dirver}"/>                <property name="url" value="${url}"/>                <property name="username" value="${username}"/>                <property name="password" value="${password}"/>            </dataSource>        </environment>    </environments>    <mappers>        <!-- 利用XML格式對User對象進行映射 -->        <mapper resource="com/mybatis02/model/User.xml"/>        <!-- 用註解模式對Category進行映射 -->        <mapper class="com.mybatis02.mapper.CategoryMapper"/>    </mappers></configuration>

第二步對mybatis-config.xml進行解析

public class MyBatisUtil {    private static SqlSessionFactory factory;    static{        try {            InputStream in = Resources.class.getResourceAsStream("mybatis-config.xml");            factory = new SqlSessionFactoryBuilder().build(in);        } catch (Exception e) {            e.printStackTrace();        }    }        public static SqlSession createSession(){        return factory.openSession();    }        public static void closeSession(SqlSession session){        if (session != null) {            session.close();        }    }}

下面分2中方式,對xml格式和註解方式分別進行介紹:

XML格式:

1.1.建立實體類User(這裡省略了get和set方法)

public class User {    private int id;    private String username;    private String password;    private String nickname;    private int type;    private List<Address> addresses;    ...}

1.2.建立User對象的xml對應檔.這裡需要注意:namespace屬性,需要配置User類的全路徑.定義了一個id為add的Insert操作.其參數類型(parameterType)為一個User對象

<?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.mybatis02.model.User">    <insert id="add" parameterType="com.mybatis02.model.User">        insert t_user(id,username,password,nickname,type)        values(#{id},#{username},#{password},#{nickname},#{type})    </insert></mapper>

1.3.對XML映射方式進行測試

    @Test    public void testAdd() {        // 1.建立Mybatis設定檔輸入資料流        InputStream in = null;        try {            in = Resources.getResourceAsStream("mybatis-config.xml");        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        // 2.建立SqlSessionFactory        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);        // 3.建立SQlSession        SqlSession session = factory.openSession();        // 4.調用UserMapper檔案,將對象插入資料庫(在調用檔案之前,需要將mapper檔案加入到mybatis-config.xml中)        User user = new User();        user.setId(8);        user.setUsername("張飛");        user.setPassword("123");        user.setNickname("張三");        user.setType(1);        session.insert("com.mybatis02.model.User.add", user);        session.commit();        session.close();    }

對註解映射方式進行demo的編寫.

2.1.同樣建立實體類

public class Category {    private int id;    private String name;        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;    }}

2.2 建立CategoryMapper映射類 建立了一個add方法,在方法上添加Insert操作,執行對應的sql.

這個檔案在第一步中的mybatis-config.xml中引入.

 <mapper class="com.mybatis02.mapper.CategoryMapper"/>
public interface CategoryMapper {    @Insert("insert into t_category(id,name) value (#{id},#{name})")    public void add(Category category);    }

2.3 測試

@Test    public void testCategory() {        // 1.建立Mybatis設定檔輸入資料流        InputStream in = null;        try {            in = Resources.getResourceAsStream("mybatis-config.xml");        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        // 2.建立SqlSessionFactory        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);        // 3.建立SQlSession        SqlSession session = factory.openSession();        // 4.調用CategoryMapper介面,將對象插入資料庫(在調用檔案之前,需要將mapper檔案加入到mybatis-config.xml中)        Category category = new Category();        category.setId(1);        category.setName("衣服");        session.insert("com.mybatis02.mapper.CategoryMapper.add", category);        session.commit();        session.close();    }

感觸:最開始寫demo,報了一個錯誤,原來我把xml方式映射和註解方式映射弄混了.兩種方式各取一半,報了各種錯誤.

      以後遇到問題,需要一步一步的推敲.保持邏輯的清晰,才能更加準確的定位錯誤,及時發現和修正錯誤.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.