ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

mybatis 第一个实例

2021-09-05 15:02:28  阅读:126  来源: 互联网

标签:xml 第一个 sqlsession 实例 lsq mybatis import com


2 第一个mybatis程序

步骤 搭建环境--》导入 maven 导入mybatis --》 编写代码----》测试代码

2.1 搭建环境

​ 1 . 创建数据库

 ```  sql
 create databases `mybatis`;
 use  `mybatis`;
 
 create table `user`(
     `id` int(20) not null  primary key,
     `name` varchar(20) ,
     `pwd` varchar(20) 
 ) engine=innodb  default CHARSET=utf8;
 
 insert into `user` (`id`,`name`,`pwd`) values
 (1,'张三','110'),
 (2,'李四','120'),
 (3,'王五','130')
 ```
  1. idea创建 maven项目
    • 创建一个普通的maven项目
    • image-20210904150343476

​ 把 项目中的src目录删除

​ 在maven配置文件 pom.xml 导入 mysql 和 mybatis junit 的依赖

 ```  xml
 <dependencies>
     <!--导入  mybatis 依赖-->
         <dependency>
             <groupId>org.mybatis</groupId>
             <artifactId>mybatis</artifactId>
             <version>3.4.6</version>
         </dependency>
 
     <!--mysql驱动-->
         <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
             <version>5.1.47</version>
         </dependency>
 
     <!--junit  单元测试-->
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <version>4.13.2</version>
             <scope>test</scope>
         </dependency>
 
     </dependencies>
 ```

3 创建一个模块

​ 在当前的项目上 , 右键 new module -----》 重新创建一个maven 项目, 新创建的这个相当子项目,

父项目导入的依赖, 子项目可以共享

4 从xml 构建 Sqlsessionfactory

image-20210904153029738

在resources 文件夹中, 创建 一个 mybatis核心配置文件 的 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://localhost:3306/mybatis?useSSL=false&amp;useUnicode=false&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    </mappers>
</configuration>

jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=false&characterEncoding=UTF-8

useSSL=true&useUnicode=true& 会出现错误, 把true 改成false

characterEncoding=UTF-8 支持中文

创建一个 包 com.lsq. dao. utils 获取sqlsessionFactory 的工具类

package com.lsq.utils;


//mybatis  工具类


import jdk.nashorn.internal.ir.ReturnNode;
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 java.io.IOException;
import java.io.InputStream;

/*

  sqlsessionFactorybuilder  -->   sqlSessionfactory   --> sqlsession

 */
public class MybatisUtils {



    private  static  SqlSessionFactory sqlSessionFactory;


    static{
            //通过一个流加载进来
        try {
            String resource="mybatis-config.xml";
            InputStream rs = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(rs);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


     //  从 sqlsessionFactory 中获取 sqlsession
    public  static SqlSession  getSqlsession(){
        SqlSession sqlSession = sqlSessionFactory.openSession();

        return  sqlSession;
    }

}

编写代码

​ 实体类

image-20210904193824615

Dao 接口 userDao

package com.lsq.dao;


import com.lsq.pojo.User;

import java.util.List;

/*
   操作数据库
*/
public interface UserDao {

   List<User>  getUsers();

}

接口对应的Mapper.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 = 绑定一个对应的Dao 接口 或 Mapper 接口  , 让这个mapper.xml  和接口产生联系 -->
<mapper namespace="com.lsq.dao.UserDao">

    <select id="getUsers"  resultType="com.lsq.pojo.User">

     select  * from  mybatis.user
    </select>

</mapper>

写好的mapper.xml 需要在 mybatis-config.xml (mybatis核心配置文件中配置)

 <mappers>
        <mapper resource="com/lsq/dao/UserMapper.xml"/>
 </mappers>

可以会遇到, 找不到mapper.xml 的情况,

解决1: 把mapper.xml 复制到 target/test-classes/com/lsq/dao/ 文件夹下

测试代码

package com.lsq.dao;

import com.lsq.pojo.User;
import com.lsq.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class UserDaoTest {

    @Test
    public  void test(){

      /*
           读取一个  mybatis-config  核心配置文件,
           sqlsessionFactoryBuild --> sqlsessionFactory --  sqlsession
       */
        SqlSession sqlsession = MybatisUtils.getSqlsession();

        //通过sqlsession 的  getMapper()方法 ,  返回接口的类型
        UserDao userdao = sqlsession.getMapper(UserDao.class);

        //通过获取的接口的对象 , 调用其方法
        List<User> users = userdao.getUsers();

        for (User u: users) {

            System.out.println(u);
        }

        //关闭资源
        sqlsession.close();

    }
}

运行结果

image-20210904195407405

可能出现的问题

  1. 配置的mapper.xml 文件没有注册
  2. mapper.xml 中 绑定的接口错误
  3. 绑定的方法名 错误
  4. 返回值类型错误
  5. maven导出资源问题

学习mybatis 遇到的类

sqlSessionFactoryBuilder

一旦创建了 sqlsessionFactory 就不需要它了 (最好用作局部方法变量)

sqlsessionfactory

一旦创建在运行期间一直存在 , 简单的使用单例模式

标签:xml,第一个,sqlsession,实例,lsq,mybatis,import,com
来源: https://www.cnblogs.com/lsqjava/p/15229426.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有