myBatis配置文件模板(简易版)
- 格式:ppt
- 大小:134.00 KB
- 文档页数:6
Mybatis的配置⽂件和映射⽂件详解⼀、Mybatis的全局配置⽂件1、SqlMapConfig.xml(名称可变)是mybatis的全局配置⽂件,配置内容如下:properties(属性)settings(全局配置参数)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象⼯⼚)plugins(插件)environments(环境集合属性对象)environment(环境⼦属性对象)transactionManager(事务管理)dataSource(数据源)mappers(映射器)2、properties将数据库连接参数单独配置在db.properties(名称可变)中,放在类路径下。
这样只需要在SqlMapConfig.xml中加载db.properties的属性值。
这样在SqlMapConfig.xml中就不需要对数据库连接参数硬编码。
将数据库连接参数只配置在db.properties中,原因:⽅便对参数进⾏统⼀管理,其它xml可以引⽤该db.properties例如:db.propertiesjdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatisername=rootjdbc.password=root相应的SqlMapConfig.xml<properties resource="db.properties"/><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${ername}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments>注意: MyBatis 将按照下⾯的顺序来加载属性:⾸先、在properties标签中指定的属性⽂件⾸先被读取。
Mybatis⽇志配置⽂件log4j.properties#log4j⽇志级别如下:#A:off 最⾼等级,⽤于关闭所有⽇志记录。
#B:fatal 指出每个严重的错误事件将会导致应⽤程序的退出。
#C:error 指出虽然发⽣错误事件,但仍然不影响系统的继续运⾏。
#D:warn 表明会出现潜在的错误情形。
#E:info ⼀般和在粗粒度级别上,强调应⽤程序的运⾏全程。
#F:debug ⼀般⽤于细粒度级别上,对调试应⽤程序⾮常有帮助。
#G:all 最低等级,⽤于打开所有⽇志记录。
#但log4j只建议使⽤4个级别,优先级从⾼到低分别是:#error>warn>info>debuglog4j.rootLogger =debug,systemOut,logFile#输出到控制台log4j.appender.systemOut = org.apache.log4j.ConsoleAppenderyout = org.apache.log4j.PatternLayoutyout.ConversionPattern = [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%nlog4j.appender.systemOut.Target = System.out#输出到⽂件log4j.appender.logFile = org.apache.log4j.FileAppenderyout = org.apache.log4j.PatternLayoutyout.ConversionPattern = [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%nlog4j.appender.logFile.File = log/log4j.loglog4j.appender.logFile.Encoding = UTF-8#将⽇志输记录到MySQL数据库#log4j.appender.logDB = org.apache.log4j.jdbc.JDBCAppender#yout = org.apache.log4j.PatternLayout#log4j.appender.logDB.Driver = com.mysql.jdbc.Driver#log4j.appender.logDB.URL = jdbc:mysql://localhost:3306/log4j?characterEncoding=utf-8#er = root#log4j.appender.logDB.Password = root#log4j.appender.logDB.Sql = INSERT INTO t_log4j(project_name,create_date,level,category,file_name,thread_name,line,all_category,message)values('mybatis','%d{yyyy-MM-ddHH:mm:ss}','%p','%c','%F','%t','%L','%l','%m')⽇志⽂件输出⽅式有三种:输出到控制台,输出到⽂件,输出到数据库。
spring-mybatis.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance" xmlns:p ="/schema/p"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/bea ns/schema/beans/spri ng-beans-3.1.xsd/schema/context /schema/context/sp ring-context-3.1.xsd/schema/mvc/schema/mvc/spring -mvc-4.0.xsd"><!-- 自动扫描 --><context:component-scan base-package=".hnust" /><!-- 引入配置文件 --><bean id="propertyConfigurer"class="org.springframework.beans.factory.config.Prope rtyPlaceholderConfigurer"><property name="location" value="classpath:jdbc.prope rties" /></bean><bean id="dataSource" class="mons.dbcp.BasicDat aSource"destroy-method="close"><property name="driverClassName" value="${driver}" /><property name="url" value="${url}" /><property name="username" value="${username}" /><property name="password" value="${password}" /><!-- 初始化连接大小 --><property name="initialSize" value="${initialSize}">< /property><!-- 连接池最大数量 --><property name="maxActive" value="${maxActive}"></pro perty><!-- 连接池最大空闲 --><property name="maxIdle" value="${maxIdle}"></propert y><!-- 连接池最小空闲 --><property name="minIdle" value="${minIdle}"></propert y><!-- 获取连接最大等待时间 --><property name="maxWait" value="${maxWait}"></propert y></bean><!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSes sionFactoryBean"><property name="dataSource" ref="dataSource" /><!-- 自动扫描mapping.xml文件 --><property name="mapperLocations" value="classpath:com /cn/hnust/mapping/*.xml"></property></bean><!-- DAO接口所在包名,Spring会自动查找其下的类 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigure r"><property name="basePackage" value=".hnust.dao" /><property name="sqlSessionFactoryBeanName" value="sql SessionFactory"></property></bean><!-- (事务管理)transaction manager, use JtaTransactionManager f or global tx --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSource TransactionManager"><property name="dataSource" ref="dataSource" /> </bean></beans>。
MyBatis 配置文件基本结构一、MyBatis 配置文件基本结构在使用mybatis框架时,首先导入其对应的jar包,并进行相应的配置,所以得对配置文件的每个参数都得了解。
一个完全的mybatis配置文件结构如下:[html] view plain copy<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><!-- 配置文件的根元素--><configuration><!-- 属性:定义配置外在化--><properties></properties><!-- 设置:定义mybatis的一些全局性设置--><settings><!-- 具体的参数名和参数值--><setting name="" value=""/></settings><!-- 类型名称:为一些类定义别名--><typeAliases></typeAliases><!-- 类型处理器:定义Java类型与数据库中的数据类型之间的转换关系--><typeHandlers></typeHandlers><!-- 对象工厂--><objectFactory type=""></objectFactory><!-- 插件:mybatis的插件,插件可以修改mybatis的内部运行规则--><plugins><plugin interceptor=""></plugin></plugins><!-- 环境:配置mybatis的环境--><environments default=""><!-- 环境变量:可以配置多个环境变量,比如使用多数据源时,就需要配置多个环境变量--><environment id=""><!-- 事务管理器--><transactionManager type=""></transactionManager><!-- 数据源--><dataSource type=""></dataSource></environment></environments><!-- 数据库厂商标识--><databaseIdProvider type=""></databaseIdProvider><!-- 映射器:指定映射文件或者映射类--><mappers></mappers></configuration>propertiesproperties元素主要是用来定义配置外在化,比如数据库的连接属性等。
MyBatis xml配置文件详解一、MyBatis 配置文件基本结构在使用mybatis框架时,首先导入其对应的jar包,并进行相应的配置,所以得对配置文件的每个参数都得了解。
一个完全的mybatis配置文件结构如下:[html] view plain copy<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><!-- 配置文件的根元素--><configuration><!-- 属性:定义配置外在化--><properties></properties><!-- 设置:定义mybatis的一些全局性设置--><settings><!-- 具体的参数名和参数值--><setting name="" value=""/></settings><!-- 类型名称:为一些类定义别名--><typeAliases></typeAliases><!-- 类型处理器:定义Java类型与数据库中的数据类型之间的转换关系--><typeHandlers></typeHandlers><!-- 对象工厂--><objectFactory type=""></objectFactory><!-- 插件:mybatis的插件,插件可以修改mybatis的内部运行规则--><plugins><plugin interceptor=""></plugin></plugins><!-- 环境:配置mybatis的环境--><environments default=""><!-- 环境变量:可以配置多个环境变量,比如使用多数据源时,就需要配置多个环境变量--><environment id=""><!-- 事务管理器--><transactionManager type=""></transactionManager><!-- 数据源--><dataSource type=""></dataSource></environment></environments><!-- 数据库厂商标识--><databaseIdProvider type=""></databaseIdProvider><!-- 映射器:指定映射文件或者映射类--><mappers></mappers></configuration>propertiesproperties元素主要是用来定义配置外在化,比如数据库的连接属性等。
MyBatis全局配置⽂件详解⽬录MyBatis全局配置⽂件settings设置typeAliases类型命名存在的问题:@Alias("")environments环境transactionManager事务管理器JDBC:JdbcTransactionFactorydatabaseIdProvider数据库⼚商标识DB_VENDOR变短sql映射⽂件总结MyBatis全局配置⽂件MyBatis 的配置⽂件包含了影响 MyBatis ⾏为甚深的设置(settings)和属性(properties)信息。
⽂档的顶层结构如下:configuration配置properties属性settings设置typeAliases类型命名typeHandlers类型处理器objectFactory对象⼯⼚plugins插件environments环境environment 环境变量transactionManager事务管理器dataSource数据源databaseIdProvide r 数据库⼚商标识mappers映射器properties 属性mybatis可以使⽤properties来引⼊外部properties配置⽂件的内容resource:引⼊类路径下的资源url:引⼊⽹络路径或者磁盘路径下的资源<properties resource="dbconfig.properties"></properties>如果属性在不只⼀个地⽅进⾏了配置,那么 MyBatis 将按照下⾯的顺序来加载:在 properties 元素体内指定的属性⾸先被读取。
然后根据 properties 元素中的 resource 属性读取类路径下属性⽂件或根据 url 属性指定的路径读取属性⽂件,并覆盖已读取的同名属性。
– 最后读取作为⽅法参数传递的属性,并覆盖已读取的同名属性。
mybatis基础,mybatis核⼼配置⽂件properties元素peroperties元素可外部配置且可动态替换的,既可以在典型的 Java 属性⽂件中配置,亦可通过 properties 元素的⼦元素来传递为dataSource元素配置1 <properties>2 <property name="driver" value="com.mysql.jdbc.Driver" />3 <property name="url" value="jdbc:mysql://localhost:3306/test" />4 <property name="username" value="root" />5 <property name="password" value="root" />6 </properties>在properties元素的⼦元素中配置连接数据库驱动需要的东西之后在environment元素的dataSource元素中为其动态设置1 <environment id="development">2 <transactionManager type="JDBC" />3 <dataSource type="POOLED">4 <property name="driver" value="${driver}" />5 <property name="url" value="${url}" />6 <property name="username" value="${username}" />7 <property name="password" value="${password}" />8 </dataSource>9 </environment>将值设置为${name名称},,注意:这个name名不是dataSource下property的name名,与它⽆关,只是名字设置⼀样,⽽是上⾯properties下property的name名⽽datasource下的property的name属性不能改变,读取配置⽂件时需要固定名称。
Mybatis配置⽂件模板mybatis-config.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-////DTD Config 3.0//EN" "/dtd/mybatis-3-config.dtd"><configuration><!-- 配置属性 --><properties resource="db.properties" /><!-- 参数设置 --><settings><!-- 这个配置使全局的映射器启⽤或禁⽤缓存 --><setting name="cacheEnabled" value="true" /><!-- 全局启⽤或禁⽤延迟加载。
当禁⽤时,所有关联对象都会即时加载 --><setting name="lazyLoadingEnabled" value="true" /><!-- 当启⽤时,有延迟加载属性的对象在被调⽤时将会完全加载任意属性。
否则,每种属性将会按需要加载 --><setting name="aggressiveLazyLoading" value="true" /><!-- 允许或不允许多种结果集从⼀个单独的语句中返回(需要适合的驱动) --><setting name="multipleResultSetsEnabled" value="true" /><!-- 使⽤列标签代替列名。
MyBatis配置⽂件详解根元素<configuration>,⼦元素:<properties><setttings><typeAliases><typeHandlers><objectFactory><plugins><environments><databaseIdProvider><mappers>这些⼦元素的配置是有顺序的,只能按照上⾯的顺序配置。
可缺省部分⼦元素。
<properties>⽤于将内部的配置外在化,在<properties>中引⼊外部配置即可。
⽐如数据库的连接信息,我们可以直接写在全局配置⽂件中:<environments default="development"><environment id="development"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/my_db?serverTimezone=GMT"/><property name="username" value="chy"/><property name="password" value="abcd"/></dataSource></environment></environments>考虑到更换数据库时,运维从⼀⼤堆代码不好找数据库的连接信息,我们可以把数据库的连接信息拿出来,单独写在⼀个配置⽂件中。
mybatis环境搭建步骤(含配置⽂件代码)1.创建web项⽬2.将所需要的jar包放在项⽬内,并且build-path3.创建资源⽂件夹resources4.在资源⽂件夹中创建xml⽂件mybatis-config.xml,⽂件代码如下:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><configuration><!-- 起别名 --><typeAliases><typeAlias alias="Dept" type="org.entity.Dept"/></typeAliases><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/schooldb"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><mappers><!-- 加载的映射⽂件 --><mapper resource="org/dao/IDeptDao.xml"/></mappers></configuration>5.创建entity包,根据数据库表创建实体类,⼀个表对应⼀个实体类,表中的字段对应实体类中的属性6.创建dao包,在dao包中创建接⼝(在接⼝写⽅法,增删改查)public int addDept(Dept dept);public List<Dept> findDeptAll();7.在dao层中编写mapper.xml⽂件,⼀般mapper⽂件和接⼝⽂件名相同8.IDeptDao.xml中的内容如下:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-////DTD Mapper 3.0//EN""/dtd/mybatis-3-mapper.dtd"><mapper namespace="org.dao.IDeptDao"><!-- 查询部门的数量 --><select id="findCountDept" resultType="int">select count(*) from dept</select><!-- 添加信息 --><insert id="addDept" parameterType="org.entity.Dept">insert into dept(did,dname) values(#{did},#{dname});</insert><!-- 修改信息 --><update id="updateDept" parameterType="org.entity.Dept">update dept set dname = #{dname} where did = #{did}</update><!-- 删除 --><delete id="delDept" parameterType="org.entity.Dept" >delete from dept where did = #{did}</delete><!-- 查询全部 --><select id="findDeptAll" resultType="org.entity.Dept">select * from dept;</select><!-- 根据编号查询信息 --><select id="findDeptById" resultType="org.entity.Dept"parameterType="int">select * from dept where did = #{did}</select></mapper>9.编写测试类,代码如下:package org.test;import java.io.IOException;import java.io.InputStream;import java.util.List;import java.util.Scanner;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.dao.IDeptDao;import org.entity.Dept;import org.junit.After;import org.junit.Before;import org.junit.Test;public class TestMain {String path = "mybatis-config.xml";SqlSession session = null;InputStream in =null;@Beforepublic void before(){try {in = Resources.getResourceAsStream(path);session = new SqlSessionFactoryBuilder().build(in).openSession();} catch (IOException e) {e.printStackTrace();}}//查询部门数量@Testpublic void testCount() {// 加载xml⽂件int count = session.selectOne("org.dao.IDeptDao.findCountDept");System.out.println("⼀共有:" + count + "个部门");}//添加信息@Testpublic void addDept(){Dept dept = new Dept();dept.setDid(6);dept.setDname("运维部");int rel = session.insert("org.dao.IDeptDao.addDept",dept);//提交(增删改)mit();if(rel>0){System.out.println("添加成功");}else{System.out.println("添加失败");}}//查询全部@Testpublic void findAllDept(){List<Dept> dList = session.getMapper(IDeptDao.class).findDeptAll();for (Dept dept : dList) {System.out.println("编号:"+dept.getDid()+",名称:"+dept.getDname()); }}//根据编号查询public Dept findDeptById(int did){Dept dept = session.getMapper(IDeptDao.class).findDeptById(did);return dept;}//修改@Testpublic void updateDel(){findAllDept();System.out.println("请输⼊⽤户编号:");Scanner sc = new Scanner(System.in);int did = sc.nextInt();//根据编号查询Dept dept = findDeptById(did);System.out.println("需要修改的部门信息:");System.out.println("编号:"+dept.getDid()+",名称:"+dept.getDname()); System.out.println("请输⼊新的部门名称:");dept.setDname(sc.next());//调⽤修改的⽅法int rel = session.getMapper(IDeptDao.class).updateDept(dept);//提交mit();if(rel>0){System.out.println("修改成共");}else{System.out.println("修改失败");}}//删除@Testpublic void delDept(){findAllDept();System.out.println("请输⼊需要删除的编号:");Scanner sc = new Scanner(System.in);Dept dept = session.getMapper(IDeptDao.class).findDeptById(sc.nextInt());int rel = session.getMapper(IDeptDao.class).delDept(dept);mit();if(rel>0){System.out.println("删除成功");findAllDept();}}//最后执⾏@Afterpublic void after(){if(session!=null){session.close();}}}往期精彩点分享点点赞点在看。