1.Mybatis的hello world的搭建
1.1mybatis的基本介绍
引用官网的一段话: “ MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。”
开发环境以及开发工具:jdk1.8+idea
第一步:
用idea创建maven工程(步骤省略)
第二步:添加pom文件依赖
<dependencies>
<!--导入mybaits的依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!--数据库驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<!--测试包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--log4j-->
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
<!--配置多个资源节点-->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
构建maven工程很好的地方就是不用自己下jar包,直接导入maven依赖的所需要jar包的坐标,maven就会自动从maven的中央厂库下载,如果不知道jar包的坐标是什么,这里提出两个解决方法:
1,可以从maven的中央厂库下载,网址我贴出来。maven中央厂库
进入网址后直接搜索mybatis就会出现对应各个版本:
选择第一个
进入之后就是mybatis各个版本的依赖的坐标
我用的版本是3,4.6 选择了对用的版本之后就会进入下面这个页面
复制对应的坐标信息到pom.xml文件上既可。
当然可以通过这种方法,找到我们所需要的大部分jar包的依赖
第二个解决:直接进入mybatis的官网 上面会有mybatis的依赖。
我们学习一个新的知识点的时候,一定要尝试看官方文档,上面会有很详细的案例讲解。
我们接着上面的步骤 第三步 :
配置mybatis-config.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>
<settings>
<!--建议显示的指定我们需要配置的值,防止版本更新带来的问题-->
<!--开启驼峰命名规则-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<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/ideatest?characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--<mapper resource="org/mybatis/example/BlogMapper.xml"/>-->
<!--也可以使用package-->
<package name="com.kuake.dao.mapper"></package>
</mappers>
</configuration>
上面的配置可以分为三个部分:(这里参考官方文档介绍)
<settings></settings>
标签:这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。 下表描述了设置中各项的意图、默认值等。
<environments></environments>
标签:MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者想在具有相同 Schema 的多个生产数据库中 使用相同的 SQL 映射。有许多类似的使用场景。
<mapper></mapper>
既然 MyBatis 的行为已经由上述元素配置完了,我们现在就要定义 SQL 映射语句了。 但是首先我们需要告诉 MyBatis 到哪里去找到这些语句。 Java 在自动查找这方面没有提供一个很好的方法,所以最佳的方式是告诉 MyBatis 到哪里去找映射文件。 你可以使用相对于类路径的资源引用, 或完全限定资源定位符(包括 file:/// 的 URL),或类名和包名等。
<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers>
<package name="org.mybatis.builder"/>
</mappers>
第四步:编写mapper接口文件 与mapper.xml文件
注意:mapper接口的名字要与mapper.xml文件在同一文件夹下面,且文件名相同,package name=“org.mybatis.builder” 才能扫描到。
DepartMapper.java
package com.kuake.dao.mapper;
import com.kuake.bean.Department;
/**
* @author hao
* @create 2019-05-15 ${TIM}
*/
public interface DepartmentMapper {
/**
* 根据部门号查询部门号信息
*
* */
public Department getDepartmentById(Integer id);
}
DepartmentMapper .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">
<!--public Department getDepartmentById(Integer id);-->
<mapper namespace="com.kuake.dao.mapper.DepartmentMapper">
<select id="getDepartmentById" resultType="com.kuake.bean.Department" >
SELECT * FROM department WHERE id = #{id}
</select>
</mapper>
**注意:这里xxxxmapper与xxxmapper.xml 是接口绑定在一起的,要有下面几点要求:
-
xxxxMapper .xml的命名空间要是对应接口的权限类名。如:
<mapper namespace="com.kuake.dao.mapper.DepartmentMapper">
这里的DepartmentMapper.xml
的namaspace:就是DepartmentMapper这个接口的权限类名。 -
接口与xml配置文件的文件名相同,且在同一目录下
-
接口声明的方法入参数与返回值与xml文件中保持一致
-
sql语句标签的id要是对应接口的方法名如:
public Department getDepartmentById(Integer id);
的方法名与
<select id="getDepartmentById" resultType="com.kuake.bean.Department" >
SELECT * FROM department WHERE id = #{id}
</select>中的id要相同。
**实体类Department **
package com.kuake.bean;
import java.io.Serializable;
public class Department implements Serializable{
private long id;
private String depName;
private String description;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getDepName() {
return depName;
}
public void setDepName(String depName) {
this.depName = depName;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Override
public String toString() {
return "Department{" +
"id=" + id +
", depName='" + depName + '\'' +
", description='" + description + '\'' +
'}';
}
}
最后进行测试:
package com.kuake.test;
import com.kuake.bean.Department;
import com.kuake.dao.mapper.DepartmentMapper;
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 org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
/**
* @author hao
* @create 2019-05-17 ${TIM}
*/
public class DemoTest {
/**
*获得sessionFactory
*
*/
public SqlSessionFactory getSqlSessionFactory() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
return sqlSessionFactory;
}
@Test
public void test() throws IOException {
//获得sqlSessionFactory
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
// 获得Sqlsession
SqlSession sqlSession = sqlSessionFactory.openSession();
//获得mapper代理对象
DepartmentMapper mapper = sqlSession.getMapper(DepartmentMapper.class);
// 执行方法
Department departmentById = mapper.getDepartmentById(1);
// 输出结果
System.out.println(departmentById);
//关闭资源
sqlSession.close();
}
}
输出结果:
总结:
基本骤如下:
1.创建maven工程
2.添加mybatis ,数据库驱动,log4j, test 等相关依赖
3.编写mybatis-config.xml核心配置文件
4.编写xxxmapper接口与xxxmappe.xml(注意4点基本原则)
5.编写测试类
说明:
因为自己也是一个初学者,然后刚刚开始写博客,主要用于记录自己的学习过程,也方便自己以后复习,希望和大家一起共同进步…