maven項目使用mybatis+mysql


1.添加依賴,在pom.xml中添加

<!--mybatis核心包-->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.3.0</version>
</dependency>
<!--MySQL的JDBC驅動包-->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.29</version>
</dependency>

2. 添加Entity

public class UsersEntity {
  private Integer userid;

  private String username;

  public Integer getUserid() {
    return userid;
  }

  public void setUserid(Integer userid) {
    this.userid = userid;
  }

  public String getUsername() {
    return username;
  }

  public void setUsername(String username) {
    this.username = username == null ? null : username.trim();
  }

}

3. 添加dao層的interface UsersEntityMapper.java

public interface UsersEntityMapper {

  UsersEntity getUsersByPhoneNo(String phoneNo);

}

4. 添加mapper的xml UsersEntityMapper.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.alphaomega.sunshine.dao.UsersEntityMapper">
  <select id="getUsersByPhoneNo" parameterType="String" resultType="com.alphaomega.sunshine.entity.UsersEntity">
    select * from users where phoneno = #{phoneNo}
  </select>
</mapper>

5. 添加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>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC" />
      <!-- 配置數據庫連接信息 -->
      <dataSource type="POOLED">
        <!-- 1.加載數據庫驅動 -->
        <property name="driver" value="com.mysql.jdbc.Driver" />
        <!-- 2.數據庫連接地址 (&->&amp;)-->
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/schema_name?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=true" />
        <!-- 數據庫用戶... -->
        <property name="username" value="root" />
        <!-- 數據庫密碼... -->
        <property name="password" value="xxxxxxx" />
      </dataSource>
    </environment>
  </environments>

  <mappers>
  <!-- 注冊文件-->
    <mapper resource="com/alphaomega/sunshine/mappers/UsersEntityMapper.xml"/>
    <mapper resource="com/alphaomega/sunshine/mappers/XxxxxxEntityMapper.xml"/>
  </mappers>

</configuration>

6. mybatis配置文件mybatis_config.xml和UsersEntityMapper.xml的位置

UsersEntityMapper.xml如果放在src/main/java里的話,則需要向pom添加路徑,否則package時會報錯:找不到xml文件,

原因是maven默認xml文件在src/main/resources里(不過后來發現,即使放在了默認里也不行)。

<build>

  <resources>
    <resource>
      <directory>src/main/java</directory>
      <includes>
        <include>**/*.xml</include>
      </includes>
    </resource>

  </resources>

</build>

向maven項目添加src/main/resources目錄,並將mybatis_config.xml放在里面。(雖然可以通過另創建文件夾,然后use as source,但還是按照maven默認比較舒服)

添加的方式可以通過Project-Properties-Java Build Path-Source-Add Folder-選中文件夾后Create new folder...

同樣,測試目錄src/test/resources也通過這樣執行。

問題來了,測試時沒有任何問題,但是jar包不能,maven會把test目錄的xml文件復制到target/test-class下,但是不會將main下的xml復制到target/class里,

除了那些mapper,因為已經指定了路徑。因此還需要在pom的resources標簽里指定,為了maven復制過去。

<build>

  <resources>
    <resource>
      <directory>src/main/java</directory>
      <includes>
        <include>**/*.xml</include>
      </includes>
    </resource>

    <resource>
      <directory>src/main/resources</directory>
      <includes>
        <include>**/*.xml</include>
      </includes>
    </resource>

  </resources>

</build>

7. 最后使用

String resouces = "mybatis_config.xml";
InputStream in = Resources.getResourceAsStream(resouces);
//讀取配置文件的配置信息,利用SqlSessionFactoryBuilder創建sqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
//利用sqlSessionFactory打開與數據庫的會話
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
  UsersEntityMapper ueMapper = sqlSession.getMapper(UsersEntityMapper.class);//通過sqlSession得到mapper
  String no = "13299999999";
  UsersEntity user = ueMapper.getUsersByPhoneNo(no);//調用mapper的方法
  //只讀操作不需要sqlSession.commit()
  System.out.println("查詢到用戶...");
  System.out.println(user.getUsername());
} finally {
  sqlSession.close();
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM