1 所謂的註解版,個人理解為 XXXMapper.xml檔案省略掉,把需要的各種sql語句寫入到了 XXXMapper介面中
如何讓 主設定檔找到 介面呢,只需把 下面
<mapper resource="com/model/UserMapper.xml" />
改為
<mapper class="com.model.UserMapper" />
即可,看屬性也知道,把資源檔改為了類檔案的含義
2 下面是完整主設定檔
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- 這裡是指定一個資料庫連接的設定檔 意思是 需要一個設定檔讓使用者指定好資料庫的各種資訊 這裡做好檔案的映射 注意檔案必須和改設定檔同名 --><properties resource="db.properties"></properties> <typeAliases><!-- 為實體指定別名 如果不想取別名後面就必須使用全名 這裡就是給類名做一個映射而已 --><typeAlias alias="user" type="com.model.User" /></typeAliases> <environments default="development"><!-- 配置多個資料庫連接環境這裡和 db.properties對應 --><environment id="development"><transactionManager type="JDBC" /><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><!--mappers其實就是JAVABEAN對應發XML檔案的映射 --><mappers><!-- <mapper resource="com/model/UserMapper.xml" /> --><mapper class="com.model.UserMapper" /></mappers> </configuration>3 下面是要更改的 Mapper介面
package com.model;import org.apache.ibatis.annotations.Select;import org.apache.ibatis.annotations.Update;public interface UserMapper {@Select("select * from wj_user where id=#{id}")User getUser(int id);@Update("insert into wj_user (name,sex) value( #{name},#{sex})")void insertUser(User user);}3 下面是測試類別 (執行了兩個方法 查詢和插入)
package com.model;import java.io.IOException;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class BatisTest {public static void main(String[] args) {InputStream input;try {input = Resources.getResourceAsStream("mybiatis-config.xml");SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(input);// SqlSessionFactoryBuilder 是用過即丟,其生命週期只存在於方法體內SqlSession mySession= sqlSessionFactory.openSession();UserMapper userMapper = mySession.getMapper(UserMapper.class);User user = userMapper.getUser(1);//User user= mySession.selectOne("selectOne",1);//這裡讀取出來之後 會自動和你javabean的屬性進行映射起來System.out.println(user.getName());User userI = new User();userI.setName("doc");userI.setSex("hello");userMapper.insertUser(userI);mySession.commit();mySession.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
4 查看執行結果 已經插入了新資料