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

 也可以使用類加載器加載配置文件

InputStream inputStream = App.class.getClassLoader().getResourceAsStream("config.xml");

 

五、打包

mvn clean package

 

在META-INF/MANIFEST.MF添加

Main-Class: demo.App

運行

java -jar demo.jar

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM