Mybatis总结

时间:2019-05-13 18:14:27下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《Mybatis总结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《Mybatis总结》。

第一篇:Mybatis总结

Mybatis总结

1.mybatis的简单概述: 1.1 mybatis简单概述:

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

1.2 功能架构: 分为三层:

(1).API接口层:定义api接口,外部人员通过这个接口来调用方法从而操纵数据库。

(2).数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理

等。它主要的目的是根据调用的请求完成一次数据库操作。

(3).基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓

存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数 据处理层提供最基础的支撑。

2.mybatis快速入门: a.添加jar包:

mybatis

asm-3.3.1.jar

cglib-2.2.2.jar

commons-logging-1.1.1.jar

log4j-1.2.16.jar

mybatis-3.1.1.jar

slf4j-api-1.6.2.jar

slf4j-log4j12-1.6.2.jar

mysql驱动

mysql-connector-java-5.1.7-bin.jar

b.建库+表:

create database mybatis;

use mybatis;CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);

INSERT INTO users(NAME, age)VALUES('Tom', 12);

INSERT INTO users(NAME, age)VALUES('Jack', 11);

c.在应用的src下添加Mybatis的配置文件conf.xml:

d.定义表所对应的实体类:

public class User {

private int id;

private String name;

private int age;

}

e.定义操作users表的sql映射文件userMapper.xml:

f.在conf.xml文件中注册userMapper.xml文件:

g.编写测试代码:执行定义的select语句:

public class Test {

public static void main(String[] args)throws IOException {

String resource = “conf.xml”;

//加载mybatis的配置文件(它也加载关联的映射文件)

Reader reader = Resources.getResourceAsReader(resource);

//构建sqlSession的工厂

SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);

//创建能执行映射文件中sql的sqlSession

SqlSession session = sessionFactory.openSession();

//映射sql的标识字符串

String statement = “net.lamp.java.mybatis.bean.userMapper”+“.selectUser”;

//执行查询返回一个唯一user对象的sql

User user = session.selectOne(statement, 1);

System.out.println(user);

}

}

3.编写基于mybatis的操作users表的CRUD操作的dao类: a.XML的实现:

1.定义sql映射xml文件:

