使用maven建立mybatis專案
阿新 • • 發佈:2020-09-09
一、建立空專案
mvn archetype:generate
發現少了src/main/resources目錄,於是新建一個,然後開啟專案下的隱藏檔案.classpath,新增
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"> <attributes> <attribute name="maven.pomderived" value="true"/> </attributes> </classpathentry>
二、匯入依賴
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.5</version> </dependency> <dependency> <groupId>org.xerial</groupId> <artifactId>sqlite-jdbc</artifactId> <version>3.32.3.2</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <scope>provided</scope> </dependency>
具體版本依據maven倉庫的最新版本為準
三、配置mybatis
建立resources/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="dev"> <environment id="dev"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="org.sqlite.JDBC" /> <property name="url" value="jdbc:sqlite::resource:sqlite/demo.db" /> </dataSource> </environment> </environments> </configuration>
我將sqlite資料庫儲存在resources/sqlite目錄下了
建表
create table `user` ( `id` integer primary key autoincrement, `name` text not null, `age` integer default 0 );
順便插入幾條資料
insert into user(name) values ('張三'), ('李四'), ('王五');
我選擇使用mybatis的代理模式來操作資料庫,建立實體類
package demo.entity; import lombok.Data; @Data public class User { private Long id; private String name; private Integer age; }
建立持久層介面
package demo.repository; import java.util.List; import demo.entity.User; public interface UserRepository { List<User> findAll(); }
建立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="demo.repository.UserRepository"> <select id="findAll" resultType="demo.entity.User"> select * from user </select> </mapper>
註冊mapper
<?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="dev"> <environment id="dev"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="org.sqlite.JDBC" /> <property name="url" value="jdbc:sqlite::resource:sqlite/demo.db" /> </dataSource> </environment> </environments> <mappers> <mapper resource="mapper/UserRepository.xml" /> </mappers> </configuration>
四、啟動
修改啟動類App.java
package demo; import java.io.IOException; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import demo.repository.UserRepository; public class App { public static void main(String[] args) { try { InputStream inputStream = Resources.getResourceAsStream("config.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); UserRepository userRepository = sqlSession.getMapper(UserRepository.class); System.out.println(userRepository.findAll()); } catch (IOException e) { e.printStackTrace(); } } }