Mybatis
Posted zhouchangyang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis相关的知识,希望对你有一定的参考价值。
一.MyBatis简介.
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
二.MyBatis快速入门.
1.在mevn库导入mybatis包和mysql包
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.1</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.6</version> </dependency>
2.创建resources文件并标记为资源文件,在该文件夹下创建mybatis的配置文件(mybatis-config.xml).
XML 配置文件中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager)。
<?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"/> <!--配置数据源的类型为链接池类型--> <dataSource type="POOLED"> <!--配置数据库--> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/zcy?serverTimezone=Asia/Shanghai"/> <property name="username" value="root"/> <property name="password" value="357159"/> </dataSource> </environment> </environments> </configuration>
3.加载mybatis配置文件.
从 SqlSessionFactory 中获取 SqlSession,SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 对象来直接执行已映射的 SQL 语句
public void init() throws IOException { //读取成输入流,注意为ibatis.io包下的 InputStream in = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(in);
SqlSession session = sessionFactory.openSession();
}
4.创建一个接口,.通过这个接口连接数据库查询.
package com.lanou.demo.mapper; import com.lanou.demo.bean.OrderBean; import java.util.List; public interface OrderMapper { //查询所有 List<OrderBean> findAll(); List<OrderBean> findDetails(); }
5.创建mapper的xml配置文件,这个文件相当于实现了上面接口的类,用来写sql语句.
<?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"> <!--命名空间,当前的mapping文件的唯一标识-->
<!--namespace指明这是实现的接口的路径--> <mapper namespace="com.lanou.demo.mapper.OrderMapper"> <!--这里写映射和sql语句-->
<!--映射:
映射表示查询返回的结果对应的实体类
id:该映射的id
type:这个映射对应的实体类
-->
<resultMap id="userWithOrdersMap" type="userBean">
<!--这个id表示查询结果的id列数据,result表示其他列的数据
column:查询结果id列的列名,property:映射的实体类的属性名
-->
<id column="user_id" property="userId"/>
<result column="username" property="username"/>
</resultMap>
<!--sql语句-->
<!--id是对应接口中的方法 resultMap是映射的id,表示该sql语句对应哪个映射-->
<select id="findAll" resultMap="orderWithUserMap">
select order_id,order_code,user_id,
us.user_id ,us.username
from tb_order
</select>
</mapper>
6.在mybatis-config.xml配置文件中引入mapper的配置文件.把下面代码添加到mybatis配置文件的<configuration>标签里
<!--引入所有的xml文件-->
<mappers> <!--引入方式--> <!-- <mapperclass="com.lanou.demo.mapper.UserRepository"/>--> <!-- <mapperresource="com/lanou/demo/mapper/UserRepository.xml"/> --> <!--批量引入Mapper文件--> <package name="com.lanou.demo.mapper"/> </mappers>
7.通过 SqlSession 实例来直接执行已映射的 SQL 语句,通过接口得到一个接口的实例
public void init() throws IOException { //读取成输入流,注意为ibatis.io包下的 InputStream in = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(in); //从 SqlSessionFactory 中获取 SqlSession, // SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。
SqlSession session = sessionFactory.openSession(); // 通过 SqlSession 实例来直接执行已映射的 SQL 语句
//通过接口得到一个接口的引用
OrderMapper orderMapper = session.getMapper(OrderMapper.class);
//调用口中的方法去xml文件中找到对应的sql语句
List<OrderBean> all = orderMapper.findAll(); }
以上是关于Mybatis的主要内容,如果未能解决你的问题,请参考以下文章
SSM-MyBatis-05:Mybatis中别名,sql片段和模糊查询加getMapper
MYBATIS05_ifwherechoosewhentrimsetforEach标签sql片段