1. 程式人生 > 實用技巧 >使用maven建立mybatis專案

使用maven建立mybatis專案

一、建立空專案

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();
        }
    }
}