1 MyBatis 註解開發
@Insert
:實現新增@Update
:實現更新@Delete
:實現刪除@Select
:實現查詢@Result
:實現結果集封裝@Results
:可以與@Result一起使用,封裝多個結果集@ResultMap
:實現引用@Results
定義的封裝@One
:實現一對一結果集封裝@Many
:實現一對多結果集封裝@SelectProvider
:實現動態SQL映射@CacheNamespace
:實現註解二級緩存的使用
主配置文件不能省略 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>
<properties resource="jdbc.properties"></properties>
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
<!--配置別名,配置 domain 類中的別名
配置了別名後,就不在區分大小寫
-->
<typeAliases>
<!--該包下所有的實體類都被註冊別名,類名就是別名,不在區分大小寫-->
<package name="com.tzb.domain"/>
</typeAliases>
<!--配置環境-->
<environments default="mysql">
<environment id="mysql">
<!--配置事務類型-->
<transactionManager type="JDBC"></transactionManager>
<!--配置數據源(連接池)-->
<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>
<!--指定dao接口所在的包,不需要再寫 mapper 以及resource或者 class-->
<mappers>
<package name="com.tzb.dao"/>
</mappers>
</configuration>
1.1 DAO
public interface IUserDao {
@Select(value = "select * from user")
List<User> findAll();
@Insert("insert into user(username,address,sex,birthday) " +
"values (#{username},#{address},#{sex},#{birthday})")
void saveUser(User user);
}
- 單元測試
public class MyBatisTest {
private InputStream in;
private SqlSessionFactory factory;
private SqlSession sqlSession;
private IUserDao userDao;
@Before
public void init() throws IOException {
// 1.讀取配置文件
in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.創建 SqlSessionFactory 工廠
factory = new SqlSessionFactoryBuilder().build(in);
// 3.使用工廠生產 SqlSession 對象
sqlSession = factory.openSession();
// 4.使用 SqlSession 創建DAO接口的代理對象
userDao = sqlSession.getMapper(IUserDao.class);
}
@After
public void destory() throws IOException {
// 提交事務
sqlSession.commit();
//6.釋放資源
sqlSession.close();
in.close();
}
@Test
public void testFindAll(){
List<User> users = userDao.findAll();
for (User user : users) {
System.out.println(user);
}
}
@Test
public void testSave(){
User user = new User();
user.setUsername("宮本武藏");
user.setAddress("日本");
user.setBirthday(new Date());
user.setSex("男");
userDao.saveUser(user);
}
}
2 註解建立實體類屬性和數據庫列表中列的對應關係