mybatis註解簡單開發
阿新 • • 發佈:2021-02-12
通過XML方式的開發,需要mybatis的配置檔案,和對映的Mapper檔案。
使用註解開發就是省略了Mapper檔案。根據註解加反射的原理,也相當於寫了對映Mapper檔案。
所以,註解開發可以省略Mapper檔案。(mybatis的主配置檔案再與spring框架整合後可以省略)。
註解開發:
1,環境搭建。2,單表crud操作(代理dao)。3,多表查詢。4,快取的配置。
環境搭建
根據資料庫表建立相對應的實體類。
public class Account implements Serializable { private Integer id; private Integer uid; private Double money; private User user; } public class User implements Serializable { private Integer id; private String name; private List<Account> accounts; }
寫介面方法。
public interface IUserDao { // 直接寫SQL語句即可 @Select("select * from users") List<User> findAll(); @Select("select * from users where id = #{id}") User findById(Integer id); @Insert(value = "insert into users(name) values(#{name}) ") boolean addUser(User user); @Select("select * from users where name like #{name}") List<User> findByName(String name); } /** * 四大基礎註解。@Select,@Insert,@Update,@Delete */ public interface IAccountDao { @Select(value = "select * from account") List<Account>findAll(); @Select(value = "select * from account where id = #{id}") Account findById(Integer id); }
寫mybatis的配置檔案。
<?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="mysql.properties"></properties> <!-- 這個包下的實體類自動起別名,為類名,無視大小寫--> <typeAliases> <package name="domain"/> </typeAliases> <!-- 配置資料來源--> <environments default="mysql"> <environment id="mysql"> <transactionManager type="JDBC"></transactionManager> <!-- pooled 連線池--> <dataSource type="POOLED"> <!-- ${key}引用外部properties中的key--> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <!-- 介面Mapper檔案的路徑,按包指定--> <mappers> <!-- 根據maven的習慣,XML配置的檔案響應的路徑也是在此包下,編譯後,此包中存在有介面和Mapper檔案--> <package name="dao"/> </mappers> </configuration>
test程式碼:
public class Test {
@org.junit.Test
public void test1() throws IOException {
// 1,獲取位元組輸入流
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
// 2,根據位元組輸入流建立SqlSessionFactory
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
// 3,使用SqlSessionFactory建立一個SqlSession
SqlSession session = factory.openSession(true);
// 4,使用SqlSession獲取dao的代理物件
IAccountDao accountDao = session.getMapper(IAccountDao.class);
// 5,執行dao方法
List<Account> all = accountDao.findAll();
for (Account account : all) {
System.out.println(account);
}
// 6,釋放資源
session.close();
in.close();
}
}
執行結果:
增刪改的單表查詢直接在相應註解中寫SQL語句即可。
最後一點需要注意的就是,resource的Mapper包中,不能有Mapper檔案的存在,儘管mybatis配置檔案中沒有寫也不能有。(不同於spring框架的配置檔案)。
意思就是:註解開發就只能有一個mybatis的主配置檔案,其他的與mybatis有關的XML就不要了。
模糊查詢:
@org.junit.Test
public void test(){
IUserDao userDao = session.getMapper(IUserDao.class);
// 這裡字串傳值,採用的是預處理的方式
List<User> list = userDao.findByName("%k%");
for (User user : list) {
System.out.println(user);
}
}
執行結果: