MyBatis(22)- mybatis 註解開發

1 MyBatis 註解開發

  • @Insert:實現新增
  • @Update:實現更新
  • @Delete:實現刪除
  • @Select:實現查詢
  • @Result:實現結果集封裝
  • @Results:可以與@Result一起使用,封裝多個結果集
  • @ResultMap:實現引用
  • @Results定義的封裝
  • @One:實現一對一結果集封裝
  • @Many:實現一對多結果集封裝
  • @SelectProvider:實現動態SQL映射
  • @CacheNamespace:實現註解二級緩存的使用

主配置文件不能省略 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">
<!-- mybatis 的主配置文件-->
<configuration>

    <properties resource="jdbc.properties"></properties>

    <settings>
        <setting name="cacheEnabled" value="true"/>
    </settings>


    <!--配置別名,配置 domain 類中的別名
        配置了別名後,就不在區分大小寫
    -->
    <typeAliases>
        <!--該包下所有的實體類都被註冊別名,類名就是別名,不在區分大小寫-->
        <package name="com.tzb.domain"/>
    </typeAliases>

    <!--配置環境-->
    <environments default="mysql">
        <environment id="mysql">
            <!--配置事務類型-->
            <transactionManager type="JDBC"></transactionManager>

            <!--配置數據源(連接池)-->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

    <!--指定dao接口所在的包,不需要再寫 mapper 以及resource或者 class-->
    <mappers>
        <package name="com.tzb.dao"/>
    </mappers>

</configuration>

1.1 DAO

public interface IUserDao {

    @Select(value = "select * from user")
    List<User> findAll();

    @Insert("insert into user(username,address,sex,birthday) " +
            "values (#{username},#{address},#{sex},#{birthday})")
    void saveUser(User user);

}

  • 單元測試
public class MyBatisTest {

    private InputStream in;
    private SqlSessionFactory factory;
    private SqlSession sqlSession;
    private IUserDao userDao;

    @Before
    public void init() throws IOException {
        // 1.讀取配置文件
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.創建 SqlSessionFactory 工廠
        factory = new SqlSessionFactoryBuilder().build(in);
        // 3.使用工廠生產 SqlSession 對象
        sqlSession = factory.openSession();
        // 4.使用 SqlSession 創建DAO接口的代理對象
        userDao = sqlSession.getMapper(IUserDao.class);
    }

    @After
    public void destory() throws IOException {
        // 提交事務
        sqlSession.commit();
        //6.釋放資源
        sqlSession.close();
        in.close();
    }

    @Test
    public void testFindAll(){
        List<User> users = userDao.findAll();
        for (User user : users) {
            System.out.println(user);
        }
    }

    @Test
    public void testSave(){
        User user = new User();
        user.setUsername("宮本武藏");
        user.setAddress("日本");
        user.setBirthday(new Date());
        user.setSex("男");
        userDao.saveUser(user);
    }
    
}

2 註解建立實體類屬性和數據庫列表中列的對應關係

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章