当前位置: 首页 > news >正文

七、MyBatis(一)

1. MyBatis是持久层框架

持久层是分层开发中专门负责访问数据源的一层,Java项目中每一层都有自己的作用,持久层的作用就是访问数据源,把访问数据源的代码和业务逻辑代码分离开,有利于后期维护和团队分工开发。同时也增加了数据访问代码的复用性。

2. MyBatis是ORM框架

ORM,中文名称:对象/关系 映射。是一种解决数据库发展和面向对象编程语言发展不匹配问题而出现的技术。

3. 搭建第一个MyBatis框架

(1)创建数据库表

创建t_book表

(2)创建Maven项目

(3)添加依赖

       <!--mysql驱动依赖--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency><!--mybatis依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency>

(4)创建MyBatis全局配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="mysql"><environment id="mysql"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"></property><property name="url" value="jdbc:mysql://localhost:3306/t_book?useSSL=false"></property><property name="username" value="root"></property><property name="password" value="123456"></property></dataSource></environment></environments>
</configuration>

(5)创建实体类

public class Book {private int id;private String name;private String author;private double price;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}
}

(6)创建映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper><!-- public List selectAllBooks(){}--><select id="selectAllBooks" resultType="org.example.pojo.Book">select * from t_book</select>
</mapper>

修改mabits.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="mysql"><environment id="mysql"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"></property><property name="url" value="jdbc:mysql://localhost:3306/t_book?useSSL=false"></property><property name="username" value="root"></property><property name="password" value="yourpassword"></property></dataSource></environment></environments><mappers><mapper resource="mapper/BookMapper.xml"></mapper></mappers>
</configuration>

(7)编写测试类,启动项目

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="a.b"><!-- public List selectAllBooks(){}--><select id="selectAllBooks" resultType="org.example.pojo.Book">select * from t_book</select>
</mapper>
public class Test {public static void main(String[] args) throws IOException {//指定核心配置文件的路径:String resource = "mybatis.xml";//获取加载配置文件的输入流:InputStream inputStream = Resources.getResourceAsStream(resource);//加载配置文件,创建了一个工厂类:SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//通过工厂类获取一个会话:SqlSession sqlSession = sqlSessionFactory.openSession();//执行查询:List list = sqlSession.selectList("a.b.selectAllBooks");//遍历:for (int i = 0;i<=list.size()-1;i++){Book book = (Book)list.get(i);System.out.println(book.getId()+" "+book.getName()+" "+book.getAuthor()+" "+book.getPrice());}//关闭资源:sqlSession.close();}
}

4. 别名设置

Mybatis提供了别名机制可以对某个类起别名或给某个包下所有类起别名,简化resultType取值的写法。

在核心配置文件中,通过<typeAlias>标签明确设置的类型的别名。

· type:类型全限定路径

· alias:别名名称

    <typeAliases><typeAlias type="org.example.pojo.Book" alias="Book"></typeAlias></typeAliases>

必须放在environments前面。

当类个数较多时,明确指定别名工作量较大,可以通过<package>标签指定包下全部类的别名。指定后所有类的别名就是类名。(也不区分大小写)

    <typeAliases><typeAlias type="org.example.pojo.Book" alias="Book"></typeAlias><package name="org.example.pojo"/></typeAliases>

PS:明确指定别名和指定包的方式可以同时存在。

5. 属性文件配置

创建db.properties文件

url=jdbc:mysql://localhost:3306/t_book?useUnicode=true&characterEncoding=utf8
driver=com.mysql.cj.jdbc.Driver
username=root
password=yourpassword

修改mybatis.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><properties resource="db.properties"></properties><typeAliases><typeAlias type="org.example.pojo.Book" alias="b"></typeAlias><package name="org.example.pojo"/></typeAliases><environments default="mysql"><environment id="mysql"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="${driver}"></property><property name="url" value="${url}"></property><property name="username" value="${username}"></property><property name="password" value="${password}"></property></dataSource></environment></environments><mappers><mapper resource="mapper/BookMapper.xml"></mapper></mappers>
</configuration>

6. MyBatis启动日志功能

MyBatis框架内置日志工厂,日志工厂负责自动加载项目中配置的日志。MyBatis支持以下日志:

SLF4J、Apache Commons Logging、Log4j 2、Log4j、JDKlogging

添加log4j的依赖:

        <dependency> <groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.14</version></dependency>

在resources中创建log4j.properties配置文件。名称必须叫这个名字,扩展名必须是.properties

#log4j中定义的级别:fatal(致命错误)>>error(错误)>warn(警告)>info(普通信息)>debug(调试信息)>trace(跟踪信息)
log4j.rootLogger=DEBUG,console
### console ###
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

如果说你只是想看sql执行过程,那么可以整体调高,局部降低:将整个日志级别调为ERROR,然后mapper.xml涉及的内容级别降低为TRACE。这样整体的多余信息不会输出,然后mapper.xml中的涉及内容会详细打印,log4j.properties加入:

log4j.logger.a.b = TRACE

http://www.dtcms.com/a/396145.html

相关文章:

  • asp网站安装网站关键词优化教程
  • 虚拟主机Ubuntu操作系统的安装和基础软件安装及配置教程
  • 网站建设的特征网络营销的工具和方法有哪些
  • 建设学校网站需求分析外贸网站建设如何做呢
  • Java IO 流详解:从原理到实战的全方位指南
  • 株洲网站优化网站设计实训心得体会
  • wordpress下拉菜单联动seo优化的常用手法
  • 多点网络网站制作系统荣成信用建设网站
  • 购物网站建设所需软件公司如何建设一个网站
  • 天津网站开发网站做英语陪同翻译兼职的网站
  • 做烘焙网站怎么样创建微信公众号
  • 漂亮的数据型网站wordpress文章页面宽度
  • 车载DoIP架构 --- 车辆声明报文间隔
  • 并发场景下使用 HashMap 可能出现死循环的原因?
  • 单链表/双链表/循环链表
  • 如何网站专题策划志愿服务网站开发
  • 宁波建设监理协会网站中国建设招标工程网站
  • PyQt5 中 LineEdit 控件数据的批量存储与读取
  • 商城网站需要多少空间四川建设厅的网站
  • 陕西建设银行缴费网站全球网络营销公司排名
  • 超快轻量级离线翻译服务器MTranServer在腾讯云轻量应用服务器上的全流程部署指南
  • 山东网站优化推广手机软件开发学什么
  • 自己做网站吗天元建设集团有限公司济宁分公司
  • 网站怎么推广引流巩义市网站建设培训班
  • 网站建设珠海 新盈科技做影视网站风险大吗
  • 开发网站需要问什么金华网络公司网站建设
  • 企业网站推广17有免费的网站服务器吗
  • 清欢互联网网站建设中国交通建设工程监督管理局网站
  • 二刷DC: 6靶场
  • Redis存储对象选择String还是Hash呢?怎么选择?