1.首先創建maven工程
Groupid:cn.poison(自定義域名)
ArtifactId:項目名稱
Packing:jar(打包類型)
2.在pom.xml文件中導入依賴包
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.6</version>
</dependency>
</dependencies>
3.編寫數據表實體類
package cn.poison.pojo;
import java.util.Date;
/**
* \*用戶表實體類
* \* Created with IntelliJ IDEA.
* \* Author: Poison
* \* Date: 2020/1/7
* \* CreateTime: 16:40
* \
*/
public class User {
private Integer id;
private String username;
private Date birthday;
private Character sex;
private String address;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public Character getSex() {
return sex;
}
public void setSex(Character sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", birthday=" + birthday +
", sex=" + sex +
", address='" + address + '\'' +
'}';
}
}
以查詢所有爲例
一、基於XML的配置方式
1.配置連接數據庫的基本信息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>
<!-- 配置環境 -->
<environments default="mysql">
<!-- 配置mysql的環境 -->
<environment id="mysql">
<!-- 配置事務的類型 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置數據源(連接池) -->
<dataSource type="POOLED">
<!-- mysql數據庫註冊驅動 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!-- mysql數據庫連接地址 -->
<property name="url" value="jdbc:mysql://localhost:3306/你的數據庫名?characterEncoding=utf-8"/>
<!-- mysql數據庫登錄用戶名 -->
<property name="username" value="root"/>
<!-- mysql數據庫登錄密碼 -->
<property name="password" value="****"/>
</dataSource>
</environment>
</environments>
<!-- 指定映射配置mapper文件的位置,一般放在resource文件夾下 -->
<mappers>
<mapper resource="mybatis/mapper/UserMapper.xml"></mapper>
</mappers>
</configuration>
注意:基於xml的配置,這裏需要指定resource目錄下mapper.xml文件路徑
我的項目結構如下
2.編寫mapper接口(也有人叫Dao接口,其實意思是一樣的,都是對數據庫進行操作)
/**
* \*用戶表持久層接口
* \* Created with IntelliJ IDEA.
* \* Author: Poison
* \* Date: 2020/1/7
* \* CreateTime: 16:38
* \
*/
public interface UserMapper {
/**
* 查詢所有用戶
* @return
*/
List<User> findAll();
}
3.配置查詢SQL的XXXmapper.xml文件(此文件名對應上面的mapper接口名)
<?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="cn.poison.mapper.UserMapper">
<!-- 配置查詢所有用戶 -->
<select id="findAll" resultType="cn.poison.pojo.User">
select * from user
</select>
</mapper>
到這裏,基於xml的配置已經完成,可以進行使用測試
public static void main(String[] args) throws Exception{
//1.讀取配置文件
InputStream in= Resources.getResourceAsStream("mybatis/SqlMapConfig.xml");
//2.創建SqlSessionFactory工廠
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
//3.使用工廠生產SqlSession對象
UserMapperImpl mapper = new UserMapperImpl(factory);
//5.使用代理對象執行方法
List<User> userList = mapper.findAll();
userList.forEach(li-> System.out.println(li));
//6.釋放資源
in.close();
}
二、基於註解的配置方式
此方式與基於xml配置的方式比較使用,參考上面
1.其他與基於xml配置方式相同,基於註解的使用不需要配置mapper.xml文件,在使用時,只需要在mapper接口的方法上添加註解和sql語句
2.要在SqlMapConfig.xml文件中修改
至此配置結束
測試使用:使用動態代理,創建dao代理對象代替編寫實現類的方法
public class TestMybatis {
/**
* 測試查詢所有
*/
@Test
public void testQuery() throws Exception{
//1.讀取配置文件
InputStream in = Resources.getResourceAsStream("mybatis/SqlMapConfig.xml");
//2.獲取SqlSessionFactory對象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//3.獲取SqlSession對象
SqlSession sqlSession = factory.openSession();
//4.獲取dao的代理對象
IUserDao userDao = sqlSession.getMapper(IUserDao.class);
//5.執行查詢所有的方法
List<User> userList = userDao.findAll();
for (User user : userList) {
System.out.println("------->"+user);
}
//提交事務
sqlSession.commit();
//6.釋放資源
sqlSession.close();
in.close();
}