MyBatis 3.2.4 官方文档

合集下载

mybatis resulttype 内部集合字段-概述说明以及解释

mybatis resulttype 内部集合字段-概述说明以及解释

mybatis resulttype 内部集合字段-概述说明以及解释1.引言1.1 概述概述部分:本文将讨论mybatis中resulttype的使用以及其中的内部集合字段。

在使用mybatis进行数据库操作时,resulttype是一个非常重要的关键字,它用于指定查询结果的返回类型。

在一些情况下,我们可能需要在查询结果中包含内部集合字段,来满足特定的业务需求。

本文将详细介绍如何使用mybatis resulttype以及如何处理内部集合字段。

在实际开发过程中,我们经常会遇到需要处理复杂数据结构的情况,例如一个订单对象包含多个商品对象。

为了能够在查询结果中同时返回订单信息和其包含的商品信息,我们可以使用mybatis中的resulttype来指定返回的结果类型。

同时,如果我们还需要在查询结果中包含商品信息的集合字段,以便于进一步操作或展示,那么就要使用内部集合字段的功能。

文章接下来的章节将详细介绍mybatis resulttype的使用方法以及如何处理内部集合字段。

首先,我们将介绍resulttype的基本概念和常用的数据类型,然后详细讲解如何配置resulttype以满足不同的查询需求。

接着,我们将探讨如何处理内部集合字段,包括使用嵌套结果映射和嵌套查询等方法。

最后,我们将总结本文内容并展望mybatis在处理复杂数据结构方面的发展前景。

通过深入研究mybatis resulttype和内部集合字段的使用,我们可以更好地应对复杂的业务需求,提高代码的可读性和可维护性,同时也能更加灵活地操作数据库。

希望本文的内容能够对读者在使用mybatis进行数据库操作时提供一些帮助和指导。

1.2 文章结构本文主要讨论mybatis中resultType与内部集合字段的使用。

文章结构如下:1. 引言1.1 概述:介绍mybatis及其在Java开发中的重要性和应用场景。

1.2 文章结构:介绍本文的组织结构和各个章节的内容。

Springboot中以配置类方式自定义Mybatis的配置规则(如开启驼峰映射等)

Springboot中以配置类方式自定义Mybatis的配置规则(如开启驼峰映射等)

Springboot中以配置类⽅式⾃定义Mybatis的配置规则(如开启驼峰映射等)什么是⾃定义Mybatis的配置规则?答:即原来在mybatis配置⽂件中中我们配置到<settings>标签中的内容,如下第6-10⾏内容:1<?xml version="1.0" encoding="UTF-8" ?>2<!DOCTYPE configuration3 PUBLIC "-////DTD Config 3.0//EN"4 "/dtd/mybatis-3-config.dtd">5<configuration>6<settings>7<setting name="lazyLoadingEnabled" value="true"/>8<setting name="aggressiveLazyLoading" value="false"/>9<setting name="logImpl" value="LOG4J"/>10</settings>11<environments default="development">12<environment id="development">13<transactionManager type="JDBC"/>14<dataSource type="POOLED">15<property name="driver" value="com.mysql.jdbc.Driver"/>16<property name="url"17 value="jdbc:mysql://localhost:3306/ssm?useSSL=true&amp;serverTimezone=Asia/Shanghai&amp;useUnicode=true&amp;characterEncoding=utf8"/>18<property name="username" value="root"/>19<property name="password" value="123456"/>20</dataSource>21</environment>22</environments>23<mappers>24<!--<mapper resource="com/xj/mapper/UserMapper.xml"/>-->25<mapper class="erMapper"/>26<mapper class="com.xj.mapper.AccountMapper"/>2728</mappers>29</configuration>在springboot我们不⽤编写xml配置⽂件,那么我们该怎么来配置这些设置呢?答:编写⼀个配置类,然后通过@Bean注解给容器中添加⼀个ConfigurationCustomizer类型的组件即可。

Mybatis3详解(四)----SQL映射文件详解(XxxMapper.xml)

Mybatis3详解(四)----SQL映射文件详解(XxxMapper.xml)

Mybatis3详解(四)----SQL映射⽂件详解(XxxMapper.xml)1映射器是Mybatis中最复杂并且是最重要的组件。

它由⼀个接⼝和xml映射⽂件(或者注解)组成。

在映射器中我们可以配置各类SQL、动态SQL、缓存、存储过程、级联等复杂的内容。

并且通过简易的映射规则映射到指定的POJO或者其它对象上,映射器能有效的消除JDBC的底层代码。

在Mybatis的应⽤程序开发中,映射器的开发⼯作量占全部⼯作量的80%,可见其重要性。

映射⽂件的作⽤是⽤来配置SQL映射语句,根据不同的SQL语句性质,使⽤不同的标签,其中常⽤的标签有:<select>、<insert>、<update>、<delete>。

下⾯列出了SQL 映射⽂件的⼏个顶级元素(按照应被定义的顺序列出):元素描述cache该命名空间的缓存配置(会在缓存部分进⾏讲解)cache-ref引⽤其它命名空间的缓存配置resultMap描述如何从数据库结果集中加载对象,它是最复杂也是最强⼤的元素parameterMap定义参数映射。

此元素已被废弃,并可能在将来被移除!请使⽤⾏内参数映射parameType。

所以本⽂中不会介绍此元素sql可被其它语句引⽤的可重⽤语句块select映射查询语句insert映射插⼊语句update映射更新语句delete映射删除语句2select元素表⽰SQL 的select 语句,⽤于查询,⽽查询语句是我们⽇常中⽤的最多的,使⽤的多就意味它有着强⼤和复杂的功能,所以我们先来看看select元素的属性有哪些(加粗为最常⽤的)。

select元素中的属性属性描述id在命名空间中唯⼀的标识符,可以被⽤来引⽤这条语句parameterType将会传⼊这条语句的参数类的完全限定名或别名。

这个属性是可选的,因为 MyBatis 可以通过类型处理器(TypeHandler)推断出具体传⼊语句的参数,默认值为未设置(unset)parameterMap这是引⽤外部 parameterMap 的已经被废弃的⽅法。

mybatis中文版教程

mybatis中文版教程

MyBatis Spring1.0.0-RC3参考文档MyBatis 社区()Copyright © 2010本文档的拷贝仅允许您个人使用或分发给其他用户,但是不能收取任何费用,后期的发布无论是印刷版或电子版,也会进行版权声明。

本文档由南磊(nanlei1987@)翻译目录第一章介绍 (3)1.1 整合动机 (3)1.2 要求 (3)1.3 感谢 (3)第二章入门 (4)2.1 安装 (4)2.2 快速创建 (4)第三章SqlSessionFactoryBean (6)3.1 创建 (6)3.2 属性 (6)第四章事务 (8)4.1 标准配置 (8)4.2 容器管理事务 (8)第五章使用SqlSession (9)5.1 SqlSessionSupport (9)5.2 SqlSessionTemplate (9)第六章MapperFactoryBean (11)6.1 创建 (11)6.2 注入映射器 (11)6.3 自动配置 (12)第七章使用MyBatis API (13)第八章示例代码 (14)第一章介绍1.1 整合动机正如第二版,Spring仅支持iBatis2。

那么我们就想将MyBatis3的支持加入到Spring3.0(参考Spring的Jira的问题)中。

不幸的是,Spring 3.0的开发在MyBatis 3.0官方发布前就结束了。

因为Spring开发团队不想发布一个基于非发行版的MyBatis的整合支持,那么Spring 官方的支持就不得不等到至少3.1版本了。

要在Spring中支持MyBatis,MyBatis社区认为现在应该是自己团结贡献者和有兴趣的人一起来开始进行Spring和MyBatis整合的时候了。

这个小类库就来创建丢失的粘贴Spring和MyBtatis这两个流行框架的胶水。

减少用户不得不来配置MyBatis和Spring 3.X上下文环境的样板和冗余代码。

mybatis使用手册

mybatis使用手册

MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。

MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。

MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

二、mybatis快速入门2.1、准备开发环境1、创建测试项目,普通java项目或者是JavaWeb项目均可,如下图所示:2、添加相应的jar包【mybatis】mybatis-3.1.1.jar【MYSQL驱动包】mysql-connector-java-5.1.7-bin.jar3、创建数据库和表,针对MySQL数据库SQL脚本如下:1createdatabase mybatis;2use mybatis;3CREATETABLE users(id INTPRIMARYKEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);4INSERTINTO users(NAME, age) VALUES('孤傲苍狼', 27);5INSERTINTO users(NAME, age) VALUES('白虎神皇', 27);将SQL脚本在MySQL数据库中执行,完成创建数据库和表的操作,如下:到此,前期的开发环境准备工作全部完成。

2.2、使用MyBatis查询表中的数据1、添加Mybatis的配置文件conf.xml在src目录下创建一个conf.xml文件,如下图所示:conf.xml文件中的内容如下:1<?xml version="1.0" encoding="UTF-8"?>2<!DOCTYPE configuration PUBLIC "-////DTD Config 3.0//EN" "/dtd/mybatis-3-config.dtd">3<configuration>4<environments default="development">5<environment id="development">6<transactionManager type="JDBC"/>7<!-- 配置数据库连接信息 -->8<dataSource type="POOLED">9<property name="driver" value="com.mysql.jdbc.Driver"/>10<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/> 11<property name="username" value="root"/>12<property name="password" value="XDP"/>13</dataSource>14</environment>15</environments>1617</configuration>2、定义表所对应的实体类,如下图所示:User类的代码如下:1package me.gacl.domain;23/**4 *@author gacl5 * users表所对应的实体类6*/7publicclass User {89//实体类的属性和表的字段名称一一对应10privateint id;11private String name;12privateint age;1314publicint getId() {15return id;16 }1718publicvoid setId(int id) {19this.id = id;20 }2122public String getName() {23return name;24 }2526publicvoid setName(String name) { = name;28 }2930publicint getAge() {31return age;32 }3334publicvoid setAge(int age) {35this.age = age;36 }3738 @Override39public String toString() {40return "User [id=" + id + ", name=" + name + ", age=" + age + "]";41 }42 }3、定义操作users表的sql映射文件userMapper.xml创建一个me.gacl.mapping包,专门用于存放sql映射文件,在包中创建一个userMapper.xml文件,如下图所示:userMapper.xml文件的内容如下:1<?xml version="1.0" encoding="UTF-8" ?>2<!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN" "/dtd/mybatis-3-mapper.dtd">3<!-- 为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的4例如namespace="erMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀)5-->6<mapper namespace="erMapper">7<!-- 在select标签中编写查询的SQL语句,设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复8使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型9resultType="er"就表示将查询结果封装成一个User类的对象返回10 User类就是users表所对应的实体类11-->12<!--13根据id查询得到一个user对象14-->15<select id="getUser"parameterType="int"16resultType="er">17 select * from users where id=#{id}18</select>19</mapper>4、在conf.xml文件中注册userMapper.xml文件1<?xml version="1.0" encoding="UTF-8"?>2<!DOCTYPE configuration PUBLIC "-////DTD Config 3.0//EN" "/dtd/mybatis-3-config.dtd">3<configuration>4<environments default="development">5<environment id="development">6<transactionManager type="JDBC"/>7<!-- 配置数据库连接信息 -->8<dataSource type="POOLED">9<property name="driver" value="com.mysql.jdbc.Driver"/>10<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/> 11<property name="username" value="root"/>12<property name="password" value="XDP"/>13</dataSource>14</environment>15</environments>1617<mappers>18<!-- 注册userMapper.xml文件,19 userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->20<mapper resource="me/gacl/mapping/userMapper.xml"/>21</mappers>2223</configuration>5、编写测试代码:执行定义的select语句创建一个Test1类,编写如下的测试代码:package me.gacl.test;import java.io.IOException;import java.io.InputStream;import java.io.Reader;import er;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;publicclass Test1 {publicstaticvoid main(String[] args) throws IOException {//mybatis的配置文件String resource = "conf.xml";//使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)InputStream is =Test1.class.getClassLoader().getResourceAsStream(resource);//构建sqlSession的工厂SqlSessionFactorysessionFactory =new SqlSessionFactoryBuilder().build(is);//使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)//Reader reader = Resources.getResourceAsReader(resource); //构建sqlSession的工厂//SqlSessionFactorysessionFactory = new SqlSessionFactoryBuilder().build(reader);//创建能执行映射文件中sql的sqlSessionSqlSession session = sessionFactory.openSession();/*** 映射sql的标识字符串,* erMapper是userMapper.xml文件中mapper标签的namespace属性的值,* getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL*/String statement = "erMapper.getUser";//映射sql的标识字符串//执行查询返回一个唯一user对象的sqlUser user = session.selectOne(statement, 1);System.out.println(user);}}。

MyBatis学习文档

MyBatis学习文档

MyBatis学习文档创建时刻:2021-09-12一、什么是mabatisMyBatis 是支持一般 SQL 查询,存储进程和高级映射的优秀持久层框架。

MyBatis 排除几乎所有的 JDBC 代码和参数的手工设置和结果集的检索。

MyBatis 利用简单的 XML或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plan Old Java Objects,一般的 Java对象)映射成数据库中的记录。

二、mybatis入门1、所需jar包:2、创建项目目录层次:3、创建数据源(configuration.xml)4、创建实体类:User.java5、创建dao 接口、能够说是Mapper接口:UserMapper6、创建dao的实现不同于hibernarte的此处的实现为一个xml文件,也确实是7、编写测试类二、mybatis介绍1、mybatis执行进程每一个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心,执行进程为:(1)取得SqlSessionFactory实例:通过SqlSessionFactoryBuilder对象来取得,从XML配置文件构建SqlSessionFactory。

(2)取得SqlSession:通过SqlSessionFactory实例的openSession方式(3)挪用映射语句:在命名空间”erDao”中,概念了名为findUserById的映射语句,能够通过两中方式挪用映射语句:在命名空间”erDao”中,概念了名为findUserById的映射语句,能够通过两中方式挪用映射语句:第一种方式:那个地址推荐第二种,第二种方式有很多优点,第一它不是基于文字的,那就更平安了。

第二,若是你的IDE有代码补全功能,那么你能够利用它来操纵已映射的SQL 语句。

第三,不需要强制类型转换,同时BlogMapper 接口能够维持简练,返回值类型很平安(参数类型也很平安)。

mybatis学习文档

mybatis学习文档

Mybatis注重POJO与sql的映射关系,POJO为简单对象javabean实体类和SQL语句建立映射关系基于SQL语句ParameterType=“int”指明参数(#[id])返回类型, resultType=”Blog”指查明的结果返回的类型<mapper namespace=”org.mybatis.example.BlogMapper”><select id=”selectBlog”parameterType =”int”resultType=”Blog”>Select * from Blog where od =#{id}</select></mapper>Mybatis映射关系Configuration.xml全局配置文件Mapper.xml 核心映射文件SqlSession接口TransactionManager type=””dataSource type=””SQL映射文件可出现的标签简单使用步骤:假设连接的mysql数据库建立一个blog数据库并建立tbl_blog表,表中的参数如下,并附入一条数据进去,通过mybatis查询出来;1、新建web工程blog2、添加jar包mysql3.1.13、建立dao包,以及entity包,在entity包中创建实体类,并set、get方法。

4、写配置文件sqlMapper-config.xml,用来数据库连接可从mybatis中文用户指南中粘贴过来<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><configuration><--! Environments表示有多少环境可配置,defult表示如果不指定环境默认使用development- -!><environments default="development"><environment id="development">事物管理器,使用jdbc管理<transactionManager type="JDBC"/>数据源使用连接池POOLED<dataSource type="POOLED">下面四个串需单独配备,driver代表驱动类,不同的数据库驱动包不同<property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/>例,其中driver代表数据库驱动包,url连接地址,数据库用户名及密码</dataSource></environment></environments><mappers>mapper resource=""中加引入的映射文件本例映射文件BlogMapper.xml它的绝对地址为org/blog/dao/BlogMapper.xml<mapper resource="org/mybatis/example/BlogMapper.xml"/></mappers></configuration>5、在DAO中建立BlogMapper.xml用来写sql映射文件<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-////DTD Mapper 3.0//EN""/dtd/mybatis-3-mapper.dtd">映射地址org.mybatis.example.BlogMapper对应的是你的映射文件BlogMapper所在包+名称<mapper namespace="org.mybatis.example.BlogMapper">ResultType返回值应该为对应entity包中实体类全称如org.blog.entity.blog<select id="selectBlog" parameterType="int" resultType="Blog">select * from tbl_blog where id = #{id}</select></mapper>6、建立测试类进行测试读取配置文件创建sqlSessionFactoryString resource = "+mybatis配置文件路径";Reader reader = Resources.getResourceAsReader(resource); SqlSessionFactorysqlMapper = new SqlSessionFactoryBuilder().build(reader);获取一个session其中org.blog.dao.BlogMapper.getBlogById为mybatis映射配置文件路径加sql语句id,数据库中第几条数据,blog表示映射文件中返回类型ResultType,用来定义结果返回类型。

Mybatis3

Mybatis3

Mybatis笔记1、环境配置:可以配置多个环境,一般来说,可以有三个环境,分别是开发、测试以及正式环境,每一个环境都可以单独配置。

2、Mybatis的事务管理器:Mybatis支持两种事务管理器,一种是jdbc就是利用应用程序管理事物(数据库的生命周期),另一种是managed(托管),这种是利用应用服务器来管理,这种是商业服务器才有的功能,Tomcat是没有的。

3、配置数据源:①首先引入属性文件,和以前Spring一样:②设置dataSource:<!-- 配置数据源 --><dataSource type="pooled"><property name="driver" value="${jdbc.driverClassName}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${ername}"/><property name="password" value="${jdbc.password}"/> </dataSource>dataSource的类型一共有以下几种:①unpooled 不使用连接池,就是原生的数据库连接,每次出现一个请求都会请求一个数据库链接,用完后马上关闭。

②pooled 使用连接池③jndi使用应用服务器通过jndi获取数据库连接。

4、配置别名:<!-- 配置别名 --><typeAliases><!-- <typeAlias type="Student" alias="model.Student"/> --><!-- 这种才是最好的 --><package name="model"/></typeAliases>应该使用下面的package的方式,这样的话整个包下面的类都不用加完整的路径名了,否则的话有一百个类,还要写100个?千万注意,这个的配置一定要放在环境配置之前,fuck5、配置映射文件:和配置别名的原因都是一样的。

MyBatis3.2.2中文官方文档

MyBatis3.2.2中文官方文档

MyBatis用户指南中文版最近更新: 02 四月2013Version: 3.2.2PDF Creator :Esin.z2013/04/10内容目录MyBatis (1)简介 (3)什么是MyBatis? (3)Help make this documentation better (3)关于翻译 (3)入门 (3)从XML 中构建SqlSessionFactory (3)不使用XML 构建SqlSessionFactory (4)从SqlSessionFactory 中获取SqlSession (5)探究已映射的SQL 语句 (5)范围和生命周期 (7)XML 映射配置文件 (8)properties (9)settings (10)typeAliases (14)typeHandlers (15)Handling Enums (18)objectFactory (20)plugins (20)environments (21)databaseIdProvider (24)mappers (25)Mapper XML 文件 (26)select (27)insert, update and delete (28)sql (31)Parameters (32)Result Maps (33)Auto-mapping (49)缓存 (50)动态SQL (52)if (53)choose, when, otherwise (53)trim, where, set (54)foreach (56)bind (56)Multi-db vendor support (57)Pluggable Scripting Languages For Dynamic SQL (57)Java API (58)应用目录结构 (58)SqlSessions (59)Statement Builders (72)SelectBuilder (72)SqlBuilder (75)Logging (76)Logging Configuration (77)简介什么是 MyBatis?MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。

MyBatis官方中文文档

MyBatis官方中文文档

提示 命名空间的一点注释
命名空间(Namespaces)在之前版本的 MyBatis 中是可选的,容易引起混淆因此是没有益处的。现在的命名空 间则是必须的,目的是希望能比只是简单的使用更长的完全限定名来更进一步区分语句。 命名空间使得你所见到的接口绑定成为可能,尽管你觉得这些东西未必用得上,你还是应该遵循这里的规定以防哪 天你改变了主意。出于长远考虑,使用命名空间,并将它置于合适的 Java 包命名空间之下,你将拥有一份更加整 洁的代码并提高了 MyBatis 的可用性。 命名解析:为了减少输入量,MyBatis 对所有的命名配置元素(包括语句,结果映射,缓存等)使用了如下的命名 解析规则。 完全限定名(比如“com.mypackage.MyMapper.selectAllThings”)将被直接查找并且找到即用。 短名称(比如“selectAllThings”)如果全局唯一也可以作为一个单独的引用。如果不唯一,有两个或两个以上的相 同名称(比如“com.foo.selectAllThings ”和“com.bar.selectAllThings”),那么使用时就会收到错误报告说短名称 是不唯一的,这种情况下就必须使用完全限定名。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-////DTD Config 3.0//EN" "/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <mappers> <mapper resource="org/mybatis/example/BlogMapper.xml"/> </mappers> </configuration>

mybatis 执行原生sql的方法-概述说明以及解释

mybatis 执行原生sql的方法-概述说明以及解释

mybatis 执行原生sql的方法-概述说明以及解释1.引言1.1 概述MyBatis作为一款流行的Java持久化框架,提供了方便且灵活的数据库操作方式。

除了提供了常规的ORM(对象关系映射)功能外,MyBatis 也支持执行原生SQL语句。

执行原生SQL语句的方法为开发人员提供了更多自由发挥的空间,可以更精确地控制SQL语句的执行过程。

通过执行原生SQL语句,开发人员可以利用SQL的强大功能实现更复杂和高级的数据库操作。

与直接使用ORM方式相比,执行原生SQL 语句可以更好地满足一些特殊需求,例如复杂的联表查询、数据库特定函数的使用、原生SQL的优化等。

在MyBatis中,执行原生SQL语句的方法有多种:通过Statement 执行、通过PreparedStatement执行以及通过CallableStatement执行。

每种方法都有其适用的场景和注意事项,开发人员可以根据具体需求选择最合适的方法。

本文将详细介绍MyBatis执行原生SQL语句的方法,并探讨使用原生SQL的注意事项,希望读者通过阅读本文能够对MyBatis提供的原生SQL执行方法有更深入的了解,并能够在实际项目中正确使用和灵活应用这些方法。

文章结构部分的内容:文章的结构如下所示:1. 引言1.1 概述1.2 文章结构1.3 目的2. 正文2.1 MyBatis的基本介绍2.2 执行原生SQL的方法2.3 使用原生SQL的注意事项3. 结论3.1 总结3.2 对MyBatis执行原生SQL的方法的评价3.3 展望未来在引言部分,我们将对本文的主题进行概述,介绍MyBatis和执行原生SQL的方法的背景和重要性,并明确本文的目的。

正文部分将着重介绍MyBatis框架的基本概念和使用方法,包括MyBatis框架的起源、发展、特点以及与其他ORM框架的比较。

然后详细介绍执行原生SQL的方法,包括使用MyBatis的SQL语句和使用MyBatis的注解方式。

【原】配置Log4j,使得MyBatis打印出SQL语句

【原】配置Log4j,使得MyBatis打印出SQL语句

【原】配置Log4j,使得MyBatis打印出SQL语句【环境参数】JDK:jdk1.8.0_25IDE:Eclipse Luna Servie Release 1框架:Spring 4.1.5 + SpringMVC 4.1.5 + MyBatis 3.2.2【配置步骤】⼀、设置MyBatis的Setting(⾮必须,不同环境下,可能不需要该设置)。

在“src/main/java/resources”⽬录下,创建mybatis-config.xml⽂件,并且输⼊下列内容。

1<?xml version="1.0" encoding="UTF-8"?>2<!DOCTYPE configuration3 PUBLIC "-////DTD Config 3.0//EN"4 "/dtd/mybatis-3-config.dtd">5<configuration>6<settings>7<setting name="lazyLoadingEnabled" value="false"/>8<setting name="logImpl" value="LOG4J"/>9</settings>10</configuration>⼆、配置log4j的配置⽂件。

不同的项⽬中,log4j的配置⽂件的格式可能不同,在⼀些项⽬中,log4j的配置⽂件是XML格式的,⽐如log4j.xml;在另⼀些项⽬中,log4j 的配置⽂件是properties格式的,⽐如log4j.properties。

备注:properties格式⽂件的配置⼀般只在⽼的项⽬中存在,新的互联⽹类项⽬,⼀般都是XML格式。

mybatis_querydatalistpage方法_概述及解释说明

mybatis_querydatalistpage方法_概述及解释说明

mybatis querydatalistpage方法概述及解释说明1. 引言1.1 概述:在今天的软件开发过程中,数据库操作是非常常见和重要的一环。

为了方便对数据库进行操作,许多框架都提供了各种各样的方法和函数。

其中,MyBatis是一个非常流行且功能强大的Java持久化框架。

本文将聚焦于MyBatis的queryDataListPage方法,这是一个用于查询数据列表并分页的重要方法。

通过该方法,可以方便地从数据库中获取需要的数据,并按照指定的规则进行分页展示。

1.2 文章结构:本文将分为五个主要部分来介绍和解释MyBatis的queryDataListPage方法。

首先是引言部分,包括概述、文章结构和目的等内容。

接下来是第二部分,我们将简要介绍MyBatis以及具有代表性的queryDataListPage方法。

第三部分将详细解释queryDataListPage方法的用法和参数设置,并通过实例代码进行说明。

第四部分将对queryDataListPage方法进行优劣势分析,并提出改进建议。

最后一部分是结论部分,总结全文并给出适当的建议。

1.3 目的:本文主要旨在全面介绍和解释MyBatis queryDataListPage方法,帮助读者理解其概念、原理以及使用方法。

通过对该方法的研究和分析,读者将能够更加灵活和高效地运用此功能来进行数据库操作,提升开发效率,并减少不必要的代码编写和时间浪费。

以上是本文“1. 引言”部分的详细内容。

2. MyBatis queryDataListPage 方法概述:2.1 MyBatis 简介:MyBatis是一个开源的持久层框架,它简化了数据库操作流程并提供了强大的SQL映射功能。

MyBatis通过XML或注解的方式,将Java对象与数据库中的数据进行映射,使得开发人员可以更加方便地进行数据库操作。

2.2 queryDataListPage 方法简介:queryDataListPage方法是MyBatis框架中提供的一种查询数据列表并分页的方法。

黑马程序员-传智健康项目(第一章)

黑马程序员-传智健康项目(第一章)

⿊马程序员-传智健康项⽬(第⼀章)传智健康项⽬1. 项⽬概述1.1 项⽬介绍传智健康管理系统是⼀款应⽤于健康管理机构的业务系统,实现健康管理机构⼯作内容可视化、会员管理专业化、健康评估数字化、健康⼲预流程化、知识库集成化,从⽽提⾼健康管理师的⼯作效率,加强与会员间的互动,增强管理者对健康管理机构运营情况的了解。

详见:资料中的传智健康PRD⽂档.docx1.2 原型展⽰参见资料中的静态原型。

1.3 技术架构1.4 功能架构1.5 软件开发流程软件开发⼀般会经历如下⼏个阶段,整个过程是顺序展开,所以通常称为瀑布模型。

2. 环境搭建2.1 项⽬结构本项⽬采⽤maven分模块开发⽅式,即对整个项⽬拆分为⼏个maven⼯程,每个maven⼯程存放特定的⼀类代码,具体如下:各模块职责定位:health_parent:⽗⼯程,打包⽅式为pom,统⼀锁定依赖的版本,同时聚合其他⼦模块便于统⼀执⾏maven命令health_common:通⽤模块,打包⽅式为jar,存放项⽬中使⽤到的⼀些⼯具类、实体类、返回结果和常量类health_interface:打包⽅式为jar,存放服务接⼝health_service_provider:Dubbo服务模块,打包⽅式为war,存放服务实现类、Dao接⼝、Mapper映射⽂件等,作为服务提供⽅,需要部署到tomcat运⾏health_backend:传智健康管理后台,打包⽅式为war,作为Dubbo服务消费⽅,存放Controller、HTML页⾯、js、css、spring配置⽂件等,需要部署到tomcat运⾏health_mobile:移动端前台,打包⽅式为war,作为Dubbo服务消费⽅,存放Controller、HTML页⾯、js、css、spring配置⽂件等,需要部署到tomcat运⾏2.2 maven项⽬搭建通过前⾯的项⽬功能架构图可以知道本项⽬分为传智健康管理后台和传智健康前台(微信端)2.2.1 health_parent创建health_parent,⽗⼯程,打包⽅式为pom,⽤于统⼀管理依赖版本pom.xml<!--?xml version="1.0" encoding="UTF-8"?--><project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemalocation="/POM/4.0.0/xsd/maven-4.0.0.xsd"><modelversion>4.0.0</modelversion><groupid>com.itheima</groupid><artifactid>health_parent</artifactid><version>1.0-SNAPSHOT</version><packaging>pom</packaging><!-- 集中定义依赖版本号 --><properties><junit.version>4.12</junit.version><spring.version>5.0.5.RELEASE</spring.version><pagehelper.version>4.1.4</pagehelper.version><servlet-api.version>2.5</servlet-api.version><dubbo.version>2.6.0</dubbo.version><zookeeper.version>3.4.7</zookeeper.version><zkclient.version>0.1</zkclient.version><mybatis.version>3.4.5</mybatis.version><mybatis.spring.version>1.3.1</mybatis.spring.version><mybatis.paginator.version>1.2.15</mybatis.paginator.version><mysql.version>5.1.32</mysql.version><druid.version>1.0.9</druid.version><commons-fileupload.version>1.3.1</commons-fileupload.version><spring.security.version>5.0.5.RELEASE</spring.security.version><poi.version>3.14</poi.version><jedis.version>2.9.0</jedis.version><quartz.version>2.2.1</quartz.version></properties><!-- 依赖管理标签必须加 --><dependencymanagement><dependencies><!-- Spring --><dependency><groupid>org.springframework</groupid><artifactid>spring-context</artifactid><version>${spring.version}</version></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-beans</artifactid><version>${spring.version}</version></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-web</artifactid><version>${spring.version}</version></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-webmvc</artifactid><version>${spring.version}</version></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-jdbc</artifactid><version>${spring.version}</version></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-jms</artifactid><version>${spring.version}</version></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-context-support</artifactid><version>${spring.version}</version></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-test</artifactid><version>${spring.version}</version></dependency><!-- dubbo相关 --><dependency><groupid>com.alibaba</groupid><artifactid>dubbo</artifactid><version>${dubbo.version}</version></dependency><dependency><groupid>org.apache.zookeeper</groupid><artifactid>zookeeper</artifactid><version>${zookeeper.version}</version></dependency><dependency><groupid>com.github.sgroschupf</groupid><artifactid>zkclient</artifactid><version>${zkclient.version}</version></dependency><dependency><groupid>junit</groupid><artifactid>junit</artifactid><version>4.12</version></dependency><dependency><groupid>com.alibaba</groupid><artifactid>fastjson</artifactid><version>1.2.47</version></dependency><dependency><groupid>javassist</groupid><artifactid>javassist</artifactid><version>3.12.1.GA</version></dependency><dependency><groupid>commons-codec</groupid><artifactid>commons-codec</artifactid><version>1.10</version></dependency><dependency><groupid>com.github.pagehelper</groupid><artifactid>pagehelper</artifactid><version>${pagehelper.version}</version></dependency><!-- Mybatis --><dependency><groupid>org.mybatis</groupid><artifactid>mybatis</artifactid><version>${mybatis.version}</version></dependency><dependency><groupid>org.mybatis</groupid><artifactid>mybatis-spring</artifactid><version>${mybatis.spring.version}</version></dependency><dependency><groupid>com.github.miemiedev</groupid><artifactid>mybatis-paginator</artifactid><version>${mybatis.paginator.version}</version> </dependency><!-- MySql --><dependency><groupid>mysql</groupid><artifactid>mysql-connector-java</artifactid><version>${mysql.version}</version></dependency><!-- 连接池 --><dependency><groupid>com.alibaba</groupid><artifactid>druid</artifactid><version>${druid.version}</version></dependency><!-- ⽂件上传组件 --><dependency><groupid>commons-fileupload</groupid><artifactid>commons-fileupload</artifactid><version>${commons-fileupload.version}</version> </dependency><dependency><groupid>org.quartz-scheduler</groupid><artifactid>quartz</artifactid><version>${quartz.version}</version></dependency><dependency><groupid>org.quartz-scheduler</groupid><artifactid>quartz-jobs</artifactid><version>${quartz.version}</version></dependency><dependency><groupid>com.sun.jersey</groupid><artifactid>jersey-client</artifactid><version>1.18.1</version></dependency><dependency><groupid>com.qiniu</groupid><artifactid>qiniu-java-sdk</artifactid><version>7.2.0</version></dependency><!--POI报表--><dependency><groupid>org.apache.poi</groupid><artifactid>poi</artifactid><version>${poi.version}</version></dependency><dependency><groupid>org.apache.poi</groupid><artifactid>poi-ooxml</artifactid><version>${poi.version}</version></dependency></dependency><!-- 安全框架 --><dependency><groupid>org.springframework.security</groupid><artifactid>spring-security-web</artifactid><version>${spring.security.version}</version></dependency><dependency><groupid>org.springframework.security</groupid><artifactid>spring-security-config</artifactid><version>${spring.security.version}</version></dependency><dependency><groupid>org.springframework.security</groupid><artifactid>spring-security-taglibs</artifactid><version>${spring.security.version}</version></dependency><dependency><groupid>com.github.penggle</groupid><artifactid>kaptcha</artifactid><version>2.3.2</version><exclusions><exclusion><groupid>javax.servlet</groupid><artifactid>javax.servlet-api</artifactid></exclusion></exclusions></dependency><dependency><groupid>dom4j</groupid><artifactid>dom4j</artifactid><version>1.6.1</version></dependency><dependency><groupid>xml-apis</groupid><artifactid>xml-apis</artifactid><version>1.4.01</version></dependency></dependencies></dependencymanagement><dependencies><dependency><groupid>javax.servlet</groupid><artifactid>servlet-api</artifactid><version>${servlet-api.version}</version><scope>provided</scope></dependency></dependencies><build><plugins><!-- java编译插件 --><plugin><groupid>org.apache.maven.plugins</groupid><artifactid>maven-compiler-plugin</artifactid><version>3.2</version><configuration><source>1.8<target>1.8</target><encoding>UTF-8</encoding></configuration></plugin></plugins></build></project>2.2.2 health_common创建health_common,⼦⼯程,打包⽅式为jar,存放通⽤组件,例如⼯具类、实体类等pom.xml<!--?xml version="1.0" encoding="UTF-8"?--><project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemalocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><parent><artifactid>health_parent</artifactid><groupid>com.itheima</groupid><version>1.0-SNAPSHOT</version></parent><modelversion>4.0.0</modelversion><artifactid>health_common</artifactid><packaging>jar</packaging><dependencies><dependency><groupid>com.github.pagehelper</groupid><artifactid>pagehelper</artifactid></dependency><!-- Mybatis --><dependency><groupid>org.mybatis</groupid><artifactid>mybatis</artifactid></dependency><dependency><groupid>org.mybatis</groupid><artifactid>mybatis-spring</artifactid></dependency><dependency><groupid>com.github.miemiedev</groupid><artifactid>mybatis-paginator</artifactid></dependency><!-- MySql --><dependency><groupid>mysql</groupid><artifactid>mysql-connector-java</artifactid></dependency><!-- 连接池 --><dependency><groupid>com.alibaba</groupid><artifactid>druid</artifactid></dependency><dependency><groupid>commons-fileupload</groupid><artifactid>commons-fileupload</artifactid></dependency><!-- Spring --><dependency><groupid>org.springframework</groupid><artifactid>spring-context</artifactid></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-beans</artifactid><artifactid>spring-web</artifactid></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-webmvc</artifactid></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-jdbc</artifactid></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-aspects</artifactid></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-jms</artifactid></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-context-support</artifactid></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-test</artifactid></dependency><!-- dubbo相关 --><dependency><groupid>com.alibaba</groupid><artifactid>dubbo</artifactid></dependency><dependency><groupid>org.apache.zookeeper</groupid><artifactid>zookeeper</artifactid></dependency><dependency><groupid>com.github.sgroschupf</groupid><artifactid>zkclient</artifactid></dependency><dependency><groupid>junit</groupid><artifactid>junit</artifactid></dependency><dependency><groupid>com.alibaba</groupid><artifactid>fastjson</artifactid></dependency><dependency><groupid>javassist</groupid><artifactid>javassist</artifactid></dependency><dependency><groupid>commons-codec</groupid><artifactid>commons-codec</artifactid></dependency><dependency><groupid>org.apache.poi</groupid><artifactid>poi</artifactid></dependency><dependency><groupid>redis.clients</groupid><artifactid>jedis</artifactid></dependency><dependency><groupid>com.qiniu</groupid><artifactid>qiniu-java-sdk</artifactid></dependency><dependency><groupid>com.sun.jersey</groupid><artifactid>jersey-client</artifactid></dependency><dependency><groupid>org.apache.poi</groupid><artifactid>poi-ooxml</artifactid></dependency><dependency><groupid>org.springframework.security</groupid><artifactid>spring-security-web</artifactid></dependency><dependency><groupid>org.springframework.security</groupid><artifactid>spring-security-config</artifactid></dependency><dependency><groupid>org.springframework.security</groupid><artifactid>spring-security-taglibs</artifactid></dependency></dependencies></project>2.2.5 health_interface创建health_interface,⼦⼯程,打包⽅式为jar,存放服务接⼝pom.xml<!--?xml version="1.0" encoding="UTF-8"?--><project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemalocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><parent><artifactid>health_parent</artifactid><groupid>com.itheima</groupid><version>1.0-SNAPSHOT</version></parent><modelversion>4.0.0</modelversion><artifactid>health_interface</artifactid><packaging>jar</packaging><dependencies><dependency><groupid>com.itheima</groupid><artifactid>health_common</artifactid><version>1.0-SNAPSHOT</version></dependency></dependencies></project>2.2.6 health_service_provider创建health_service_provider,⼦⼯程,打包⽅式为war,作为服务单独部署,存放服务类、Dao接⼝和Mapper映射⽂件等pom.xml<!--?xml version="1.0" encoding="UTF-8"?--><project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemalocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><parent></parent><modelversion>4.0.0</modelversion><artifactid>health_service_provider</artifactid><packaging>war</packaging><dependencies><dependency><groupid>com.itheima</groupid><artifactid>health_interface</artifactid><version>1.0-SNAPSHOT</version></dependency></dependencies><build><plugins><plugin><groupid>org.apache.tomcat.maven</groupid><artifactid>tomcat7-maven-plugin</artifactid><configuration><!-- 指定端⼝ --><port>81</port><!-- 请求路径 --><path>/</path></configuration></plugin></plugins></build></project>log4j.properties### direct log messages to stdout ###log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.erryout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### direct messages to file mylog.log ###log4j.appender.file=org.apache.log4j.FileAppenderlog4j.appender.file.File=c:\\mylog.logyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### set log levels - for more verbose logging change 'info' to 'debug' ###log4j.rootLogger=debug, stdoutSqlMapConfig.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><configuration><plugins><!-- com.github.pagehelper 为 PageHelper 类所在包名 --><plugin interceptor="com.github.pagehelper.PageHelper"><!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL 六种数据库--><property name="dialect" value="mysql"/></plugin></plugins></configuration>spring-dao.xml<!--?xml version="1.0" encoding="UTF-8"?--><beans xmlns="/schema/beans" xmlns:context="/schema/context" xmlns:p="/schema/p" xmlns:aop="/schema/aop" x /schema/beans/spring-beans-4.2.xsd/schema/context/schema/context/spring-context.xsd/schema/aop/schema/aop/spring-aop.xsd/schema/tx/schema/tx/spring-tx.xsd/schema/util/schema/util/spring-util.xsd"><!--数据源--><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"><property name="username" value="root"><property name="password" value="root"><property name="driverClassName" value="com.mysql.jdbc.Driver"><property name="url" value="jdbc:mysql://localhost:3306/health"></property></property></property></property></bean><!--spring和mybatis整合的⼯⼚bean--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"><property name="configLocation" value="classpath:SqlMapConfig.xml"></property></property></bean><!--批量扫描接⼝⽣成代理对象--><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!--指定接⼝所在的包--><property name="basePackage" value="com.itheima.dao"></property></bean></beans>spring-tx.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:tx="/schema/tx"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/mvc/schema/mvc/spring-mvc.xsd/schema/tx/schema/tx/spring-tx.xsd/schema/context/schema/context/spring-context.xsd"><!-- 事务管理器 --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean><!--开启事务控制的注解⽀持注意:此处必须加⼊proxy-target-class="true",需要进⾏事务控制,会由Spring框架产⽣代理对象,Dubbo需要将Service发布为服务,要求必须使⽤cglib创建代理对象。

mybatis从入门到精通

mybatis从入门到精通

1、对原生态的jdbc程序问题总结1.1 jdbc程序:使用jdbc查询mysql数据库中用户表的记录1.2 问题:1)数据库连接使用时创建、不使用时就释放:对数据库进行频繁的连接的创建和释放,造成数据库资源浪费,影响数据库性能---------------使用数据库连接池管理数据库连接2)将sql语句硬编码到java代码中,如果sql语句修改,需要重新编译java 代码,不利于系统维护-------------将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译3)向prepareStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护-------------------将sql语句及占位符和参数全部配置在xml文件中4)从resultSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,不利于系统维护----------------------将结果集自动映射成java对象2、mybatis框架原理2.1 mybatis是什么?mybatis是一个持久层框架,是apache下的顶级项目github下:https:///mybatis/mybatis-3/releasesmybatis让程序员将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成满足sql需要的sql语句mybatis可以将向preparestatement输入的参数自动进行输入映射,将查询结果集灵活映射成java对象(输出映射)。

2.2 mybatis框架\3、mybatis入门程序3.1 需求根据主键查询用户信息根据用户名模糊查询用户信息怎删改查.....3.2 mybati运行环境(jar包):从https:///mybatis/mybatis-3/releases 下载lib下:依赖包mybatis-3.4.1.jar:核心包3.3 log4j.propertie s#Global logging configurationlog4j.rootLogger=ERROR, stdout#MyBatis logging configuration....mybatis.example.BlogMapper=TRACE#Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%5p[%t]-%m%n3.4 工程目录结构3.5 根据用户id查询用户信息、通过用户名模糊查询用户信息3.5.1 编写映射文件(包括对应的实体类:User.java)映射文件命名:User.xml(原始的ibatis命名方式),mapper代理的映射文件名称叫做XXXMapper.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapperPUBLIC "-////DTD Mapper 3.0//EN""/dtd/mybatis-3-mapper.dtd"><!--namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离注意:将来如果使用mapper代理方法开发,namespace有特殊作用--><mapper namespace="test"><!--在映射文件中配置许多sql语句--><!--通过select执行数据库查询,id:标识映射文件中的sql,成为statement的id,将sql语句封装到mapperStatement对象中,所以将id成为statement的idparameterType:输入参数的类型#{}:表示一个占位符#{id}:其中id表示输入的参数,参数名就是id,如果输入参数是简单类型,#{}中的参数名可以任意resultType:指定sql输出结果所映射的对象类型--><select id="findUserById" parameterType="int"resultType="er">SELECT * FROM USER WHERE uid=#{id}</select><!--${}:表示拼接sql串,将接收到的参数的内容不加任何修饰拼接到sql中--><select id="findUserByName" parameterType="ng.String"resultType="er">SELECT * FROM USER WHERE name LIKE '%${value}%'</select></mapper>3.5.2 将映射文件加载到SqlMapConfig配置文件中<!--加载映射文件--><mappers><mapper resource="sqlmap/User.xml"/></mappers>3.5.3 程序编写@Testpublicvoid findUserByIdTest()throws IOException{// mybatis配置文件String resource ="SqlMapConfig.xml";InputStream input =Resources.getResourceAsStream(resource);// 创建会话工厂SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(input);// 通过工厂得到SqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();// 通过SqlSession操作数据库User user = sqlSession.selectOne("test.findUserById",23);System.out.println(user.getName());// 释放资源sqlSession.close();}// 根据name查询用户信息,得到一条记录的结果@Testpublicvoid findUserByNameTest()throws IOException{// mybatis配置文件String resource ="SqlMapConfig.xml";InputStream input =Resources.getResourceAsStream(resource);// 创建会话工厂SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(input);// 通过工厂得到SqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();// 通过SqlSession操作数据库List<User> list = sqlSession.selectList("test.findUserByName","李");System.out.println(list.size());// 释放资源sqlSession.close();}3.6 插入用户信息3.6.1 User.xml映射文件:<!--添加用户parameterType:制定输入参数类型是pojo#{}:中指定pojo属性名,接收到pojo对象的属性值,mybatis通过OGNL获取对象的属性值--><insert id="insertUser" parameterType="er">insert into user(username,password) value(#{username},#{password}) </insert>3.6.2 测试代码:@Testpublicvoid insertUserTest()throws IOException{// mybatis配置文件String resource ="SqlMapConfig.xml";InputStream input =Resources.getResourceAsStream(resource);// 创建会话工厂SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(input);// 通过工厂得到SqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();// 通过SqlSession操作数据库User user =new User();user.setUsername("ll");user.setPassword("123456");sqlSession.insert("test.insertUser",user);//提交事务mit();// 释放资源sqlSession.close();}3.7 自增主键返回mysql自增主键,执行insert提交之前自动生成一个自增主键。

mybatis官方文档

mybatis官方文档
2.1 Getting started
Every MyBatis application centers around an instance of SqlSessionFactory. A SqlSessionFactory instance can be acquired by using the SqlSessionFactoryBuilder. SqlSessionFactoryBuilder can build a SqlSessionFactory instance from an XML configuration file, of from a custom prepared instance of the Configuration class.
1.1 Introduction
1.1.1 What is MyBatis?
MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results. MyBatis can use simple XML or Annotations for configuration and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to database records.
©2012, • ALL RIGHTS RESERVED.

mybatis-中文文档

mybatis-中文文档

mybatis-中⽂⽂档1 Mybatis的介绍Mybatis就是⼀个封装jdbc的持久层框架,它和hibernate都属于ORM框架,但是具体的说,hibernate是⼀个完全的orm框架,⽽mbatis是⼀个不完全的orm框架.Mybatis让程序员只关注sql本⾝,⽽不需要去关注如连接的创建、statement 的创建等操作。

Mybatis会将输⼊参数据、输出结果进⾏映射MyBatis 本是的⼀个开源项⽬, 2010年这个项⽬由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis 对ibatis进⾏⼀些改进。

MyBatis是⼀个优秀的持久层框架,它对jdbc的操作数据库的过程进⾏封装,使开发者只需要关注 SQL 本⾝,⽽不需要花费精⼒去处理例如注册驱动、创建connection、创建statement、⼿动设置参数、结果集检索等jdbc繁杂的过程代码。

Mybatis通过xml或注解的⽅式将要执⾏的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进⾏映射⽣成最终执⾏的sql语句,最后由mybatis框架执⾏sql并将结果映射成java对象并返回。

2 分析jdbc的问题2.1 原⽣态的jdbc代码publicstaticvoid main(String[] args) {Connection connection = null;PreparedStatement preparedStatement = null;ResultSet resultSet = null;try {//1、加载数据库驱动Class.forName("oracle.jdbc.OracleDriver");//2、通过驱动管理类获取数据库链接connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "xiaoming", "root");//3、定义sql语句 ?表⽰占位符String sql = "select * from t_user where t_name = ?";//4、获取预处理statementpreparedStatement = connection.prepareStatement(sql);//5、设置参数,第⼀个参数为sql语句中参数的序号(从1开始),第⼆个参数为设置的参数值preparedStatement.setString(1, "程冠西");//6、向数据库发出sql执⾏查询,查询出结果集resultSet = preparedStatement.executeQuery();//7、遍历查询结果集while(resultSet.next()){System.out.println(resultSet.getString("t_id")+""+resultSet.getString("t_name")); }} catch (Exception e) {e.printStackTrace();}finally{//8、释放资源if(resultSet!=null){try {resultSet.close();} catch (SQLException e) {e.printStackTrace();}}if(preparedStatement!=null){try {preparedStatement.close();} catch (SQLException e) {e.printStackTrace();}}if(connection!=null){try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}}2.2 问题总结1、在创建连接时,存在硬编码配置⽂件2、在执⾏statement时存在硬编码配置⽂件(映射⽂件)3、频繁的开启的关闭数据库连接,会造成数据库性能下降。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MyBatis V3.2.4官方文档目录MyBatis3.2.4官方文档 (1)1MyBatis 简介 (4)2入门 (4)2.1安装 (4)2.2从xml构建 SqlSessionFactory (4)2.3不使用XML构建SqlSessionFactory (5)2.4从SqlSessionFactory中获取SqlSession (6)2.5深入研究Mapped SQL语句 (7)2.6命名空间说明 (7)2.7范围和生命周期 (8)3Configuration XML (10)3.1properties (10)3.2settings (11)3.3typeAliases (13)3.4typeHandlers (15)3.5Handling Enums (18)3.6objectFactory (20)3.7plugins (20)3.8environments (21)3.9databaseIdProvider (25)3.10mappers (25)4Mapper XML Files (27)4.1Select (28)4.2insert,update,delete (29)4.3sql (32)4.4Parameters (33)4.5String Substitution (34)4.6ResultMap (34)4.7Advanced Result Maps (36)4.8鉴别discriminator (48)4.9Auto-mapping (50)4.10Cache (51)5动态SQL (53)5.1if (54)5.2Choose(when, otherwise ) (54)5.3Trim(where, set) (55)5.4foreach (57)5.5bind (57)5.6Multi-db vendor support (57)5.7Pluggable Scripting Languages For Dynamic SQL (58)6Java API (59)6.1应用目录结构 (59)6.2SqlSessions (60)7SQL Builder Class (71)7.1The Problem (71)7.2The Solution (71)7.3The SQL Class (72)7.4SqlBuilder和SelectBuilder(不推荐使用) (75)8Logging (76)8.1日志配置 (78)9附录 (79)9.1MyBatis与Ibatis比较 (79)9.2代码示例 (81)1MyBatis 简介MyBatis的前身叫iBatis,本是apache的一个开源项目, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。

MyBatis是支持普通SQL 查询、存储过程和高级映射的优秀持久层框架。

MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。

MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录。

2入门2.1安装在classpath路径下加入mybatis-x.x.x.jar包。

假如使用Maven,那么在 pom.xml中加入以下的依赖关系:<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>x.x.x</version></dependency>2.2从xml构建 SqlSessionFactory每一个MyBatis的应用程序都以一个SqlSessionFactory 对象的实例为核心。

SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象来获得。

SqlSessionFactoryBuilder对象可以从XML配置文件,或从Configuration类的自定义预处理的实例中构建SqlSessionFactory对象。

从XML文件中构建SqlSessionFactory的实例非常简单。

这里建议使用classpath的资源文件来配置,但是可以使用任意的Reader实例,这个实例包括由文本文件路径或URL形式的文件路径file://来创建。

MyBatis包含了一些工具类,称作为资源,这些工具类包含一些方法,这些方法使得从classspath或其他位置加载资源文件更加简单。

String resource ="org/mybatis/example/mybatis-config.xml";InputStream inputStream =Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory =newSqlSessionFactoryBuilder().build(inputStream);XML配置文件包含对MyBatis系统的核心设置,包含获取数据库连接实例的数据源和决定事务范围和控制的事务管理器。

关于XML配置文件的详细内容可以在文档后面找到,这里给出一个简单的示例:<?xml version="1.0" encoding="UTF-8"?><!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"><property name="driver"value="${driver}"/><property name="url"value="${url}"/><property name="username"value="${username}"/><property name="password"value="${password}"/></dataSource></environment></environments><mappers><mapper resource="org/mybatis/example/BlogMapper.xml"/></mappers></configuration>当然,在XML配置文件中还有很多可以配置的,上面的示例指出的则是最关键的部分。

要注意XML头部的声明,需要用来验证XML文档正确性。

environment元素体中包含对事务管理和连接池的环境配置。

mappers元素是包含一系列mapper列表,这些mapper的XML文件包含SQL代码和映射定义信息。

2.3不使用XML构建SqlSessionFactory如果你喜欢从Java程序而不是从XML文件中直接创建配置实例,或创建你自己的配置构建器,MyBatis也提供完整的Configuration 类,提供所有从XML文件中加载配置信息的选项。

DataSource dataSource =BlogDataSourceFactory.getBlogDataSource(); TransactionFactory transactionFactory =new JdbcTransactionFactory();Environment environment =new Environment("development", transactionFactory, dataSource);Configuration configuration =new Configuration(environment);configuration.addMapper(BlogMapper.class);SqlSessionFactory sqlSessionFactory =newSqlSessionFactoryBuilder().build(configuration);注意这种情况下配置是添加一个mapper类。

mapper类是包含SQL映射语句的注解从而避免使用XML文件的Java类。

However, due to some limitations of Java Annotations and the complexity of some MyBatis mappings. XML映射仍然在大多数高级映射(比如:nest Join映射)。

出于这样的原因,如果存在XML配置文件的话,MyBatis 将会自动查找和加载一个对等的XML文件(in this case, BlogMapper.xml would be loaded based on the classpath and name of BlogMapper.class)。

2.4从SqlSessionFactory中获取SqlSession现在,我们已经知道如何获取SqlSessionFactory对象了,基于同样的启示,我们就可以获得SqlSession的实例了。

SqlSession对象完全包含基于数据库执行SQL操作的所有方法。

可以用SqlSession实例来直接执行已映射的SQL语句。

SqlSession session = sqlSessionFactory.openSession();try{Blog blog = session.selectOne("org.mybatis.example.BlogMapper.selectBlog",101); }finally{session.close();}这种方法起到的作用,和我们使用之前的MyBatis版本是相似的,现在有一种更简洁的方法。

相关文档
最新文档