SSM框架整合(5)—— MyBatis框架環境搭建

MyBatis框架

數據庫表

CREATE DATABASE ssm;

USE ssm;

CREATE TABLE account(
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(100),
	money DOUBLE(4,2)
);

INSERT INTO account VALUES (NULL,'cat',9.16),(NULL,'dog',11.27);

結構目錄

  • java
    • dao
      • AccountDao.java(持久層)
    • domain
      • Account.java(JavaBean對象)
    • test
      • TestMyBatis(測試類)
  • resources
    • SqlMapConfig.xml(數據庫連接配置文件)

數據庫連接配置文件

方式一

jdbcConfig.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ee314
jdbc.username=root
jdbc.password=1234
SqlMapConfig.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>

    <!-- 加載 連接數據庫的信息 -->
    <properties resource="jdbcConfig.properties"></properties>
    <!-- 配置 環境 -->
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="pooled">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 指定 映射文件位置 -->
    <mappers>
        <package name="cn.water.dao"/>
        <!--  <mapper class="cn.water.dao.AccountDao"/>  -->
    </mappers>

</configuration>

方式二

SqlMapConfig.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="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///ssm"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 引入 映射配置文件 -->
    <mappers>
        <package name="cn.water.dao"/>
        <!--  <mapper class="cn.water.dao.AccountDao"/>  -->
    </mappers>

</configuration>

持久層

  • 採用註解的方式

AccountDao

package cn.water.dao;

import cn.water.domain.Account;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface AccountDao {

    /** 查詢所有用戶 */
    @Select("select * from account")
    public abstract List<Account> findAll();

    /** 添加用戶 */
    @Insert("insert into account (name,money) values (#{name},#{money})")
    public abstract void add(Account account);


}

測試類

TestMyBatis

package cn.water.test;

import cn.water.dao.AccountDao;
import cn.water.domain.Account;
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 org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;


public class TestMyBatis {

    @Test
    public void run01() throws Exception {
        /* 加載 配置文件 */
        InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        /* 通過 建造者對象,獲取 工廠對象 */
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        /* 通過 工廠對象,獲取 Session對象 */
        SqlSession sqlSession = sqlSessionFactory.openSession();
        /* 通過 Session對象,獲取 代理對象 */
        AccountDao mapper = sqlSession.getMapper(AccountDao.class);
        /* 調用 持久層 */
        List<Account> all = mapper.findAll();
        /* 遍歷 */
        for (Account account : all) {
            System.out.println(account);
        }
        /* 釋放資源 */
        sqlSession.close();
        inputStream.close();
    }

}

運行結果

Account{id=1, name='cat', money=9.16}
Account{id=2, name='dog', money=11.27}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章