Mybatis框架學習筆記一 基礎mybatis註解配置 1.編寫jdbcConfig.properties配置文件 2.項目是基於maven創建的所以需要先導入依賴 3.編寫實體類,與資料庫中的表對應(變數名與資料庫表相對應) 註意:最好自動生成不然容易寫錯 4.編寫持久層介面 5.編寫SqlMa ...
Mybatis框架學習筆記一
基礎mybatis註解配置
1.
編寫jdbcConfig.properties配置文件jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/資料庫名
jdbc.username=用戶名
jdbc.password=密碼
2.
項目是基於maven創建的所以需要先導入依賴<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
3.
編寫實體類,與資料庫中的表對應(變數名與資料庫表相對應)public class User implements Serializable {//實現序列化介面,便於數據封裝
private Integer id;
private String username;
private String address;
private String sex;
private Date birthday;
//下麵是get,set方式
...
}
註意:最好自動生成不然容易寫錯
4.
編寫持久層介面public interface IUserDao {
/**
* 在mybatis中針對CRUD一個有四個註解
* @Select @Inset @Update @Delete
*/
@Select("select * from user")
/*
當實體類與資料庫表相對應是,Mybatis框架會自動幫我們完成數據封裝;
如果實體類與與資料庫表不對應,則需要通過下列註解建立資料庫表與實體類的對應關係
id = true,表示此屬性是主鍵,其它Result註解不用寫,property 是實體類的屬性名,column是資料庫表的鍵名
@Results({
@Result(id = true, property = "id", column = "id"),
@Result(property = "username", column = "username"),
@Result(property = "email", column = "email"),
@Result(property = "password", column = "password"),
@Result(property = "sex", column = "sex"),
@Result(property = "birthday", column = "birthday")
})
*/
List<User> findAll();
}
5.
編寫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">
<configuration>
<!--引入外部配置文件-->
<properties resource="jdbcConfig.properties"></properties>
<!--配置別名-->
<typeAliases>
<package name="com.mybatis_learn.domain"></package>
</typeAliases>
<!--配置Mybatis環境-->
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<!--配置數據源-->
<!--
UNPOOLED 不使用連接池的數據源
POOLED 使用連接池的數據源
JNDI 使用 JNDI 實現的數據源
-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</dataSource>
</environment>
</environments>
<!--指定帶有註解的dao介面所在的位置-->
<mappers>
<package name="com.mybatis_learn.dao"></package>
</mappers>
</configuration>
6.
編寫測試類public class MybatisAnnoTest {
/**
* 測試基於註解的mybatis的使用
* @param args
*/
public static void main(String[] args) throws IOException {
//1.獲取位元組輸入流
InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.根據位元組輸入流構建SqlSessionFactory
SqlSessionFactory factory= new SqlSessionFactoryBuilder().build(is);
//3.根據SqlSessionFactory生產SqlSession
SqlSession session = factory.openSession();
//4.使用SqlSession獲取Dao的代理對象
IUserDao userDao = session.getMapper(IUserDao.class);
//5.執行Dao的方法
List<User> users = userDao.findAll();
for(User user : users){
System.out.println(user);
}
//6.釋放資源
session.close();
is.close();
}
}
目錄結構

運行測試代碼,成功從資料庫中查出數據。
如有錯漏,歡迎指正。
最後附上資料庫建表命令
CREATE TABLE `user` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(32) NOT NULL COMMENT '用戶名稱',
`birthday` datetime default NULL COMMENT '生日',
`sex` char(1) default NULL COMMENT '性別',
`address` varchar(256) default NULL COMMENT '地址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;