myBatis配置文件模板(简易版)
Mybatis的配置文件和映射文件详解
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日志配置文件
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配置文件
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 配置文件基本结构在使用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 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全局配置⽂件详解⽬录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元素
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配置⽂件模板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配置文件详解
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环境搭建步骤(含配置文件代码)
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();}}}往期精彩点分享点点赞点在看。
10.30Mybatis配置文件及其元素
10.30Mybatis配置⽂件及其元素10.30Mybatis配置⽂件及其元素Mybatis配置⽂件结构<?xml version="1.0" encoding="utf-8"?><!DOCTYPE configuration PUBLIC "-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><configuration><!-- 配置 --><properties /><!-- 属性 --><settings /><!-- 设置 --><typeAliases /><!-- 类型命名 --><typeHandlers /><!-- 类型处理器 --><objectFactory /><!-- 对象⼯⼚ --><plugins /><!-- 插件 --><environments><!-- 配置环境 --><environment><!-- 环境变量 --><transactionManager /><!-- 事务管理器 --><dataSource /><!-- 数据源 --></environment></environments><databaseIdProvider /><!-- 数据库⼚商标识 --><mappers /><!-- 映射器 --></configuration>注意:Mybatis配置⽂件的元素节点是有⼀定顺序的,节点位置必须按以上位置排序,否则会编译错误。
mybatis配置文件说明(configuration)
mybatis配置⽂件说明(configuration)1. xml结构(可查看mybatis-3-config.dtd)<!ELEMENT configuration (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, plugins?, environments?, databaseIdProvider?, mappers?)> <!ELEMENT databaseIdProvider (property*)><!ATTLIST databaseIdProvidertype CDATA #REQUIRED><!ELEMENT properties (property*)><!ATTLIST propertiesresource CDATA #IMPLIEDurl CDATA #IMPLIED><!ELEMENT property EMPTY><!ATTLIST propertyname CDATA #REQUIREDvalue CDATA #REQUIRED><!ELEMENT settings (setting+)><!ELEMENT setting EMPTY><!ATTLIST settingname CDATA #REQUIREDvalue CDATA #REQUIRED><!ELEMENT typeAliases (typeAlias*,package*)><!ELEMENT typeAlias EMPTY><!ATTLIST typeAliastype CDATA #REQUIREDalias CDATA #IMPLIED><!ELEMENT typeHandlers (typeHandler*,package*)><!ELEMENT typeHandler EMPTY><!ATTLIST typeHandlerjavaType CDATA #IMPLIEDjdbcType CDATA #IMPLIEDhandler CDATA #REQUIRED><!ELEMENT objectFactory (property*)><!ATTLIST objectFactorytype CDATA #REQUIRED><!ELEMENT objectWrapperFactory (property*)><!ATTLIST objectWrapperFactorytype CDATA #REQUIRED><!ELEMENT plugins (plugin+)><!ELEMENT plugin (property*)><!ATTLIST plugininterceptor CDATA #REQUIRED><!ELEMENT environments (environment+)><!ATTLIST environmentsdefault CDATA #REQUIRED><!ELEMENT environment (transactionManager,dataSource)><!ATTLIST environmentid CDATA #REQUIRED><!ELEMENT transactionManager (property*)><!ATTLIST transactionManagertype CDATA #REQUIRED><!ELEMENT dataSource (property*)><!ATTLIST dataSourcetype CDATA #REQUIRED><!ELEMENT mappers (mapper*,package*)><!ELEMENT mapper EMPTY><!ATTLIST mapperresource CDATA #IMPLIEDurl CDATA #IMPLIEDclass CDATA #IMPLIED><!ELEMENT package EMPTY><!ATTLIST packagename CDATA #REQUIRED>View Code2. setting标签参数说明参数说明参数描述值默认值cacheEnabled配置全局的启⽤或禁⽤缓存策略。
MyBatis如何写配置文件和简单使用
MyBatis如何写配置⽂件和简单使⽤MyBatis 如何写配置⽂件和简单使⽤MyBatis3.x这⾥简单贴⼀下MyBatis的介绍,具体使⽤⽅法会在代码中贴出。
MyBatis的前世今⽣MyBatis的前⾝就是iBatis,iBatis本是由Clinton Begin开发,后来捐给Apache基⾦会,成⽴了iBatis开源项⽬。
2010年5⽉该项⽬由Apahce基⾦会迁移到了Google Code,并且改名为MyBatis。
尽管如此,它的包结构仍然为ibatis。
/MyBatis介绍MyBatis是⼀个数据持久层(ORM)框架。
把实体类和SQL语句之间建⽴了映射关系,是⼀种半⾃动化的ORM实现。
MyBatis的优点:1.基于SQL语法,简单易学。
2.能了解底层组装过程。
3.SQL语句封装在配置⽂件中,便于统⼀管理与维护,降低了程序的耦合度。
4.程序调试⽅便。
所有sql语句,全部定义在xml(建议)中。
也可以通过注解的⽅式在接⼝上实现。
这些映射⽂件称之为mapper。
与传统JDBC的⽐较减少了61%的代码量最简单的持久化框架架构级性能增强SQL代码从程序代码中彻底分离,可重⽤增强了项⽬中的分⼯增强了移植性canMyBatisDemo包、类分布图: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><typeAliases><!-- 配置类型的别名 --><typeAlias alias="User" type="er" /></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://127.0.0.1:3306/mybatis?characterEncoding=UTF-8" /><property name="username" value="hncu" /><property name="password" value="1234" /><property name="poolMaximumActiveConnections" value="5"/></dataSource></environment></environments><mappers><mapper resource="cn/hncu/domain/User.xml"></mapper><mapper resource="cn/hncu/domain/User2.xml"></mapper></mappers></configuration>SqlSessionUtils.javapackage cn.hncu.utils;import java.io.IOException;import java.io.InputStream;import java.sql.Connection;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 com.mysql.jdbc.interceptors.SessionAssociationInterceptor;public class SqlSessionUtils {private static SqlSessionFactory sessionFactory=null;//DataSource--poolstatic{try {InputStream in=Resources.getResourceAsStream("mybatis-config.xml");//加载配置⽂件sessionFactory=new SqlSessionFactoryBuilder().build(in);/** 这⾥给出⼀种不需要使⽤Resources类加载⽂件的⽅法(利⽤ClassLoader以底层加载配置⽂件)sessionFactory=new SqlSessionFactoryBuilder().build(SqlSessionUtils.class.getClassLoader().getResourceAsStream("mybatis-config.xml")); */} catch (IOException e) {e.printStackTrace();}}public static SqlSessionFactory getSessionFactory(){return sessionFactory;}public static SqlSession getSqlSession(){return sessionFactory.openSession();}public static void main(String[] args) {//mybatis在池中控制的是连接的数量for(int i=0;i<10;i++){SqlSession s=getSqlSession();System.out.println(s);Connection con=s.getConnection();System.out.println("con: "+con);}}}User.javapackage cn.hncu.domain;public class User {private String id;private String name;private String pwd;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", pwd=" + pwd + "]";}}User的映射⽂件User.xml(最简单的配置⽂件)package cn.hncu.domain;import java.util.List;public interface UserMapper {public List<User> all();public List<User> user2(String string);public List<User> user3(User user);}UserMapper.java(接⼝,官⽅建议使⽤接⼝⽅式----更安全)package cn.hncu.domain;import java.util.List;public interface UserMapper {public List<User> all();public List<User> user2(String string);public List<User> user3(User user);}Demo1.javapackage cn.hncu.demo;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.ibatis.session.SqlSession;import org.junit.Test;import er;import erMapper;import cn.hncu.utils.SqlSessionUtils;public class Demo1 {@Testpublic void test1(){//先获取SqlSessionSqlSession s=SqlSessionUtils.getSqlSession();List<User> list=s.selectList("users.all");//返回结果⽤list封装,参数⽤id来指定使⽤映射⽂件中的哪⼀段,<select>或<insert>等sql操作// List<User> list=s.selectList("all");//省略命名空间----如果名称(id)冲突,则必须使⽤命名空间来进⾏识别//System.out.println(list);for(User u:list){System.out.println(u);}}<span style="color:#ff0000;">//使⽤接⼝⽅式操作数据库(推荐使⽤这种⽅式,更安全)/*步骤* 1.写⼀个接⼝:UserMapper,接⼝中的抽象⽅法名必须和<select>的属性id值相同,即⼀个抽象⽅法代表⼀段操作* 2.把User2.xml中的命名空间改成接⼝的完全类名* 3.在测试代码中(⼜dao层的java),⽤"s.getMapper()"获得⼀个代理类对象,使⽤该对象调⽤某个⽅法,即执⾏某段操作*/</span>@Test//⾯向接⼝的⽅式,以下调⽤的都是: User2.xmlpublic void test2(){//先获取SqlSessionSqlSession s=SqlSessionUtils.getSqlSession();UserMapper m=s.getMapper(UserMapper.class);//获得⼀个代理对象List<User>list=m.all();System.out.println(list);}///////////////test3()演⽰条件查询中的单条件查询,调⽤User2.xml///////////////////@Test//传统⽅式public void test3_1(){SqlSession s=SqlSessionUtils.getSqlSession();// List<User> users=s.selectList("erMapper.all");List<User> users=s.selectList("user2","2");//返回结果⽤List封装,内部的元素⽂件类型由映射⽂件配置System.out.println(users);}@Test//⾯向接⼝⽅式public void test3_2(){SqlSession s=SqlSessionUtils.getSqlSession();UserMapper u=s.getMapper(UserMapper.class);List<User> users=er2("3");System.out.println(users);}///////////////////多条件查询(条件查询最好⽤对象封装条件)//////////////@Testpublic void test4(){SqlSession s=SqlSessionUtils.getSqlSession();UserMapper u=s.getMapper(UserMapper.class);User user=new User();user.setId("4");user.setName("⼆蛋");List<User> users=er3(user);System.out.println(users);}@Testpublic void test5(){//返回结果⽤mapSqlSession s=SqlSessionUtils.getSqlSession();System.out.println(s);List<Map<String,Object>> users=s.selectList("user4");for(Map<String,Object> user:users){System.out.println(user);}}@Test//把输⼊参数设为mappublic void test6(){SqlSession s=SqlSessionUtils.getSqlSession();Map<String, Object> map=new HashMap<String,Object>();map.put("id", "5");map.put("name", "⼩奇");List<Map<String,Object>> users=s.selectList("user5",map);for(Map<String,Object> user:users){System.out.println(user);}}}User2.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN""/dtd/mybatis-3-mapper.dtd"><!-- 当前配置⽂件专⽤展⽰⾯向接⼝的操作⽅式 --><!--<mapper namespace="erMapper"><select id="all" resultType="er">select * from users</select></mapper>--><mapper namespace="erMapper"><!-- 使⽤了类型别名 --><select id="all" resultType="User">select * from users</select><!--条件查询之单条件查询,下⾯的sql语句的参数可以随便写 --><select id="user2" resultType="User" parameterType="string">select * from users where id=#{xx}</select><!--条件查询之多条件查询,下⾯的sql语句的参数必须要和值对象的属性名⼀致(要⽤if条件式判断参数是否为空) --><select id="user3" resultType="User" parameterType="string">select * from users where id=#{id}<if test="name!=null">and name=#{name}</if></select><!-- 把查询结果封装成List<Map<>> --><select id="user4" resultType="map">select * from users</select><!-- 把输⼊参数封装成map类型 --><select id="user5" resultType="hashmap" parameterType="hashmap">select * from users where id=#{id}<if test="name!=null">and name=#{name}</if></select></mapper>这⾥只是初次见到mybatis,知道了如何简单使⽤,具体复杂⽤法下次再贴出(对数据库的CRUD和使⽤过程中的⼀些细节)。
MyBatis主配置文件
MyBatis主配置⽂件MyBatis的使⽤⾮常简单,使⽤流程整体可以分成以下四步:public class UserDaoTest {private SqlSessionFactory sqlSessionFactory;@Beforepublic void setUp() throws Exception{ClassPathResource resource = new ClassPathResource("mybatis-config.xml");InputStream inputStream = resource.getInputStream();sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);}@Testpublic void selectUserTest(){String id = "1234567";SqlSession sqlSession = sqlSessionFactory.openSession();CbondissuerMapper cbondissuerMapper = sqlSession.getMapper(CbondissuerMapper.class);Cbondissuer cbondissuer = cbondissuerMapper.selectByPrimaryKey(id);System.out.println(cbondissuer);sqlSession.close();}}step1:根据主配置⽂件⽣成SqlSessionFactory;step2:从SqlSessionFactory获取SqlSession;step3:利⽤SqlSession根据Mapper⽂件进⾏增删改查;step4:关闭SqlSession。
最全MyBatis核心配置文件总结(收藏)
最全MyBatis核⼼配置⽂件总结(收藏)⽬录前⾔configurationpropertiessettingstypeAliasestypeHandlersobjectFactorypluginsenvironmentsdatabaseIdProvidermappers总结前⾔上⼀篇我们通过将MyBatis和传统JDBC,DBUtils,以及Hibernate作了简单的对⽐,并且列举了⼀个⾮常简单的demo,今天这篇主要介绍⼀下MyBatis的全局配置⽂件的使⽤configurationmybatis-config.xml⽂件的头部格式我们就不说了,直接从属性开始介绍,configuration为最顶层节点,其余所有的属性都必须嵌套在configuration内,MyBatis配置⽂件的顶层节点如下:<properties></properties><!-- 属性 --><settings></settings> <!-- 设置--><typeAliases></typeAliases><!-- 配置别名 --><typeHandlers></typeHandlers><!-- 类型处理器 --><objectFactory></objectFactory><!-- 对象⼯⼚ --><plugins></plugins><!-- 插件 --><environments default=""><!-- 环境配置--><environment id=""><!-- 环境变量 --><transactionManager></transactionManager><!-- 事务管理器 --><dataSource></dataSource><!-- 数据源 --></environment></environments><databaseIdProvider></databaseIdProvider><!-- 数据库⼚商标识 --><mappers></mappers><!-- 映射器 -->可以看到configuration内的全部顶层节点只有9个,下⾯我们就⼀个个来分析⼀下properties下⾯是⼀个相对完整的属性配置<!-- 配置resource--><properties resource="xxx/xxx.properties"><!-- 属性 --><property name="jdbc.driver" value="db.properties"/></properties><!-- 配置url--><properties url="http://xxxx"><!-- 属性 --><property name="jdbc.driver" value="db.properties"/></properties>上⾯我特意分开写,就是怕引起⼤家的误解,因为resource和url只允许存在⼀个,不能同时配置两个属性,可以看到源码中的解析过程:同时配置了resource和url会抛出异常。
详解Mybatis模板(已优化)适合小白
详解Mybatis模板(已优化)适合⼩⽩1.搭建数据库(我⽤的是mysql 5.5)#创建⼀个mybatis数据库create database `mybatis`;#使⽤mybatis数据库use `mybatis`;#创建⼀个user表,有id、username、password三个字段create table `user`(`id` int(10) not null primary key auto_increment,`username` varchar(30) default null,`password` varchar(30) default null)engine=InnoDB default charset=utf8;#插⼊数据insert into `user`(`username`,`password`) values('张三',123456),('李四',123456),('王五',123456);2.导⼊mybatis相关的jar包(COPY,建议创建⼀个⽗⼦项⽬)<dependencies><dependency><!--mysql依赖包--><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.19</version></dependency><!--mybatis依赖包--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.2</version></dependency><!--junit依赖包,为什么要⽤junit依赖包?@Test做单元测试⽤的--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency></dependencies><!--maven静态资源过滤问题:配置报错,不设置会报错:ExceptionInInitializerError--><build><resources><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources></build>3.编写MyBatisUtil⼯具类(COPY,低层原理还没有搞懂,直接复制的条件是要创建⼀个mybatis-config.xml⽂件⽂件名要⼀致)package com.kuang.utils;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 java.io.IOException;import java.io.InputStream;public class MybatisUtil {private static SqlSessionFactory sqlSessionFactory;static{try {String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);//SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);因为重复定义导致空指针异常sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {e.printStackTrace();}}public static SqlSession getSqlSession(){return sqlSessionFactory.openSession();}}4.1编写db.properties配置⽂件(COPY,是后来优化的)driver=com.mysql.cj.jdbc.Driverurl=jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username=rootpassword=root4.2编写MyBatis核⼼配置⽂件(COPY,mybatis-config.xml,已优化)<?xml version="1.0" encoding="UTF8" ?><!DOCTYPE configurationPUBLIC "-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><!--第⼀个问题:com.mysql.jdbc.Driver和mysql-connector-java 5⼀起⽤。
Mybatis配置解析一,环境配置(environments)
Mybatis配置解析⼀,环境配置(environments)1.核⼼配置⽂件 Mybatis-config.xml (配置)properties(属性)settings(设置)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象⼯⼚)plugins(插件)environments(环境配置)environment(环境变量)transactionManager(事务管理器)dataSource(数据源)databaseIdProvider(数据库⼚商标识)mappers(映射器)2.环境配置(environments) MyBatis 可以配置成适应多种环境 不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择⼀种环境。
代码实现<!--核⼼配置⽂件--><configuration><!--在此标签下写多个环境标签⽤来配置多个环境,当要调⽤某个环境时:改-》default即可--><environments default="test"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment><environment id="test"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments>1.2,事务管理器(仅需了解) 在 MyBatis 中有两种类型的事务管理器(也就是 type="[JDBC|MANAGED]"):(JDBC和managed)JDBC – 这个配置直接使⽤了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作⽤域。
Mybatis 配置文件
本文是记录自己学习 Mybatis 的内容,有些东西暂时理解不了,就直接省略了一、Mybatis的核心Mybatis 的所有配置都在一个文件中进行设置,那就是 Mybatis 的核心配置文件MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和SQL的映射,其中行为指的是 Mybatis 是怎么与数据库进行交互的,SQL 的映射是指在程序中找到 Mapper 的映射文件配置文件的顶层结构如下:configuration(配置)properties(属性)settings(设置)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environments(环境配置)environment(环境变量)transactionManager(事务管理器)dataSource(数据源)databaseIdProvider(数据库厂商标识)mappers(映射器)<configuration><!-- 全局属性 --><properties resource="jdbc.properties"/><!-- 数据库的环境配置 --><environments default="development"><environment id="development"><!-- 事务管理器 --><transactionManager type="JDBC"/><!-- 数据源 --><dataSource type="POOLED"><property name="driver"value="${db.driver}"/><property name="url"value="${db.url}"/><property name="username"value="${ername}"/><property name="password"value="${db.password}"/></dataSource></environment></environments><!-- 映射器:设置映射文件的位置 --><mappers><mapper resource="com/bugu/mapper/UserMapper.xml"/></mappers></configuration>二、常用的配置文件的结构配置文件中的标签必须按照固定的顺序【标签可以不写,但顺序一定不能乱】properties、settings、typeAliases、typeHandlers、objectFactory、objectWrapperFactory、reflectorFactory、plugins、environments、databaseIdProvider、mappers<configuration><properties resource="jdbc.properties"/><settings><!-- 全局性地开启或关闭所有映射器配置文件中已配置的任何缓存 --><setting name="cacheEnabled"value="true"/><!-- 是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名aColumn --><setting name="mapUnderscoreToCamelCase"value="true"/><!-- 延迟加载的全局开关。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、数据库
create table userDemo( user_id number primary key, user_name varchar2(36) not null, user_password varchar2(36) not null );
myBatis配置文件(简易模板)
myBatis配置文件(简易模板)
<!-- 配置映射文件,即指定实体的类路径 -->
<mappers> <mapper resource="com/entity/UserDemo.xml" /> </mappers> </configuration>
myBatis配置文件(简易模板)
四、实体类映射文件(UserDemo.xml),该映入文件与实体类放在同一个包里。 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-////DTD Mapper 3//EN" "/dtd/mybatis-3-Mapper.dtd"> <!– 实体类属性与数据库表的字段一一对应 --> <mapper namespace="erDemo" > <resultMap type="UserDemo" id="userMap" > <result property="userId" column="USER_ID"/> <result property="userName" column="USER_NAME"/> <result property="userPassword" column="USER_PASSWORD"/> </resultMap>
myBatis配置文件(简易模板)
<!-- 配置数据源 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:dbname"/> <property name="username" value="myBatis"/> <property name="password" value="myBatis"/> </dataSource> </environment> </environments>
myBatis配置文件(简易模板)
三、myBatis配置文件(configuration.xml)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-////DTD Config 3.0//EN“ "/dtd/mybatis-3-config.dtd"> <configuration> <!-- 实体类别名 --> <typeAliases> <typeAlias type="erDemo" alias="UserDemo"/> </typeAliases>
二、实体类
package com.entity;
public class UserDemo { private Integer userId; private String userName; private Stri来自g userPassword;
//此处省略getter\setter方法 }
<!–sql语句 ,下面的resutlMap为返回值类型,其值userMap为上文中的红色标记id--> <select id="selectUser" resultMap="userMap">select * from userDemo</select>
</mapper> 注:本示例是在myBatis-3.1.1.jar版本下编写的,在3.0(含)以上版本都可用