MyBatis连接数据库大概详情

1 篇文章 0 订阅
1 篇文章 0 订阅

MyBatis简单介绍:

    MyBatis是一个基于Java的持久化层框架、是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手工设置参数以及抽取结果集。MyBatis 使用简单的 XML 或注解来配置和映射基本体,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。  

使用MyBatis的优点和缺点:

    优点    

        接近JDBC,比较灵活。

        通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。

    缺点  

        编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此。
        SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库。

MyBatis链接数据库:
    首先创建一个Maven项目,然后在pom.xml文件中填写各种依赖包,现在咱们需要使用MyBatis,首先导入MyBatis的配置文件
<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.4</version>
    </dependency>
</dependencies>

dependencys是总体配置文件,必须用这个大标签包裹住dependency才能识别,接下来介绍一下子标签都是干嘛的

groupId:用于表示当前项目所属组,比如com.tangcco.bdqn

artifactId:用于表示当前项目组的唯一id,比如testUserAll

version:用于表示当前项目版本号,比如0.0.1-SNAPSHOT    SNAPSHOT这里表示当前项目还在开发中,未完成测试阶段

再导入MySql支持,还是在pom.xml文件中写

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.41</version>
</dependency>

咱们现在用的编程工具是idea,所以现在很方便,如果你写完配置文件了,下面会自动出现一个选项

  Maven projects need to be imported

Import Changes    Enable Auto-Import 

现在咱们选第一个Import Changes 。导入jar文件,如果你本地库没有的话它会自动去http://mvnrepository.com/下载所需的jar文件

导入之后在src/main/java/resources下面创建mybatis-config.xml文件,这是MyBatis配置文件,也是核心配置文件,先不用管这个,还是在这个resources里创建一个database.properties文件,,里面写

jdbc.driver=com.mysql.jdbc.Driver        MySql驱动
jdbc.url=jdbc:mysql://localhost:3306/你的数据库名称     MySql链接
jdbc.username= 你的MySql登录名
jdbc.password= 你的MySql登录密码

然后咱们再回mybatis-config.xml里,

先导入database.properties

<properties resource="database.properties"></properties>

然后再写

<environments default="dev">
    <environment id="dev">
        <transactionManager type="JDBC"></transactionManager>
        <dataSource type="POOLED">
            <property name="driver" value="${jdbc.driver}"></property>
            <property name="url" value="${jdbc.url}"></property>
            <property name="username" value="${jdbc.username}"></property>
            <property name="password" value="${jdbc.password}"></property>
        </dataSource>
    </environment>
</environments>

这个是配置MySql连接的参数    transactionManager标签里的type表示数据库自己的事务

dataSource标签的type表示使用MyBatis自带的数据库连接池来管理数据库连接

property标签表示数据库连接参数,value表示值,咱们前面写的database.properties文件里定义过数据库连接参数,所以直接在这个value里写${这里写你在database.properties定义的key值}

这里写完之后再创建dao层,先创建个java接口类,名字见名思意以Mapper结尾

里面定义你要操作数据库需要的接口比如查询全部

List<Project> queryProjectAll();

然后再创建相对应的XML配置文件

里面写,例如

<mapper namespace="com.tangcco.dao.ProjectMapper">
    <select id="queryProjectAll" resultMap="projectMap">
    select * from project
</select>
    <resultMap id="projectMap" type="Project">
        <id column="id" property="id"></id>
        <result column="projectName" property="projectname"></result>
    </resultMap>
</mapper>

mapper标签里面的namespace表示dao层的包名

select 标签里的id表示对应接口的方法名,resultMap是返回集合。

resuultMap的内容对应下面定义的resultMap的id就可以了。

resultMap标签表示一个集合,它里面的type是指这个集合对应的实体类,id是唯一标识,也是上面要写的resultMap名字

因为查询全部返回多条数据,要写相对应的数据库的列

具体操作方法如上。

然后回到mybatis-config.xml配置文件中,

<mappers>
    <mapper resource="com/tangcco/dao/ProjectMapper.xml"></mapper>
</mappers>

这是通过resource加载单个映射文件,需注意接口类和mapper.xml映射文件名称保持一致并在同一个目录中

基本配置就完成了,接下来让我们测试一下

首先创建一个工具类MyBatisutil链接数据库,代码如下

public class Mybatisuitl {
    private static SqlSessionFactory sqlSessionFactory;//声明一个静态的SqlSessionFactroy;

    static {
        try {
            InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");//获取mybatis-config.xml配置文件
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//让SqlSessionFactory绑定流
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession CreateSqlSession() {
        return sqlSessionFactory.openSession();//获取sqlsession对象
    }

    public static void CloseSqlSession(SqlSession sqlSession) {//关闭sqlsession对象
        if (sqlSession != null) {
            sqlSession.close();
        }
    }
}

最后一步,创建测试类,代码如下

public class TestProject {
    SqlSession sqlSession = null;

    @Test
    public void queryProjectAll() {//查询所有项目
        try {
            sqlSession = Mybatisuitl.CreateSqlSession();//获取sqlSession对象
       List<Project> list = sqlSession.getMapper(ProjectMapper.class).queryProjectAll();//获取数据库里的数据
            if (list != null) {
                for (Project project : list) {
                    System.out.println(project);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            Mybatisuitl.CloseSqlSession(sqlSession);//关闭SqlSession
        }
    }
}

sqlSession.getMapper(ProjectMapper.class).queryProjectAll();

这句话的意思是通过sqlSession获取到相对应的映射类

相关参考文献:https://blog.csdn.net/hcy54213/article/details/70738802,

https://blog.csdn.net/qq_35854462/article/details/74004441,

https://blog.csdn.net/u013412772/article/details/73648537,

https://blog.csdn.net/crave_shy/article/details/46584803。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值