MyBatis简单项目(增删改查)-MyBatis的快速入门

0.准备工作

0.1新建MySQL数据库

数据库结构如下:

 

 

数据库建表内容如下:

CREATE TABLE `ss_dept` (
  `id` varchar(40) NOT NULL,
  `name` varchar(50) DEFAULT NULL,
  `parent_id` varchar(40) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE `ss_user` (
  `id` varchar(40) NOT NULL,
  `name` varchar(50) DEFAULT NULL COMMENT '不能重复,可为中文',
  `password` varchar(64) DEFAULT NULL COMMENT 'shiro MD5密码32位',
  `gender` varchar(1) DEFAULT NULL,
  `telephone` varchar(11) DEFAULT NULL,
  `email` varchar(60) DEFAULT NULL,
  `dept_id` varchar(40) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='后台用户表';



CREATE TABLE `st_company` (
  `id` varchar(50) CHARACTER SET utf8 NOT NULL COMMENT 'ID',
  `name` varchar(255) DEFAULT NULL COMMENT '公司名称',
  `address` varchar(255) DEFAULT NULL COMMENT '公司地址',
  `phone` varchar(255) DEFAULT NULL COMMENT '公司电话',
  `industry` varchar(255) DEFAULT NULL COMMENT '所属行业',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='公司表';

 数据库内容插入:

INSERT INTO `ss_dept`(`id`, `name`, `parent_id`) VALUES ('100', '集团总部', NULL);
INSERT INTO `ss_dept`(`id`, `name`, `parent_id`) VALUES ('100101', '顺义校区', '100');
INSERT INTO `ss_dept`(`id`, `name`, `parent_id`) VALUES ('100101101', '顺义教研部', '100101');
INSERT INTO `ss_dept`(`id`, `name`, `parent_id`) VALUES ('100101102', '顺义人事部', '100101');
INSERT INTO `ss_dept`(`id`, `name`, `parent_id`) VALUES ('100102', '昌平校区', '100');
INSERT INTO `ss_dept`(`id`, `name`, `parent_id`) VALUES ('100102101', '昌平教研部', '100102');
INSERT INTO `ss_dept`(`id`, `name`, `parent_id`) VALUES ('100102102', '昌平学工部', '100102');
INSERT INTO `ss_dept`(`id`, `name`, `parent_id`) VALUES ('100102103', '昌平行政部', '100102');
INSERT INTO `ss_dept`(`id`, `name`, `parent_id`) VALUES ('100103', '总部研究院', '100');
INSERT INTO `ss_dept`(`id`, `name`, `parent_id`) VALUES ('100104', '总部总裁办公室', '100');
INSERT INTO `ss_dept`(`id`, `name`, `parent_id`) VALUES ('100105', '总部博学谷', '100');
INSERT INTO `ss_dept`(`id`, `name`, `parent_id`) VALUES ('100106', '总部人事部', '100');
INSERT INTO `ss_dept`(`id`, `name`, `parent_id`) VALUES ('100107', '总部财务部', '100');



INSERT INTO `ss_user`(`id`, `name`, `password`, `gender`, `telephone`, `email`, `dept_id`) VALUES ('002108e2-9a10-4510-9683-8d8fd1d374ef', '老王', '4QrcOUm6Wau+VuBX8g+IPg==', '', '12345678', 'lw@export.com', '100101');
INSERT INTO `ss_user`(`id`, `name`, `password`, `gender`, `telephone`, `email`, `dept_id`) VALUES ('735730bf-3ac0-4690-882d-100178d58ff9', '花姐', '4QrcOUm6Wau+VuBX8g+IPg==', '', '13800138013', 'huajie@export.com', '100');
INSERT INTO `ss_user`(`id`, `name`, `password`, `gender`, `telephone`, `email`, `dept_id`) VALUES ('ca592c7c-860a-464c-8f56-ea51b42a046f', '小张', '4QrcOUm6Wau+VuBX8g+IPg==', '', '13800138021', 'xz@export.com', '100101');
INSERT INTO `ss_user`(`id`, `name`, `password`, `gender`, `telephone`, `email`, `dept_id`) VALUES ('cf0015d3-bcdd-433b-889d-808b53b72640', '马总', '4QrcOUm6Wau+VuBX8g+IPg==', '', '13800138022', 'mz@itheima.com', '100');
INSERT INTO `ss_user`(`id`, `name`, `password`, `gender`, `telephone`, `email`, `dept_id`) VALUES ('e0de22fe-2c50-4216-ad75-ed0494d2dc92', 'admin', '4QrcOUm6Wau+VuBX8g+IPg==', '', '13800138023', 'admin@itheima.com', '100101');
INSERT INTO `ss_user`(`id`, `name`, `password`, `gender`, `telephone`, `email`, `dept_id`) VALUES ('ef1f631d-76c8-4837-9ad9-f5f6209e4463', '小杨', '4QrcOUm6Wau+VuBX8g+IPg==', '', '13800138025', 'xiaoyang@export.com', '100');




INSERT INTO `st_company`(`id`, `name`, `address`, `phone`, `industry`) VALUES ('1', '北京淘宝网', '北京市朝阳区来广营', '010-88888888', '电子商务');
INSERT INTO `st_company`(`id`, `name`, `address`, `phone`, `industry`) VALUES ('10', '浪潮软件', '武汉市硚口区', '027-55555555', '软件服务');
INSERT INTO `st_company`(`id`, `name`, `address`, `phone`, `industry`) VALUES ('12', '简途旅行', '武汉市青山区', '027-6666666', '旅游出行');
INSERT INTO `st_company`(`id`, `name`, `address`, `phone`, `industry`) VALUES ('13', '绿盟科技', '武汉市青山区', '027-33333333', '软件服务');
View Code

0.2新建maven工程

    新建一个模块:

 

    选择maven工程:

    创建maven:

 

 

     初始的maven项目如图所示:

     

 

    配置pom文件:

    在<project>  </project>中添加依赖关系如下:

    <dependencies>
        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>
        <!-- mysql 驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.32</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>

        <!-- 添加slf4j日志api -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.20</version>
        </dependency>
        <!-- 添加logback-classic依赖 -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
        <!-- 添加logback-core依赖 -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.3</version>
        </dependency>

    </dependencies>

1.编写项目内容

  1.1编写pojo包,以及相对应的实体类:

     对应的实体类应写成标准JavaBean类:

    

              

    

               

  1.2编写mybatis配置文件,和logback配置文件(logback可以让控制台输出语句高亮,不是必须配置):

     新建xml配置文件:

    

 

     logback.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--
        CONSOLE :表示当前的日志信息是可以输出到控制台的。
    -->
    <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>[%level] %blue(%d{HH:mm:ss.SSS}) %cyan([%thread]) %boldGreen(%logger{15}) - %msg %n</pattern>
        </encoder>
    </appender>

    <logger name="com.itheima" level="DEBUG" additivity="false">
        <appender-ref ref="Console"/>
    </logger>

    <!--

      level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF
     , 默认debug
      <root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。
      -->
    <root level="DEBUG">
        <appender-ref ref="Console"/>
    </root>
</configuration>
View Code

     mybatis-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="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!--数据库连接信息-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///你自己的数据库名称?useSSL=false"/>
                <property name="username" value="root"/>
    
                <property name="password" value="你自己的密码"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!--加载sql映射文件-->
        <mapper resource="dao\CompanyMapper.xml"/>
        <mapper resource="dao\DeptMapper.xml"/>
        <mapper resource="dao\UserMapper.xml"/>
    </mappers>

</configuration>
View Code

  1.3编写sql映射文件:

       

     例如 :ConpannyMapper.xml配置文件如下:

<?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">

<!--
    namespace:名称空间
-->

<mapper namespace="dao.CompanyDao">

    <select id="findById" resultType="pojo.Company">
        select *
        from st_company
        where id = #{id};
    </select>
    <select id="findAll" resultType="pojo.Company">
        select *
        from st_company;
    </select>

</mapper>
View Code

     注意:配置文件中命名空间要和Java文件中的接口文件相对应:

     

  1.4编写dao包文件:

      

      XxxDao接口中的方法和XxxMapper中的sql语句一一对应,值得注意的是:dao文件和mapper文件要在同一目录下。

 2.编写测试文件(或者是写成主函数):

    

public class Entry {
    public static void main(String[] args) throws IOException {
        //1. 加载mybatis的核心配置文件,获取 SqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2. 获取SqlSession对象,用它来执行sql
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //3. 执行sql
//        List<User> users = sqlSession.selectList("pojo.mapper.UserMapper.selectAll");
        //获取mapper
        CompanyDao companyDao = sqlSession.getMapper(CompanyDao.class);
        DeptDao deptDao = sqlSession.getMapper(DeptDao.class);
        UserDao userDao = sqlSession.getMapper(UserDao.class);

        List<Company> companyDaoAll = companyDao.findAll();
        List<User> userDaoAll = userDao.findAll();
        Dept byId = deptDao.findById("100");

        System.out.println(companyDaoAll);
        System.out.println(userDaoAll);
        System.out.println(byId);
        //4. 释放资源
        sqlSession.close();
    }
View Code

 

 

 

 

 

    

    

 

   

    

 

posted @ 2021-12-08 17:01  MarcoXiang  阅读(78)  评论(0)    收藏  举报