insert into users(name, age)values(#{name}, #{age});

delete from users where id=#{id}

update users set name=#{name},age=#{age} where id=#{id}

2.在config.xml中注册这个映射文件

3.在dao中调用:

public User getUserById(int id){

SqlSession session = sessionFactory.openSession();

User user = session.selectOne(URI+“.selectUser”, id);

return user;

} b.注解的实现:

1.定义sql映射的接口

public interface UserMapper {

@Insert(“insert into users(name, age)values(#{name}, #{age})”)

public int insertUser(User user);

@Delete(“delete from users where id=#{id}”)

public int deleteUserById(int id);

@Update(“update users set name=#{name},age=#{age} where id=#{id}”)

public int updateUser(User user);

@Select(“select * from users where id=#{id}”)

public User getUserById(int id);

@Select(“select * from users”)

public List getAllUser();

}

2.在config中注册这个映射接口

3.在dao类中调用

public User getUserById(int id){

SqlSession session = sessionFactory.openSession();

UserMapper mapper = session.getMapper(UserMapper.class);

User user = mapper.getUserById(id);

return user;

}

4.几个可以优化的地方: a.连接数据库的几个配置可以单独放在一个properties文件中

db.properties:

b.为实体类定义别名,简化sql映射xml文件中的引用

c.可以在src下加入log4j的配置文件,打印日志信息(主要是sql语句)

1.log4j.properties

log4j.properties,log4j.rootLogger=DEBUG, Console

#Console

log4j.appender.Console=org.apache.log4j.ConsoleAppender

log4j.appender.Console.layout=org.apache.log4j.PatternLayout

log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c]-%m%n

log4j.logger.java.sql.ResultSet=INFO

log4j.logger.org.apache=INFO

log4j.logger.java.sql.Connection=DEBUG

log4j.logger.java.sql.Statement=DEBUG

log4j.logger.java.sql.PreparedStatement=DEBUG

5.解决表的字段名与实体类的属性名不相同的冲突: a.准备表和数据:

CREATE TABLE orders(order_id INT PRIMARY KEY AUTO_INCREMENT,order_no VARCHAR(20),order_price FLOAT);

INSERT INTO orders(order_no, order_price)VALUES('aaaa', 23);

INSERT INTO orders(order_no, order_price)VALUES('bbbb', 33);

INSERT INTO orders(order_no, order_price)VALUES('cccc', 22);

b.定义实体类:

public class Order {

private int id;

private String orderNo;

private float price;

}

c.实现getOrderById(id)的查询

定义

6.实现联表查询: 1).一对一:

a.创建表和数据:

CREATE TABLE teacher(t_id INT PRIMARY KEY AUTO_INCREMENT,t_name VARCHAR(20));

CREATE TABLE class(c_id INT PRIMARY KEY AUTO_INCREMENT,c_name VARCHAR(20),teacher_id INT);

ALTER TABLE class ADD CONSTRAINT fk_teacher_id FOREIGN KEY(teacher_id)REFERENCES teacher(t_id);

INSERT INTO teacher(t_name)VALUES('LS1');

INSERT INTO teacher(t_name)VALUES('LS2');

INSERT INTO class(c_name, teacher_id)VALUES('bj_a', 1);

INSERT INTO class(c_name, teacher_id)VALUES('bj_b', 2);

b.定义实体类:

public class Teacher {

private int id;

private String name;

}

public class Classes {

private int id;

private String name;

private Teacher teacher;

}

c.定义sql映射文件ClassMapper.xml:

2)一对多

a.创建表和数据:

CREATE TABLE student(s_id INT PRIMARY KEY AUTO_INCREMENT,s_name VARCHAR(20),class_id INT);

INSERT INTO student(s_name, class_id)VALUES('xs_B', 1);

INSERT INTO student(s_name, class_id)VALUES('xs_D', 1);

INSERT INTO student(s_name, class_id)VALUES('xs_E', 1);

INSERT INTO student(s_name, class_id)VALUES('xs_A', 2);

INSERT INTO student(s_name, class_id)VALUES('xs_H', 2);

INSERT INTO student(s_name, class_id)VALUES('xs_J', 2);

b.定义实体类:

public class Student {

private int id;

private String name;

}

public class Classes {

private int id;

private String name;

private Teacher teacher;

private List students;

}

c.定义sql映射文件ClassMapper.xml:(根据classId查询对应的班级信息,包括学生)

第二篇:MyBatis教程(一)(范文)

MyBatis教程(一)

1、简介、获取

官方网站:http://code.google.com/p/mybatis/

目前最新版本:mybatis-3.1.1-bundle.zip

MyBatis是一个优秀的持久层(数据访问层)框架。

MyBatis主要用来执行SQL命令或者存储过程。

MyBatis能将SQL语句与Java对象之间进行一种映射。

例如:

数据库:select * from UserInfo 表、字段

JAVA: public class UserInfo{ 类、属性

int id;

String username;

String password;

}

JDBC代码中,常常:

user.setId(rs.getInt(1)); 我们必须自己来管理字段和属性之间的对

应关系。

MyBatis中,可能是:

UserInfo user = session.selectOne(“dao.UserInfoDAO.selectById”, 1);

List list = session.selectList(“dao.UserInfoDAO.selectAll”);

2、入门示例

a)、将mybatis-3.1.1.jar添加到构建路径。

b)、在src下建立一个MyBatis的配置文件,名叫:mybatis.xml,配置文件中需要配置 数据库连接的驱动类,连接字符串,用户名 和 密码。

c)、在demo01.TestSqlSessionFactory类中编写代码。

d)、数据库中建立一张表:UserInfo,建立实体类 demo02.UserInfo e)、创建UserInfo.xml文件,其中配置查询语句。

f)、在 demo02.TestSqlSession类中编写代码,调用UserInfo的查询,输出结果。

3、配置MyEclipse下MyBatis的自动提示功能

1、将MyBatis两种配置文件的DTD文件从网上下载下来,拷贝到我们的项目中。DTD —— Document Type Define —— 文档类型定义

DTD文件可以决定我们的XML中能写哪些标签,标签的嵌套顺序,以及标签有哪 些属性。

2、MyEclipse  Window  Preferences  输入 xml,找到 XML Catalog,点击 User Specified Entries,点击 AddKey Type下拉,选择 URIKey:http://mybatis.org/dtd/mybatis-3-config.dtdLocation: Workspace下选择我们对应的DTD文件。

3、简单的增、删、改、查实现

select * from t_blog where id in

#{item}

上述collection的值为list,对应的Mapper是这样的public List dynamicForeachTest(List ids);

测试代码:

@Test

public void dynamicForeachTest(){

SqlSession session = Util.getSqlSessionFactory().openSession();BlogMapper blogMapper = session.getMapper(BlogMapper.class);List ids = new ArrayList();

ids.add(1);

ids.add(3);

ids.add(6);

List blogs = blogMapper.dynamicForeachTest(ids);

for(Blog blog : blogs)

System.out.println(blog);

session.close();

}

2.单参数array数组的类型:

上述collection为array,对应的Mapper代码:

public List dynamicForeach2Test(int[] ids);

对应的测试代码:

@Test

public void dynamicForeach2Test(){

SqlSession session = Util.getSqlSessionFactory().openSession();BlogMapper blogMapper = session.getMapper(BlogMapper.class);int[] ids = new int[] {1,3,6,9};

List blogs = blogMapper.dynamicForeach2Test(ids);for(Blog blog : blogs)

System.out.println(blog);

session.close();

}

3.自己把参数封装成Map的类型

上述collection的值为ids,是传入的参数Map的key,对应的Mapper代码:public List dynamicForeach3Test(Map params);对应测试代码:

@Test

public void dynamicForeach3Test(){

SqlSession session = Util.getSqlSessionFactory().openSession();BlogMapper blogMapper = session.getMapper(BlogMapper.class);final List ids = new ArrayList();

ids.add(1);

ids.add(2);

ids.add(3);

ids.add(6);

ids.add(7);

ids.add(9);

Map params = new HashMap();params.put(“ids”, ids);

params.put(“title”, “中国”);

List blogs = blogMapper.dynamicForeach3Test(params);for(Blog blog : blogs)

System.out.println(blog);

session.close();

}

第四篇:黑马程序员mybatis教程第一天:课程安排和原生态jdbc程序中问题总结

课程安排:

mybatis和springmvc通过订单商品 案例驱动

第一天:基础知识(重点,内容量多)

对原生态jdbc程序(单独使用jdbc开发)问题总结

mybatis框架原理(掌握)

mybatis入门程序

用户的增、删、改、查

mybatis开发dao两种方法:

原始dao开发方法(程序需要编写dao接口和dao实现类)(掌握)

mybaits的mapper接口(相当于dao接口)代理开发方法(掌握)

mybatis配置文件SqlMapConfig.xml mybatis核心:

mybatis输入映射(掌握)

mybatis输出映射(掌握)

mybatis的动态sql(掌握)

第二天:高级知识

订单商品数据模型分析

高级结果集映射(一对一、一对多、多对多)

mybatis延迟加载

mybatis查询缓存(一级缓存、二级缓存)

mybaits和spring进行整合(掌握)

mybatis逆向工程

对原生态jdbc程序中问题总结

环境

java环境:jdk1.7.0_72 eclipse:indigo mysql:5.1

创建mysql数据

导入下边的脚本:

sql_table.sql:记录表结构

sql_data.sql:记录测试数据,在实际企业开发中,最后提供一个初始化数据脚本

jdbc程序

使用jdbc查询mysql数据库中用户表的记录。

创建java工程,加入jar包:

数据库驱动包(mysql5.1)

上边的是mysql驱动。下边的是oracle的驱动。

程序代码:

问题总结

1、数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响 数据库性能。设想:使用数据库连接池管理数据库连接。

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

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

3、向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。

设想:将sql语句及占位符号和参数全部配置在xml中。

4、从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,不利于系统维护。

设想:将查询的结果集,自动映射成java对象。

第五篇:总结

1994年9月,我以满腔的热情、满怀的信心投身于教育事业。1999年12月,我获得了小学一级教师资格。任现职以来,我主要是担任班主任和高年级数学教学,工作一丝不苟,热心支持学校所开展的各项工作和活动,出色地完成了学校交给的任务。现将任职以来的思想及工作情况总结如下:

一、思想表现方面:

本人始终坚持把坚定正确的政治方向放在首位,高举邓小平理论伟大旗帜,深入学习邓小平理论及“三个代表”的重要思想,全面贯彻党的教育方针,忠诚于党的教育事业,工作积极主动,勇挑重担,认真履行岗位职责,有极强的事业心和责任感。遵纪守法,遵守社会公德,严格自律,努力提高自己的政治素质,坚持专业知识的学习,积极参加进修、培训、教研活动,真心地对待每一位老师和学生。用自己的言行及人格魅力赢得了广大师生的尊重和信任。

二、教育教学工作:

1、班主任工作方面:长期以来,我一直把“勤奋努力,奉献爱心”作为班主任的原则,所以我能够坚持正面教育,大胆从心理素质方面探索德育教育的触发点,关心爱护学生,言传身教。我尊重学生的人格,不歧视差生,注意做好后进生的转化工作,对一些思想上不够成熟、自律性差、孤僻自卑或狂妄等缺点的学生,我进行了细致的了解,从生活、学习等方面关心他们,让他们觉得我既是一个值得尊敬的老师,又是一个可以与他们谈心的朋友。在转化后进生、扭转班级学风上我做出了突出的成绩,德育工作得到大多数领导和老师们的肯定。在2001年秋季学期,转化了四(2)班的毛善思、黄福绿等5位问题学生。、2006年在春季学期,转化了三(2)班吴宏达、朱家南、陆文乐、卓福添、杨秀珍、潘昆等6位后进生,秋季学期所带六(2)班班风好,学习气氛浓厚,纪律、成绩优秀.2008年5月12日四川发生了里氏8.0大地震,我所在学校和班里都积极捐款,我用实际爱心赢得学生的信赖,所带的六(1)班为灾区总共捐了562.8元。2008年秋季学期转变陆文格、覃宗相、潘启发、丁承宇等4位问题学生。

2、教学工作方面:任现职以来,我主要是担任数学科教学工作。在具体教学活动中,我积极思考,勇于探索,锐意进取,改进教法,钻研教材、大纲、考纲以及新课程标准,善于创造情境,营造轻松、民主的课堂氛围,逐渐形成了自己的教学风格,在评教活动中获得了很高的评价,所带班级学科教学质量效果较为明显。在任现职期间,我担任过的七届毕业班数学教学,学生参加毕业水平调研,平均分均达到90分以上,达标率均达100%。如2003年、2006年、2008年秋季学期期末教学质量检测中所教六(2)班、六(1)班、六(1)─ 4 ─

任现职以来专业技术工作总结 班,这三个班的平均分分别获得当年同年级同科目一等奖、二等奖、一等奖。2005年所教的六(2)班学生在春季学期参加来宾市数学竞赛中,黄子宾、杨可秀、卓秋华分别获得一、二、三等奖,我也获得指导奖;在春季学期毕业水平测试中所教数学科平均分获镇本年级本科目三等奖。2005年秋季学期所指导三(2)班学生在参加广西小学数学应用知识竞赛中取得了较好的成绩,其中陈钟子圆获一等奖,韦慧岚、谭道振等六位同学获二等奖,黎燕、谭莉莉等三位同学获三等奖,我因此也获得自治区级竞赛指导一等奖。2009年,我获兴宾区小学毕业水平调研数学科成绩优胜奖,所教六(1)班数学科平均分获镇同年级同科目二等奖,秋季学期镇举行的公开课比赛获二等奖。

3、少先队辅导员工作:在担任学校少先队辅导员其间,除做好本职工作的之外,我还积极协助学校做好各项工作,每学期均组织团队开展丰富多彩的活动:植树造林美化校园,增强学生环保意识;清明节祭扫烈士墓,让学生激发爱国情怀;“六一”儿童节开展联欢活动,让他们度过难忘的节日。同时,还经常组织学生到敬老院慰问老人,开展人人都为国家贡献一份力量,争当时代好少年的活动。由于出色地完成工作,我被评为2000柳州地区优秀少先队辅导员,考核为优秀等级。

三、传帮互补,关心教师,共同进步:

“一枝独秀不是春,万紫千红春满园”,青年教师有新思想,知识丰富,个性张扬,为学校发展注放了一股清新的泉水,让他们在教学的舞台上发挥自己的才能,是学校希望所在。在提高自身教学水平的同时,我认真参加备课组活动,积极承担培训青年教师的工作。在任现职期间,我每学年都承担在校内上公开课、研究课的任务,积极扶持青年教师的成长。经我悉心指导的黄锦秋、韦飞龙、覃爱芬成了校级学科骨干教师,秦丽、何基浪成了优秀班主任。

四、其他方面:

在搞好本职工作的同时,我积极参加各种继续教育培训活动,完成了专科函授课程的学习,现继续本科函授的学习。在繁忙的教学之余,笔耕不辍,我撰写了一些有创新意识的教研、教改论文。曾有教学论文《如何上好每一节课》、《应如何适应新时代的要求》等在学校教师例会上交流,效果良好;撰写的教育教学论文《浅谈小学数学新课程教学的优化策略》在2008年广西中小学(幼儿园)教育教学论文评比中获三等奖,2009年所撰写的论文《数学新课程教学改革之我见》在中国教育教学全国评选活动中获二等奖。2010年3月25日,我代表中心校的数学骨干教师到来宾市祥和小学进行“数学本质下的读懂教材和落实‘四基’”主题培训,4月25日对全中心校数学教师进行集中培训。

总之,任现职以来,我忠诚于党的教育事业,兢兢业业,以身作则,为人师表,做到既教书又育人。虽然在平凡的工作岗位,但我决心在以后的教学中,更加努力,为党的教育事业作出更多的贡献,成为一名优秀出色的人民教师。

下载Mybatis总结word格式文档
下载Mybatis总结.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    年度总结

    2016-2017学年个人总结和展望 转眼间我已经进入了大三,在二年多的学习生活中,有酸甜苦辣,有欢笑和泪水,有成功和挫折,大家一起欢笑过,一起努力过,一起奋斗过,一起追求自己的梦想,一起......

    总结

    【驾驶行为】 ‘flying out‘ ---------加速或刹车都能导致。 车胎磨损,constantly pulls to the left/right 前驱/后轮驱动,转弯过度加速。The front wheel tends to turn ou......

    总结

    2010年度支部工作总结2010年在历史一页中已经过去了,迎来了2011年。过去的一年来,支部各项工作在街道党工委、办事处及有关职能部门帮助指导下,在全体党员及广大代表的理解支持......

    总结

    宣传委员工作总结 作为宣传委员,我的职责是受班长、团支书的领导,对其负责,受其监督,并向其汇报工作,经过半年的努力,我有信心做好我的本职工作。 首先,我协助本班的团支书搞好思想......

    总结汇总

    2016年各项目部情况汇总 榆麻路绿化完成产值300万元,签证20万元,支出125万元,未发生一起质量安全事故。 育才中学完成产值170万元,签证利润4.37万元,支出124万元,未发生一起质量安......

    2017年度总结

    2017年工作总结 今年,在领导的关心指导和同事们的大力支持配合下,我严格要求自己,保持‚谦虚、谨慎、律己、务实‛的态度,工作已经顺利、圆满的完成。通过一年努力的工作,自己在......

    总结

    2010—2011学年度第二学期 工作总结 付 文 萍2011-7-8 2010-2011学年度第二学期工作总结 本学期我的工作进入了尾声,回顾这一学期以来,我班在学校领导的大力支持和直接领......

    2006年度总结

    2006年普通话培训总结 多年来,我校高度重视语言文字工作。2006年,我校语言文字工作在原有基础上取得了一定成绩,现简要总结如下: 一、专人负责,监督指导。 规范语言文字工作,重要......