首页 > 其他分享 >MyBatis--ORM(对象关系映射)

MyBatis--ORM(对象关系映射)

时间:2023-01-07 11:36:05浏览次数:48  
标签:mapper -- appender mybatis ORM MyBatis org com log4j

环境搭建

创建项目

导入jar包

mybatis包

数据库驱动包

其它依赖包

编写配置文件

DTD配置

<?xml version="1.0"  encoding="utf-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybait.org//DTD ccnfig 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- properties加载外部文件 -->
<properties resource="db.properties"></properties>
<!--配置setting标签-->
<settings>
<!--设置mybaits使用log4j日志支持 -->
<setting name="logImpl" value="LOG4J"/>
</settings>
<!--typeAliases标签,给类型起别名,缩短全限定路径 -->
<typeAliases>
<!-- 对指定的类定义别名 -->
<typeAlias type="com.bjsxt.pojo.Users" alias="u"/>
<!-- 不设置别名时,别名默认为类名,且不区分大小写 -->
<typeAlias type="com.bjsxt.pojo.Users"/>
<!-- 设置在包上,将把包下所有类自动设置别名,别名默认为类名 -->
<package name="com.bjsxt.pojo"/>
</typeAliases>
<!-- 用于指定使用哪个环境 -->
<environments default="dev">
<!-- 用于配置环境 -->
<environment id="dev">
<!-- 事务管理器,设置 mybatis 使用什么方式来管理事务
type: JDBC表示采用和JDBC一样的管理方式 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据库连接池,用于配置数据库连接池和连接参数
type: 用于设置mybatis是否采用连接池
POOLED 表示采用连接池技术-->
<dataSource type="POOLED"
# 引用properties外部配置文件中的参数
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 扫描映射文件,与数据访问层的xml全路径及文件名相同,使用resource加载-->
<mappers>
<mapper resource="com/bjsxt/mapper/UserMapper.xml"/>
</mappers>
</configuration>

外部配置文件db.properties

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


定义POJO类

数据模型层

数据访问层(DAO层)

推荐使用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">
<!-- namespace 命名空间,一般使用全限定路径,包名+类名
mybatis 管理sql语句,通过 namespace+id 来定位
-->
<mapper namespace="com.bjsxt.mapper.UserMapper">
<!-- select 标签用于编写查询语句,
id: sql语句的唯一标识
resultType: 用于设定返回结果的类型(全限定路径),如果返回结果为集合,要写集合泛型的类型
-->
<select id="selAll" resultType="com.bjsxt.pojo.Users">
select * from users
</select>
</mapper>


执行查询

@Test
public void selectAll(){
try {
// 加载mybatis核心配置文件
InputStream is = Resources.getResourceAsStream("mybatis.xml");
// 构建SqlSessionFactory工厂对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);

SqlSession session = factory.openSession();
List<Users> list = session.selectList("com.bjsxt.mapper.UserMapper.selAll");

System.out.println(list);

session.close();
} catch (IOException e) {
e.printStackTrace();
}
}

查询结果为列表

mapper名+id

List<Users> list = session.selectList("com.bjsxt.mapper.UserMapper.selAll");

查询结果为单条记录

mapper名+id

Users user = session.selectOne("com.bjsxt.mapper.UserMapper.selAll");

查询结果为Map对象

mapper名+id, 指定列名作为map的键

Map<Object, Object> map = session.selectMap("com.bjsxt.mapper.UserMapper.selAll", "name");


LOG4J配置

log4j.rootLogger=INFO, Console, LOGFILE

# 打印日志到控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%p]-%d{ISO8601} : %m%n
# 为指定方法设置日志级别
log4j.logger.com.bjsxt.mapper.UserMapper.selOne=DEBUG
# 为指定类设置日志级别
log4j.logger.com.bjsxt.mapper.UserMapper=DEBUG
# 为指定包设置日志级别
log4j.logger.com.bjsxt.mapper=DEBUG

# 打印日志到文件
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=log/log4j.log
log4j.appender.LOGFILE.Append=false
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=[%p]-%d{ISO8601} : %m%n


标签:mapper,--,appender,mybatis,ORM,MyBatis,org,com,log4j
From: https://blog.51cto.com/u_15933100/5995415

相关文章

  • Vue项目中怎样把参数(对象)转成formdata传给后端? 封装函数 亲测有效
    普通传参格式如下:  想要的formData参数格式如下:  首先封装参数(对象)转换为formData格式getFormData(object){constformData=newFormData()......
  • 【删除交换】【哈希表】LeetCode 380. O(1) 时间插入、删除和获取随机元素
    题目链接380.O(1)时间插入、删除和获取随机元素思路下面引用宫水三叶大佬的题解insert操作:使用哈希表判断val是否存在,存在的话返回false,否则将其添加到nums,更......
  • 4路开关量输入设备S274可短信电话告警
    本设备支持4路继电器输出,额定范围:5A/30VDC,5A/250VAC。既可以设置为权限号码呼入进行控制,也可以用短信远程控制,或者通过定时器、事件关联自动控制、或者远程通过监控中心......
  • 软件测试之维护性测试
    维护性测试用于评估系统能够被预期的维护人员修改的有效性和效率的程度,可从模块化、可重用性、易分析性、易修改性、易测试性、易维护性1)模块化:评估由独立组件组成......
  • Windows配置rsync
    背景Windows上配置了git,支持部分Linux命令,也存在不支持的Linux命令,比如rsync。我想要用rsync实现文件的同步,因此耗费了一个上午进行搜索和配置,把过程记录下,下......
  • Q275FTC执行标准、Q275FTC风力发电塔钢、Q275FTC钢板化学成分
    一、Q275FTC钢板简介:Q275FTC属于碳素结构钢,风力发电专用钢板,Q275FTC钢板牌号介绍,Q=屈服点,275=钢板屈服单位Mpa,FT=风塔,C=钢板级别。舞阳钢厂可生产。Q275FTC钢板执行标准:GB/T......
  • QT信号与槽使用自定义数据类型的参数引发的问题
    1.发现问题今天使用信号与槽遇到一个这样的问题,我自定义了一个信号类型:signals:voidupdate_product_info(int,ProductInfoSign);ProductInfoSign的定......
  • monkey 压力测试报告分析内容
      一、日志结尾:如果Monkey测试顺利执行完成,在log的最后,会打印出当前执行事件的次数和所花费的时间;Monkeyfinished代表执行完成。(如果Monkey执行中断,在log的最后也能查......
  • LVS负载均衡DR模式
    第六章LVS负载均衡DR模式​实验图​推荐步骤​网站服务器LVS服务器存储和客户端配置ip地址​在centos04配置NFS共享存储两台web服务器连接到共享存储服务器​在centos01配置......
  • Linux搭建ESP-IDF开发环境
    下载[email protected]:EspressifSystems/esp-gitee-tools.git替换github网址cdesp-gitee-tools./jihu-mirror.shset下载ESP-IDF和子模块,这里......