01、MyBatis HelloWorld
1. MyBatis简介 1)MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架 2)MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集 3)MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录 2. 使用 MyBatis原因 1)JDBC (1)SQL 夹在 Java 代码块里,耦合度高导致硬编码内伤 (2)维护不易且实际开发需求中 sql 是有变化,频繁修改的情况多见 2)Hibernate 和 JPA (1)长难复杂 SQL,对于 Hibernate 而言处理也不容易 (2)内部自动生产的 SQL,不容易做特殊优化 (3)基于全映射的全自动框架,大量字段的 POJO 进行部分映射时比较困难。导致数据库性能下降 3)MyBatis (1)对开发人员而言,核心 sql 还是需要自己优化 (2)sql 和 java 编码分开,功能边界清晰,一个专注业务、一个专注数据 3. MyBatis下载 1)下载网址 https://github.com/mybatis/mybatis-3/ ? ? ? ? ? ? ? ? ? 4. MyBatis HelloWorld ??· HelloWorld ?– 创建一张测试表 ????– 创建对应的javaBean ????– 创建mybatis配置文件,sql映射文件 ????– 测试 1) 开发环境准备 (1) 导入 MyBatis 框架的 jar 包、Mysql 驱动包、log4j 的 jar 包 log4j:经典的一种日志解决方案。内部把日志系统抽象封装成Logger 、appender 、pattern 等实现。我们可以通过配置文件轻松的实现日志系统的管理和多样化配置。 mysql-connector:连接数据库的驱动 mybatis:使用mybatis框架
(2)导入log4j的配置文件?? <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration
xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="STDOUT"
class="org.apache.log4j.ConsoleAppender">
<param name="Encoding" value="UTF-8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) n" />
</layout>
</appender>
<logger name="java.sql">
<level value="debug" />
</logger>
<logger name="org.apache.ibatis">
<level value="info" />
</logger>
<root>
<level value="debug" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>
2)创建Mysql测试表
3)Employee ??使用Employee接收数据库的记录.?? public class Employee { private Integer id; String lastName; String email; String gender; public Integer getId() { return id; } void setId(Integer id) { this.id = String getLastName() { lastName; } setLastName(String lastName) { this.lastName = String getEmail() { email; } setEmail(String email) { this.email = String getGender() { gender; } setGender(String gender) { this.gender = gender; } @Override String toString() { return "Employee [id=" + id + ",lastName=" + lastName + ",email=" + email + ",gender=" + gender + "]"; } } ?4)配置文件 (1)参考MyBatis官方手册 <?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" />
<property name="username" value="root" />
<property name="password" value="root123" />
</dataSource>
</environment>
</environments>
<!-- !!!!!!!!!非常重要!!!!!!!!!!!! -->
<!-- 将我们写好的sql映射文件<EmployeeMapper.xml>一定要注册到全局配置文件中 -->
<mappers>
<mapper resource="EmployeeMapper.xml" />
</mappers>
</configuration>
(2)创建MyBatis的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">
<mapper namespace="com.atguigu.mybatis.EmployeeMapper">
<!--
namespace:名称空间;指定为接口的全类名
id:唯一标识
resultType:返回值类型
#{id}:从传递过来的参数中取出id值
public Employee getEmpById(Integer id);
-->
<select id="selectEmp" resultType="com.atguigu.mybatis.bean.Employee">
select id,last_name lastName,email,gender from tbl_employee where id = #{id}
</select>
</mapper>
5)测试 (1) 构建 SqlSessionFactory ??根据全局配置文件,利用SqlSessionFactoryBuilder创建SqlSessionFactory?
(2)从 SqlSessionFactory 中获取 SqlSession ??使用SqlSessionFactory获取sqlSession对象。一个SqlSession对象代表和数据库的一次会话。 ??使用SqlSession根据方法id进行操作。 ?① 最新版的Session获取方式
② 4.1版本获取方式
(3)NameSpaces说明?? ??(4)注入框架说明 ? 使用接口式编程 ? interface EmployeeMapper { Employee getEmpById(Integer id); } @Test void test1() throws IOException { //1. 获取SQLSessionFactory对象 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 2.获取sqlsession对象 SqlSession openSession = sqlSessionFactory.openSession(); 3.获取接口的实现类对象 接口的类对象会为接口自动的创建一个代理对象,代理对象去执行增删改查方法 try { EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.); Employee employee = mapper.getEmpById(1); System.out.println(mapper.getClass()); System.out.println(employee); } finally { openSession.close(); } } <select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee"> select id,gender from tbl_employee where id = #{id} </select> 参考文档:https://mybatis.org/mybatis-3/zh/getting-started.html https://github.com/mybatis/mybatis-3/ ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |