MyBatis精品教程资料:1.MyBatis入门

合集下载

Mybatis培训第一课

Mybatis培训第一课

Mybatis培训第一课一、创建练习mybatis的项目:1、新建一个web项目,导入mybatis包及其依赖包、数据库驱动包;2、创建一个students表:3、在类路径下创建mybatis-config.xml文件;4、在com.mybatis3.mappers包下创建StudentMapper.xml文件;5、在com.mybatis3.util包中创建MyBatisSqlSessionFactory工具类,用于获取SqlSessionFactory;6、创建一个Student bean;7、创建StudentMapper接口,接口中方法的名字和StudentMapper.xml中映射语句的id相同;8、创建StudentService类,完成对student表的操作;9、测试二、理论学习:mybatis-config.xml文件EnvironmentMyBatis可以配置多种数据库环境。

这会帮助你将SQL映射应用于多种数据库之中。

例如,你可以配置开发环境数据库和生产环境数据库:你可以配置多种环境,但你只能为每个SqlSessionFactory实例选择一个。

所以,如果你想连接两个数据库,你需要创建两个SqlSessionFactory实例,每个数据库对应一个。

而如果是三个数据库,你就需要三个实例,以此类推。

有些时候我们需要在一个应用中连接两个数据库,此时你就呀配置两个独立的environment,进而为每个数据库创建一个SqlSessionFactory:DataSource此配置元素用来配置数据库连接的各个参数。

mybatis数据源的类型为三种内建的数据源类型之一:UNPOOLED, POOLED, JNDI.1.UNPOOLED –这个数据源的实现是每次被请求时简单打开和关闭连接。

它有一点慢,这是对简单应用程序的一个很好的选择,因为它不需要及时的可用连接。

2.POOLED –这是JDBC连接对象的数据源连接池的实现,用来避免创建新的连接实例时必要的初始连接和认证时间。

mybatis入门教程

mybatis入门教程

mybatis入门教程MyBatis是一种开源的持久层框架,它可以帮助我们简化数据库操作的过程。

本教程将介绍如何使用MyBatis进行基本的数据访问操作。

第一步:创建数据库和表首先,我们需要创建一个数据库和一个表来存储数据。

假设我们创建了一个名为"mybatis_demo"的数据库,并在其中创建了一个名为"users"的表,该表包含id、name和age三个字段。

第二步:引入MyBatis依赖在使用MyBatis之前,我们需要在项目的pom.xml文件中引入MyBatis的依赖。

可以在Maven仓库中找到最新的MyBatis版本,并将其添加到pom.xml文件中。

<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency>第三步:创建数据源配置文件在src/main/resources目录下创建一个名为"mybatis-config.xml"的文件,并在其中配置数据源信息。

以下是一个示例配置:<?xml version="1.0" encoding="UTF-8"?><configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="url"value="jdbc:mysql://localhost:3306/mybatis_demo"/><property name="username" value="root"/></dataSource></environment></environments><mappers><!-- 这里可以配置Mapper接口所在的包 --></mappers></configuration>注意:在实际项目中,我们通常会将数据库连接信息配置在外部的配置文件中,而不是直接写在mybatis-config.xml文件中。

mybatis入门教程(一)(超简单)

mybatis入门教程(一)(超简单)

mybati‎s第一天mybati‎s的基础知识‎课程安排:mybati‎s和spri‎n gmvc通‎过订单商品案例驱动第一天:基础知识(重点,内容量多)对原生态jd‎b c程序(单独使用jd‎b c开发)问题总结mybati‎s框架原理(掌握)mybati‎s入门程序用户的增、删、改、查mybati‎s开发dao‎两种方法:原始dao开‎发方法(程序需要编写‎d a o接口和‎d a o实现类‎)(掌握)mybait‎s的mapp‎e r接口(相当于dao‎接口)代理开发方法‎(掌握)mybati‎s配置文件S‎q lMapC‎onfig.xmlmybati‎s核心:mybati‎s输入映射(掌握)mybati‎s输出映射(掌握)mybati‎s的动态sq‎l(掌握)第二天:高级知识订单商品数据‎模型分析高级结果集映‎射(一对一、一对多、多对多)mybati‎s延迟加载mybati‎s查询缓存(一级缓存、二级缓存)mybait‎s和spri‎n g进行整合‎(掌握)mybati‎s逆向工程1对原生态jd‎bc程序中问‎题总结1.1环境java环境‎:jdk1.7.0_72eclips‎e:indigo‎mysql:5.11.2创建mysq‎l数据导入下边的脚‎本:sql_ta‎ble.sql:记录表结构sql_da‎t a.sql:记录测试数据‎,在实际企业开‎发中,最后提供一个‎初始化数据脚‎本1.3jdbc程序‎使用jdbc‎查询mysq‎l数据库中用‎户表的记录。

创建java‎工程,加入jar包‎:数据库驱动包‎(m ysql5‎.1)上边的是my‎sql驱动。

下边的是or‎a cle的驱‎动。

程序代码:1.4问题总结1、数据库连接,使用时就创建‎,不使用立即释‎放,对数据库进行‎频繁连接开启‎和关闭,造成数据库资‎源浪费,影响数据库性能。

设想:使用数据库连‎接池管理数据‎库连接。

2、将sql语句‎硬编码到ja‎v a代码中,如果sql 语句修改,需要重新编译‎java代码‎,不利于系统维‎护。

mybatis 知识点

mybatis 知识点

Mybatis 知识点什么是 MybatisMybatis 是一个开源的持久层框架,它提供了一个可以自定义 SQL 映射的方式,以及可以很方便地进行数据库查询和操作的功能。

相比于传统的 ORM 框架,Mybatis 更加灵活,适用于复杂的 SQL 查询和自定义 SQL 语句的情况。

Mybatis 的优点1.灵活性:Mybatis 允许开发者自定义 SQL 映射,可以根据需要编写任意复杂的 SQL 查询语句,更加灵活地操作数据库。

2.性能优化:Mybatis 提供了多种性能优化的手段,比如查询缓存和预编译语句等,可以减少数据库的访问次数,提高系统性能。

3.易于集成:Mybatis 与 Spring 框架完美集成,可以很方便地与 SpringBoot 一起使用,简化开发流程。

Mybatis 的基本使用1. 引入依赖在 Maven 项目的 pom.xml 文件中,添加以下依赖:<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version></dependency>2. 配置数据源在 application.properties 文件中配置数据源信息:spring.datasource.url=jdbc:mysql://localhost:3306/mydbername=rootspring.datasource.password=1234563. 创建实体类和 Mapper 接口创建与数据库表对应的实体类和对应的 Mapper 接口,如下所示:public class User {private Long id;private String name;private Integer age;// 省略 getter 和 setter 方法}public interface UserMapper {List<User> getAllUsers();User getUserById(Long id);void addUser(User user);void updateUser(User user);void deleteUser(Long id);}4. 编写 SQL 映射文件在 resources 目录下创建一个 sqlmap 目录,并在该目录下编写 XML 格式的 SQL 映射文件,如下所示:<!-- UserMapper.xml --><mapper namespace="erMapper"><select id="getAllUsers" resultType="er">SELECT * FROM user;</select><select id="getUserById" resultType="er">SELECT * FROM user WHERE id = #{id};</select><insert id="addUser">INSERT INTO user(name, age) VALUES(#{name}, #{age});</insert><update id="updateUser">UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id};</update><delete id="deleteUser">DELETE FROM user WHERE id = #{id};</delete></mapper>5. 配置 Mybatis在 application.properties 文件中配置 Mybatis 相关的配置项,如下所示:mybatis.mapper-locations=classpath*:sqlmap/**/*.xmlmybatis.configuration.map-underscore-to-camel-case=true6. 注入 Mapper在需要使用 Mapper 的地方进行注入,并调用相应的方法即可:@Servicepublic class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic List<User> getAllUsers() {return userMapper.getAllUsers();}// 省略其他方法实现}Mybatis 高级特性动态 SQLMybatis 提供了动态 SQL 的支持,可以根据不同的条件生成不同的 SQL 语句,实现更加灵活的查询。

Mybatis基础知识汇总

Mybatis基础知识汇总

Mybatis基础知识汇总Mybatis学习总结:背景介绍:mybatis:前⾝ibatis,于2010年迁移到google code,并改名为Mybatis。

最后在2013年11⽉迁移到gitbub(全球开源⽹站)。

Mybatis 的初步认知:Mybatis 是⼀个半⾃动的ORM持久成框架。

apache下的顶级项⽬。

Mybatis是JDBC的轻量级的封装,使⽤时程序员只需要注⼊sql语句,mybatis通过映射可以灵活⽣成满⾜数据库的sql语句。

解决了jdbc的⼀下⼏个问题:1.jdbc创建和销毁数据库的连接耗资源过⼤解决⽅法:mybatis框架内置连接池。

2.sql语句在javaWeb 项⽬中,修改sql语句需要修改java项⽬中的代码不利于维护。

-解决⽅法:mybatis采⽤配置⽂件注⼊sql语句,使sql语句与java代码分离。

3. 使⽤jdbc查询对象时,够多的参数书写不⽅便。

(每⼀个参数需要书写⼀个?占位符,并且还需要写⼀句对应的java语句)且不利于维护;解决⽅法:Mybatis使⽤⾃动映射java对象⾄sql语句,通过statement的parameterType进⾏传参4.jdbc查询时存在硬编码,当sql语句改变,系统解析是也发⽣变化,造成系统不利于维护。

解决⽅法:Mybatis使⽤⾃动sql语句⾄Java对象,通过statement的resultType进⾏传参Mybatis的使⽤步骤:1. 导⼊所需要的jar包,配置SqlMapConfig.xml,写⼊数据库连接信息,类的别名以及映射关系等信息;2. 加载配置⽂件,获取SqlSessionFactory对象3.获取SqlSession对象:调⽤Mapper.xml的sql语句(insert,update,delete,selectOne,selectLists)4.释放资源案例展⽰:Mybatis的DAO层的两种⽅式:原始DAO层开发⽅式:1.数据库创建数据表本案例使⽤如下数据表:1).创建t_user数据表CREATE TABLE `t_user` (`uid` int(11) NOT NULL AUTO_INCREMENT,`uname` varchar(255) DEFAULT NULL,`usex` varchar(255) DEFAULT NULL,`uage` int(11) DEFAULT NULL,PRIMARY KEY (`uid`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;2). 插⼊5条数据:INSERT INTO t_user VALUES ('1', '张三', '男', '25');INSERT INTO t_user VALUES ('2', '李四', '男', '26');INSERT INTO t_user VALUES ('3', '王五', '男', '27');INSERT INTO t_user VALUES ('4', '赵六', '男', '30');INSERT INTO t_user VALUES ('5', '⼩敏', '男', '25');2.导⼊jar包,并配置SqlMapConfig.xml⽂件:1.1}. 导⼊如下图所⽰jar包和log4j.properties注:jar包说明:- asm-4.2.jar- cglib-3.1.jar-1. 处理字节码的jar包- mybatis-3.3.0.jar- mybatis的核⼼jar包- mysql-connector-java-5.1.12-bin.jar- 2.连接数据库jdbcjar包- jstl-1.2- 3.标签jar包- 4.其余jar为⽇志记录jar包,因为mybatis没有⽇志记录系统需要引⽤⽇记jar包完成打印。

MyBatis详解一篇就够啦

MyBatis详解一篇就够啦

MyBatis详解⼀篇就够啦第1章MyBatis框架配置⽂件详解1.1 typeHandlers类型转换器 每当MyBatis 设置参数到PreparedStatement 或者从ResultSet 结果集中取得值时,就会使⽤TypeHandler 来处理数据库类型与java 类型之间转换。

下表描述了默认TypeHandlers1.1.1 ⾃定义类型转换器假设表中字段是int类型,⽽实体类与之对应的属性是boolean类型,此时可以采⽤⾃定义类型转换器进⾏对应(1)实体类1 package com.chenyanbin.beans;23 public class Dept {4 private Integer deptNo;5 private String dname;6 private String loc;7 private boolean flag;8 public Integer getDeptNo() {9 return deptNo;10 }11 public boolean isFlag() {12 return flag;13 }14 public void setFlag(boolean flag) {15 this.flag = flag;16 }17 public void setDeptNo(Integer deptNo) {18 this.deptNo = deptNo;19 }20 public String getDname() {21 return dname;22 }23 public void setDname(String dname) {24 this.dname = dname;25 }26 public String getLoc() {27 return loc;28 }29 public void setLoc(String loc) {30 this.loc = loc;31 }32 }(2) 表中字段(3) 开发⾃定义类型转换器:MyTypeHandler.java继承并实现接⼝:TypeHandler.java1 package com.chenyanbin.util;23 import java.sql.CallableStatement;4 import java.sql.PreparedStatement;5 import java.sql.ResultSet;6 import java.sql.SQLException;78 import org.apache.ibatis.jdbc.Null;9 import org.apache.ibatis.type.JdbcType;10 import org.apache.ibatis.type.TypeHandler;11 /*12 * setParameter:这个⽅法在⽣成SQL语句时才被调⽤13 *14 * getResult:查询结束之后,在将ResultSet数据⾏转换为实体类对象时,通知TypeHandler将当前数据⾏某个字段转换为何种类型15 *16 *17 */18 public class MyTypeHandler implements TypeHandler {1920 public void setParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException {21 if (parameter==null) { //dept.flag=null insertsql flag设置022 ps.setInt(i, 0);23 return;24 }25 Boolean flag=(Boolean)parameter;26 if (flag==true) {27 ps.setInt(i, 1);28 }29 else {30 ps.setInt(i, 0);31 }32 }3334 public Object getResult(ResultSet rs, String columnName) throws SQLException {35 int flag = rs.getInt(columnName); //1 or 036 Boolean myFlag=Boolean.FALSE;37 if (flag==1) {38 myFlag=Boolean.TRUE;39 }40 return myFlag;41 }4243 public Object getResult(ResultSet rs, int columnIndex) throws SQLException {44 // TODO Auto-generated method stub45 return null;46 }4748 public Object getResult(CallableStatement cs, int columnIndex) throws SQLException {49 // TODO Auto-generated method stub50 return null;51 }5253 }(4) 在MyBatis核⼼配置⽂件注册⾃定义类型转换器:myBatis-config.xml1 <?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 <!-- 属性配置 -->7 <properties resource="config.properties"></properties>8 <!-- 别名配置 -->9 <typeAliases>10 <package name="com.chenyanbin.beans" />13 <!-- 类型处理器 -->14 <typeHandlers>15 <!-- 从java中的Boolean转jdbc中的NUMERIC -->16 <typeHandler handler="com.chenyanbin.util.MyTypeHandler"17 javaType="Boolean" jdbcType="NUMERIC" />18 </typeHandlers>19 <!-- 环境配置 -->20 <environments default="development">21 <!-- 环境配置 -->22 <environment id="development">23 <!-- 事务管理器 -->24 <transactionManager type="JDBC"></transactionManager>25 <!-- 数据源 -->26 <dataSource type="pooled">27 <property name="driver" value="${jdbc.driver}" />28 <property name="url" value="${jdbc.url}" />29 <property name="username" value="${ername}" />30 <property name="password" value="${jdbc.password}" />31 </dataSource>32 </environment>33 </environments>34 <!-- 映射器 -->35 <mappers>36 <package name="com.chenyanbin.dao" />37 </mappers>38 </configuration>config.properties1 jdbc.driver=com.mysql.jdbc.Driver2 jdbc.url=jdbc:mysql://localhost:3306/sam3 ername=root4 jdbc.password=root(5) 创建接⼝:DeptMapper.java1 package com.chenyanbin.dao;23 import java.util.List;4 import com.chenyanbin.beans.Dept;56 public interface DeptMapper {7 public void deptSave(Dept dept);89 public List<Dept> deptFind();10 }(6) DeptMapper.xml1 <?xml version="1.0" encoding="UTF-8"?>2 <!DOCTYPE mapper3 PUBLIC "-////DTD Mapper 3.0//EN"4 "/dtd/mybatis-3-mapper.dtd">5 <mapper namespace="com.chenyanbin.dao.DeptMapper">6 <insert id="deptSave">7 insert into dept (DEPTNO,DNAME,LOC,flag)8 values(#{deptNo},#{dname},#{loc},#{flag})9 </insert>10 <select id="deptFind" resultType="Dept">11 select deptNo,dname,loc,flag from dept12 </select>13 </mapper>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 <!-- 属性配置 -->7 <properties resource="config.properties"></properties>8 <!-- 别名配置 -->9 <typeAliases>10 <package name="com.chenyanbin.beans" />11 <package name="com.chenyanbin.dao" />12 </typeAliases>13 <!-- 环境配置 -->14 <environments default="development">15 <!-- 环境配置 -->16 <environment id="development">17 <!-- 事务管理器 -->18 <transactionManager type="JDBC"></transactionManager>19 <!-- 数据源 -->20 <dataSource type="pooled">21 <property name="driver" value="${jdbc.driver}" />22 <property name="url" value="${jdbc.url}" />23 <property name="username" value="${ername}" />24 <property name="password" value="${jdbc.password}" />25 </dataSource>26 </environment>27 </environments>28 <!-- 映射器 -->29 <mappers>32 </configuration>⽅式⼆:myBatis-config.xml1 <?xml version="1.0" encoding="UTF-8"?>2 <!DOCTYPE mapper3 PUBLIC "-////DTD Mapper 3.0//EN"4 "/dtd/mybatis-3-mapper.dtd">5 <mapper namespace="com.chenyanbin.dao.DeptMapper">6 <insert id="deptSave">7 insert into dept (DEPTNO,DNAME,LOC,flag)8 values(#{deptNo},#{dname},#{loc},#{flag})9 </insert>10 <resultMap type="dept" id="deptMap">11 <result column="flag" property="flag" typeHandler="com.chenyanbin.util.MyTypeHandler"/>12 </resultMap>13 <select id="deptFind" resultType="Dept">14 select deptNo,dname,loc,flag from dept15 </select>16 </mapper>⽅式⼆:DeptMapper.xml(7) 执⾏单元测试:TestMain_01.java1 package com.chenyanbin.test;23 import java.io.IOException;4 import java.io.InputStream;5 import java.util.List;6 import org.apache.ibatis.io.Resources;7 import org.apache.ibatis.session.SqlSession;8 import org.apache.ibatis.session.SqlSessionFactory;9 import org.apache.ibatis.session.SqlSessionFactoryBuilder;10 import org.junit.After;11 import org.junit.Before;12 import org.junit.Test;13 import com.chenyanbin.beans.Dept;14 import com.chenyanbin.dao.DeptMapper;1516 public class TestMain_01 {17 private SqlSession session;1819 @Before20 public void Start() {21 try {22 InputStream inputStream = Resources.getResourceAsStream("myBatis-config.xml");23 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);24 session = factory.openSession();25 } catch (Exception e) {26 e.printStackTrace();27 }28 }2930 @After31 public void end() {32 if (session == null) {33 session.close();34 }35 }3637 @Test38 public void test01() throws IOException {39 Dept d2 = new Dept();40 d2.setDname("上海事业部");41 d2.setLoc("上海");42 d2.setFlag(false);43 session.insert("deptSave", d2);44 mit();45 session.close();46 }4748 @Test49 public void test02() {50 DeptMapper dao=session.getMapper(DeptMapper.class);51 List<Dept> deptList=dao.deptFind();52 System.out.println("ok");53 }5455 }(8) 项⽬⽬录结构1.2 objectFactory 对象⼯⼚ MyBatis 每次创建结果对象的新实例时,它都会使⽤⼀个对象⼯⼚(ObjectFactory)实例来完成。

Java框架MyBatis基础知识

Java框架MyBatis基础知识

Java框架MyBatis基础知识MyBatis是一款持久层框架,提供了灵活、高效的访问数据库的方法。

它将SQL语句与Java代码分离,减少了重复的代码,使得代码更加简洁、易读,从而提高开发效率。

MyBatis支持多种数据库,如MySQL、Oracle等,同时还支持XML配置和注解配置方式。

本文将介绍MyBatis的基础知识,包括框架的作用、框架的核心组件、配置文件的编写和查询方式的选择。

一、框架的作用MyBatis的作用就是让Java程序员更加方便地访问数据库。

使用MyBatis框架可以减少代码量,避免传统开发方式中的一些问题。

其主要优点包括:1.简化数据访问层的代码:在传统的JDBC方式中,开发者需要自己编写与数据库的连接、关闭、SQL语句的执行等一系列操作,而MyBatis通过封装这些操作,简化了访问数据库的代码。

2.提高代码的可维护性:使用MyBatis可以将SQL语句与Java代码分离,降低了代码耦合度,使代码更加易维护。

3.易于扩展:MyBatis提供了灵活的扩展方式,可以自定义类型转换器、结果集处理器等。

4.良好的性能:MyBatis提供了多种缓存机制,可以提高程序的性能。

二、框架的核心组件MyBatis主要由以下几个核心组件组成:1. SqlSessionFactory:用于获取SqlSession实例的工厂类,是MyBatis的核心组件之一。

SqlSession实例是MyBatis中用于执行SQL 语句的核心对象,SqlSessionFactory负责创建和管理SqlSession实例。

2. Configuration:是MyBatis的核心配置类,其中包含了MyBatis中所有的配置信息。

Configuration中包括了与数据库连接相关的信息、Mapper接口与SQL语句的映射关系、缓存配置等。

3. Mapper:Mapper是MyBatis中的一种组件,用于将Java方法与SQL语句进行绑定。

mybatis第一天课堂笔记资料讲解

mybatis第一天课堂笔记资料讲解

m y b a t i s第一天课堂笔记mybatis 第一天 mybatis的基础知识课程安排:mybatis和springmvc通过订单商品案例驱动第一天:基础知识(重点,内容量多)对原生态jdbc程序(单独使用jdbc开发)问题总结mybatis框架原理(掌握)mybatis入门程序用户的增、删、改、查mybatis开发dao两种方法:原始dao开发方法(程序需要编写dao接口和dao实现类)(掌握)mybaits的mapper接口(相当于dao接口)代理开发方法(掌握)mybatis配置文件SqlMapConfig.xmlmybatis核心:mybatis输入映射(掌握)mybatis输出映射(掌握)mybatis的动态sql(掌握)第二天:高级知识订单商品数据模型分析高级结果集映射(一对一、一对多、多对多)mybatis延迟加载mybatis查询缓存(一级缓存、二级缓存)mybaits和spring进行整合(掌握)mybatis逆向工程1对原生态jdbc程序中问题总结1.1环境java环境:jdk1.7.0_72eclipse:indigomysql:5.11.2创建mysql数据导入下边的脚本:sql_table.sql:记录表结构sql_data.sql:记录测试数据,在实际企业开发中,最后提供一个初始化数据脚本1.3jdbc程序使用jdbc查询mysql数据库中用户表的记录。

创建java工程,加入jar包:数据库驱动包(mysql5.1)上边的是mysql驱动。

下边的是oracle的驱动。

程序代码:1.4问题总结1、数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。

设想:使用数据库连接池管理数据库连接。

2、将sql语句硬编码到java代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护。

设想:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。

MyBatis新手入门

MyBatis新手入门

第一章用MyBatis实现增删查改第一步下载打开http://mybatis.github.io/看这里使劲点它!跳转到这个页面再使劲点它就会跳转到github仓库,看到这个界面注意:这里只是mybatis的一些发表信息,点一下它终于来到这个下载地方了,特么的好累动一下你的手指,滚动到最下方点它转到到这里看,出来了吧,找的我那么辛苦,当时恨不得点烂它!解压出来,进去看到第二步搭建和配置这个目录结构就对了,用MyEclipse创建一个Web Project,把mybatis-3.2.8.jar拷贝粘贴到自己创建的MyEclipse项目中的lib下(不知道哪里是MyEclipse项目的lib文件夹的人建议转行别写代码了),我的结构是这样的为什么里面还多了一个mysql-connector-java-5.1.6-bin.jar呢?它是干嘛用的呢?我顺手拷贝进去的,看到这个mysql的jdbc驱动大家应该明白我要测试用的数据库是mysql,自己随意,用什么数据库就拷贝什么驱动。

MyBatis里面是没有的,网上多得是,自己要什么驱动就去下载什么驱动。

可以动手了动手去src下创建3个包,我是这样子的我个人比较喜欢收缩着看,比较简洁,看这里点它- Package Presentation – Hierarchial,就变成这样这样命名有自己的含义,我打算inter包专门放接口(Interface),model包放Bean,test包放测试类。

创建一个叫mybatis的数据库,在里面创建一个表叫user,表user的结构如下懒人请复制:CREATE TABLE IF NOT EXISTS `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`userName` varchar(50) DEFAULT NULL,`userAge` int(11) DEFAULT NULL,`userAddress` varchar(200) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ; 顺便弄写数据进去INSERT INTO `user` (`id`, `userName`, `userAge`, `userAddress`) VALUES (1, '余小龙', 10, '人民广场'),(3, 'lisiwei', 80, '中山大学南方学院123'),(5, '麦家潮', 20, '中国'),(6, '周杰伦', 30, '北京');在包model下创建一个User类,根据数据库表在类中创建相应的成员变量,如下:private int id;private String userName;private String userAge;private String userAddress;右击鼠标——Source——Generate Getter and Setter点全选——OK,变成这样子创建完User类,接下来在同一个包(model)下创建一个User.xml文件,填以下内容:头部的声明代码太麻烦?懒人请复制<!DOCTYPE mapper PUBLIC"-////DTD Mapper 3.0//EN" "/dtd/mybatis-3-mapper.dtd">接下来,定义一个查询方法,根据用户ID查询User表中的某一条记录,在<mapper></mapper>里面写<select>标签是MyBatis的查询标签,id=”selectUserById”随便改,但是,要记住哦,等下会用到的parameterType是参数类型的意思,resultType是结果类型的意思,把查询的结果封装成一个User对象,有人问过我,为什么我经常在一些表名两边加上反冒号`,如:,知道的请跳过以下内容:在mysql中,有些关键字是不能用的,例如order、database、table等等,我在表名user两端加上`,作用就是告诉mysql,我写这个user不是想要调用mysql关键字,这个user仅仅代表我自己定义的数据库表名,mysql的关键字太多,我不能确定user是不是其中之一,不想去查,所以加上``了事,那么mysql 就不管user是不是mysql关键字,就算不小心user真的是关键字,也当user 不起作用,忽略它。

Mybatis教程及使用配置

Mybatis教程及使用配置

Mybatis教程及使用配置2013-11-22 | 所属分类:Mybatis 教程入门配置12_17一.Mybatis简介MyBatis由Clinton Begin 在2002 年创建,其后,捐献给了Apache基金会,成立了iBatis 项目。

2010 年5 月,将代码库迁至Google Code,并更名为MyBatis。

MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。

MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。

相对Hibe rnate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。

二.从JDBC到Mybatis1. JDBC查询数据库数据,一般需要以下七个步骤:(1)加载JDBC驱动(2)建立并获取数据库连接(3)创建 JDBC Statements 对象(4)设置SQL语句的传入参数(5)执行SQL语句并获得查询结果(6)对查询结果进行转换处理并将处理结果返回(7)释放相关资源(关闭Connection,关闭Statement,关闭ResultSet)实现JDBC有七个步骤,哪些步骤是可以进一步封装的,减少我们开发的代码量?2. JDBC演变到Mybatis过程第一步优化:连接获取和释放问题描述:通过JDBC的方式数据库连接频繁的开启和关闭本身就造成了资源的浪费,影响系统的性能;但是现在连接池多种多样,可能存在变化,有可能采用DBCP的连接池,也有可能采用容器本身的JNDI数据库连接池。

解决问题:数据库连接的获取和关闭我们可以使用数据库连接池来解决资源浪费的问题,通过连接池就可以反复利用已经建立的连接去访问数据库了,减少连接的开启和关闭的时间。

同时通过DataSource进行隔离解耦,统一从DataSource里面获取数据库连接,DataSource 具体由DBCP实现还是由容器的JNDI实现都可以,将DataSource的具体实现通过让用户配置来应对变化。

mybatis教程

mybatis教程

mybatis实战教程(mybatis in action)之一:开发环境搭建mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk1.7,mybatis3.2.0.jar包。

这些软件工具均可以到各自的官方网站上下载。

首先建立一个名字为MyBaits 的dynamic web project1. 现阶段,你可以直接建立java 工程,但一般都是开发web项目,这个系列教程最后也是web的,所以一开始就建立web工程。

2. 将mybatis-3.2.0-SNAPSHOT.jar,mysql-connector-java-5.1.22-bin.jar 拷贝到web工程的lib目录.3. 创建mysql 测试数据库和用户表,注意,这里采用的是utf-8 编码创建用户表,并插入一条测试数据程序代码Create TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`userName` varchar(50) DEFAULT NULL,`userAge` int(11) DEFAULT NULL,`userAddress` varchar(200) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;Insert INTO `user` VALUES ('1', 'summer', '100', 'shanghai,pudong');到此为止,前期准备工作就完成了。

下面开始真正配置mybatis项目了。

1. 在MyBatis 里面创建两个源码目录,分别为src_user,test_src, 用如下方式建立,鼠标右键点击JavaResource.2. 设置mybatis 配置文件:Configuration.xml, 在src_user目录下建立此文件,内容如下:程序代码<?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" /><property name="username" value="root"/><property name="password" value="password"/></dataSource></environment></environments><mappers><mapper resource="com/yihaomen/mybatis/model/User.xml"/></mappers></configuration>3. 建立与数据库对应的java class,以及映射文件.在src_user下建立package:com.yihaomen.mybatis.model ,并在这个package 下建立User 类:程序代码package com.yihaomen.mybatis.model;public class User {private int id;private String userName;private String userAge;private String userAddress;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {erName = userName;}public String getUserAge() {return userAge;}public void setUserAge(String userAge) {erAge = userAge;}public String getUserAddress() {return userAddress;}public void setUserAddress(String userAddress) {erAddress = userAddress;}}同时建立这个User 的映射文件User.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="selectUserByID" parameterType="int" resultType="User">select * from `user` where id = #{id}</select></mapper>下面对这几个配置文件解释下:1.Configuration.xml 是mybatis 用来建立sessionFactory 用的,里面主要包含了数据库连接相关东西,还有java 类所对应的别名,比如<typeAlias alias="User"type="er"/>这个别名非常重要,你在具体的类的映射中,比如User.xml 中resultType 就是对应这里的。

Mybatis新手教程之简单入门

Mybatis新手教程之简单入门

Mybatis新⼿教程之简单⼊门1、Mybatis概述 MyBatis 是⽀持普通 SQL 查询(相⽐较于Hibernate的封装,Mybatis是半⾃动化的JDBC封装,⼀个特点就是Mybatis执⾏的SQL查询语句需要⾃⼰在配置⽂件中写),存储过程和⾼级映射的优秀持久层框架。

MyBatis 消除了⼏乎所有的 JDBC 代码和参数的⼿⼯设置以及对结果集的检索。

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

2、Mybatis原理解析下⾯以Mybatis简单的执⾏流程 1、加载mybatis全局配置⽂件(数据源、mapper映射⽂件等),解析配置⽂件,MyBatis基于XML配置⽂件⽣成Configuration,和⼀个个MappedStatement(包括了参数映射配置、动态SQL语句、结果映射配置),其对应着<select | update | delete | insert>标签项。

2、SqlSessionFactoryBuilder通过Configuration对象⽣成SqlSessionFactory,⽤来开启SqlSession。

3、SqlSession对象完成和数据库的交互: a、⽤户程序调⽤mybatis接⼝层api(即Mapper接⼝中的⽅法) b、SqlSession通过调⽤api的Statement ID找到对应的MappedStatement对象 c、通过Executor(负责动态SQL的⽣成和查询缓存的维护)将MappedStatement对象进⾏解析,sql参数转化、动态sql拼接,⽣成jdbc Statement对象 d、JDBC执⾏sql。

e、借助MappedStatement中的结果映射关系,将返回结果转化成HashMap、JavaBean等存储结构并返回。

Mybatis资料教程

Mybatis资料教程

2.4. 定义表所对应的实体类
public class User { private int id; private String name; private int age; //get,set 方法 }
2.5. 定义操作 users 表的 sql 映射文件 userMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-////DTD "/dtd/mybatis-3-mapper.dtd"> Mapper 3.0//EN"
3.2. 注解的实现
1). 定义 sql 映射的接口
public interface UserMapper { @Insert("insert into users(name, age) values(#{name}, #{age})") public int insertUser(User user);
“玩转”Java 系列
2.3. 添加 Mybatis 的配置文件 conf.xml
<?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="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatis" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> </configuration>

mybatis语法和介绍详细

mybatis语法和介绍详细

一、MyBat‎i s简介与‎配置MyB‎a tis+Sprin‎g+MySql‎1.1MyBa‎t is简介‎MyBat‎i s 是一个可以‎自定义SQ‎L、存储过程和‎高级映射的‎持久层框架‎。

MyBat‎i s 摒除了大部‎分的JDB‎C 代码、手工设置参‎数和结果集‎重获。

MyBat‎i s 只使用简单‎的XML 和注解来配‎置和映射基‎本数据类型‎、Map 接口和PO‎J O 到数据库记‎录。

相对Hib‎e rnat‎e和Apa‎c he OJB等“一站式”ORM解决‎方案而言,Mybat‎i s 是一种“半自动化”的ORM实‎现。

需要使用的‎J ar包:mybat‎i s-3.0.2.jar(mybat‎i s核心包‎)。

mybat‎i s-sprin‎g-1.0.0.jar(与Spri‎n g结合包‎)。

下载地址:http://ibati‎s.apach‎/tools‎/ibato‎rhttp://code.googl‎/p/mybat‎i s/1.2MyBa‎t is+Sprin‎g+MySql‎简单配置1.2.1搭建Sp‎r ing环‎境1,建立mav‎e n的we‎b项目;2,加入Spr‎i ng框架‎、配置文件;3,在pom.xml中加‎入所需要的‎j ar包(sprin‎g框架的、mybat‎i s、mybat‎i s-sprin‎g、junit‎等);4,更改web‎.xml和s‎p ring‎的配置文件‎;5,添加一个j‎s p页面和‎对应的Co‎n trol‎l er;6,测试。

可参照:http://limin‎g niha‎o.iteye‎.com/blog/83040‎9。

使用Ecl‎i pse的‎M aven‎构建Spr‎i ngMV‎C项目1.2.2建立My‎S ql数据‎库建立一个学‎生选课管理‎数据库。

表:学生表、班级表、教师表、课程表、学生选课表‎。

逻辑关系:每个学生有‎一个班级;每个班级对‎应一个班主‎任教师;每个教师只‎能当一个班‎的班主任;使用下面的‎s ql进行‎建数据库,先建立学生‎表,插入数据(2条以上)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 下载mybatis-3.2.2.jar包并导入工程 2. 编写MyBatis核心配置文件(configuration.xml) 3. 创建实体类-POJO 4. DAO层-SQL映射文件(mapper.xml) 5. 创建测试类
读取核心配置文件mybatis-config.xml 创建SqlSessionFactory对象,读取配置文件 创建SqlSession对象 调用mapper文件进行数据操作
5/49
为什么需要框架技术 如何更快更好地写简历?
问题
使用word简历模板
思考
使用模板有什么好处呢?
不用考虑布局、排版等,提高效率 可专心在简历内容上 结构统一,便于人事阅读 新手也可以作出专序的半成品 提供可重用的公共结构 按一定规则组织的一组组件
!
MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案,
适用于性能要求较高或者需求多变的互联网项目
20/49
MyBatis基本要素 MyBatis的核心对象
SqlSessionFactoryBuilder SqlSessionFactory SqlSession
mybatis-config.xml 系统核心配置文件 mapper.xml SQL映射文件
分析优势
不用再考虑公共问题 专心在业务实现上 结构统一,易于学习、维护 新手也可写出好程序
7/49
主流框架介绍3-1
MVC设计模式的实现 拦截器 可变和可重用的标签
ORM,简化数据库操作 DAO层
8/49
主流框架介绍3-2
依赖注入容器 / AOP实现 声明式事务 简化Java EE应用 黏合剂,将大家组装到一起
演示示例1:查询用户表记录数
16/49
学员操作—查询供应商表记录数
练习 需求说明 搭建MyBatis开发环境,实现供应商表记录数查询
提示 在MyEclipse中创建工程,导入MyBatis的jar包 创建MyBatis配置文件mybatis-config.xml,配置数据库信息 编写实体类Provider.java 编写SQL映射文件ProviderMapper.xml 编写测试类ProviderMapperTest.java,运行输出结果
12/49
MyBatis简介
MyBatis前身是iBatis,本是Apache的一个开源的项目 官方网站
ORM框架 实体类和SQL语句之间建立映射关系 特点
基于SQL语法,简单易学 能了解底层封装过程 SQL语句封装在配置文件中,便于统一管理与维护,降低程序
MyBatis入门
本课目标 学完本门课程后,你能够 掌握MyBatis、Spring、SpringMVC三大框架技术 搭建SpringMVC+Spring+MyBatis框架,并在此框 架上熟练进行项目开发
2/49
课程项目展示
贯穿案例:超市订单管理系统 项目案例:APP信息管理平台
演 示 : 演 示示课:程演项示目课 程 项 目
的耦合度 方便程序代码调试
13/49
超市订单管理系统介绍2-1 总体功能模块
演示:演示课程项目
14/49
超市订单管理系统介绍2-2
数据库设计

用户表 角色表 供应商表 订单表 地址信息表
逻辑外键关联
演示:数据库表结构
15/49
搭建MyBatis开发环境 使用MyBatis的开发步骤
19/49
MyBatis框架优缺点
优点
与JDBC相比,减少了50%以上的代码量
最简单的持久化框架,小巧并简单易学
SQL代码从程序代码中彻底分离,可重用
提供XML标签,支持编写动态SQL
提供映射标签,支持对象与数据库的ORM字段映射
缺点
SQL语句编写工作量大,对开发人员有一定要求
数据库移植性差
JDBC … stmt.execute("…") …
持久状态
11/49
持久化与ORM2-2
User对象
ORM(Object Rnealmatei:on小a颖l Mapping)
编写程序的时s候ex,:女以面向对象的方式处理数据
保存数据的时s计候kil,l:却英语以、关程系序型设数据库的方式存储
完成时间:20分钟
17/49
共性问题集中讲解 常见问题及解决办法 代码规范问题 调试技巧
共性问题集中讲解
18/49
与JDBC直观对比 MyBatis将代码分解包装
对数据库的数据源的管理包括 事务管理
通过配置文件,管理 SQL 及输入 参数的映射 通过配置文件,获取返回结果到 Java 对象的映射
Spring MVC
结构最清晰的MVC Model2实现 高度可配置,支持多种视图技术 定制化开发
9/49
主流框架介绍3-3
半自动化的ORM实现 DAO层 动态SQL 小巧灵活、简单易学
10/49
持久化与ORM2-1 持久化是程序数据在瞬时状态和持久状态间转换的过程
内存 姓名:小颖 性别:女 特长:英语
3/49
本章任务 搭建MyBatis开发环境 完成对用户表、供应商表的简单查询操作
4/49
本章目标 理解数据持久化概念和ORM原理 理解MyBatis的概念以及优点特性 搭建MyBatis环境 了解MyBatis与JDBC的区别与联系 理解核心类的作用域和生命周期 掌握全局配置文件结构内容
ORM解决方案包含下面四个部分
在对持持久久化化nseaxm对对e 象象属性上提执供行一uu基种sseerr本查__nSae的询mx e字增语段、言删或、者改AP、I 对查象操-作关系映射
对象关系ski映ll 射工具 user_skill
提供与事务对象交互、执行检查、延迟加载以及其他优 化功能
21/49
核心接口和类的结构
SqlSessionFactoryBuilder
build() SqlSessionFactory
openSession()
SqlSession
22/49
核心对象5-1
SqlSessionFactoryBuilder 用过即丢,其生命周期只存在于方法体内 可重用其来创建多个 SqlSessionFactory 实例 负责构建SqlSessionFactory,并提供多个build方法的重载
相关文档
最新文档