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.數據庫連接地址 (&->&)-->
<property name="url" value="jdbc:mysql://127.0.0.1:3306/schema_name?useUnicode=true&characterEncoding=utf-8&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();
}