zoukankan      html  css  js  c++  java
  • 使用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
  • 相关阅读:
    ILockBytes Windows Mobile 6.5
    C# 中 in,out,ref 的作用与区别
    riched32.dll riched20.dll msftedit.dll 解析
    C# 解决窗体假死的状态
    testform
    ParallelProgramming-多消费者,多生产者同时运行并行
    C# 多线程控制 通讯
    C# 多线程
    iSpy免费的开源视频监控平台
    核心J2EE模式
  • 原文地址:https://www.cnblogs.com/viewts/p/13639062.html
Copyright © 2011-2022 走看看