搜档网
当前位置:搜档网 › mybatis教程从入门到精通

mybatis教程从入门到精通

mybatis教程从入门到精通
mybatis教程从入门到精通

mybatis教程从入门到精通

什么是mybatis

MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录.

orm工具的基本思想

无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:

1. 从配置文件(通常是XML配置文件中)得到sessionfactory.

2. 由sessionfactory 产生session

3. 在session 中完成对数据的增删改查和事务提交等.

4. 在用完之后关闭session 。

5. 在java 对象和数据库之间有做mapping 的配置文件,也通常是xml 文件。

mybatis实战教程(mybatis in action)之一:开发环境搭建

mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包。这些软件工具均可以到各自的官方网站上下载。

首先建立一个名字为MyBaits 的dynamic web project

1. 现阶段,你可以直接建立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 "-//https://www.sodocs.net/doc/3e16971306.html,//DTD Config 3.0//EN"

"https://www.sodocs.net/doc/3e16971306.html,/dtd/mybatis-3-config.dtd">

< configuration>

< /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) {

https://www.sodocs.net/doc/3e16971306.html,erName = userName;

}

public String getUserAge() {

return userAge;

}

public void setUserAge(String userAge) {

https://www.sodocs.net/doc/3e16971306.html,erAge = userAge;

}

public String getUserAddress() {

return userAddress;

}

public void setUserAddress(String userAddress) {

https://www.sodocs.net/doc/3e16971306.html,erAddress = userAddress;

}

}

同时建立这个User 的映射文件User.xml:

程序代码程序代码

< ?xml version="1.0" encoding="UTF-8" ?>

< !DOCTYPE mapper PUBLIC "-//https://www.sodocs.net/doc/3e16971306.html,//DTD Mapper 3.0//EN"

"https://www.sodocs.net/doc/3e16971306.html,/dtd/mybatis-3-mapper.dtd">

< mapper namespace="https://www.sodocs.net/doc/3e16971306.html,erMapper">

< /mapper>

下面对这几个配置文件解释下:

1.Configuration.xml 是mybatis 用来建立sessionFactory 用的,里面主要包含了数据库连接相关东西,还有java 类所对应的别名,比如 这个别名非常重要,你在具体的类的映射中,比如User.xml 中resultType 就是对应这里的。要保持一致,当然这里的resultType 还有另

外单独的定义方式,后面再说。

2. Configuration.xml 里面的是包含要映射的类的xml配置文件。

3. 在User.xml 文件里面主要是定义各种SQL 语句,以及这些语句的参数,以及要返回的类型等.

开始测试

在test_src 源码目录下建立com.yihaomen.test这个package,并建立测试类Test:

程序代码程序代码

package com.yihaomen.test;

import java.io.Reader;

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 https://www.sodocs.net/doc/3e16971306.html,er;

public class Test {

private static SqlSessionFactory sqlSessionFactory;

private static Reader reader;

static{

try{

reader = Resources.getResourceAsReader("Configuration.xml");

sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);

}catch(Exception e){

e.printStackTrace();

}

}

public static SqlSessionFactory getSession(){

return sqlSessionFactory;

}

public static void main(String[] args) {

SqlSession session = sqlSessionFactory.openSession();

try {

User user = (User) session.selectOne("https://www.sodocs.net/doc/3e16971306.html,erMapper.selectUserByID", 1);

System.out.println(user.getUserAddress());

System.out.println(user.getUserName());

} finally {

session.close();

}

}

}

现在运行这个程序,是不是得到查询结果了。恭喜你,环境搭建配置成功,接下来第二章,将讲述基于接口的操作方式,增删改查。

整个工程目录结构如下:

除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!

mybatis实战教程(mybatis in action)之二:以接口的方式编程

前面一章,已经搭建好了eclipse,mybatis,mysql的环境,并且实现了一个简单的查询。请注意,这种方式是用SqlSession实例来直接执行已映射的SQL语句:

session.selectOne("https://www.sodocs.net/doc/3e16971306.html,erMapper.selectUserByID", 1)

其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如IUserOperation.class),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细过程:

在src_user源码目录下建立com.yihaomen.mybatis.inter 这个包,并建立接口类IUserOperation , 内容如下:

程序代码程序代码

package com.yihaomen.mybatis.inter;

import https://www.sodocs.net/doc/3e16971306.html,er;

public interface IUserOperation {

public User selectUserByID(int id);

}

请注意,这里面有一个方法名selectUserByID 必须与User.xml 里面配置的select 的id 对应(

select * from user where userName like #{userName}

在IUserOperation 接口中增加方法:public List selectUsers(String userName);

现在在Test 类中做测试

程序代码程序代码

public void getUserList(String userName){

SqlSession session = sqlSessionFactory.openSession();

try {

IUserOperation userOperation=session.getMapper(IUserOperation.class);

List users = userOperation.selectUsers(userName);

for(User user:users){

System.out.println(user.getId()+":"+user.getUserName()+":"+user.getUserAddress());

}

} finally {

session.close();

}

}

现在在main 方法中可以测试:

程序代码程序代码

public static void main(String[] args) {

Test testUser=new Test();

testUser.getUserList("%");

}

可以看到,结果成功查询出来。如果是查询单个数据的话,用第二讲用过的方法就可以了。

用mybatis 增加数据

在IUserOperation 接口中增加方法:public void addUser(User user);

在User.xml 中配置

程序代码程序代码

< !--执行增加操作的SQL语句。id和parameterType

分别与IUserOperation接口中的addUser方法的名字和

参数类型一致。以#{name}的形式引用Student参数

的name属性,MyBatis将使用反射读取Student参数

的此属性。#{name}中name大小写敏感。引用其他

的gender等属性与此一致。seGeneratedKeys设置

为"true"表明要MyBatis获取由数据库自动生成的主

键;keyProperty="id"指定把获取到的主键值注入

到Student的id属性-->

useGeneratedKeys="true" keyProperty="id">

insert into user(userName,userAge,userAddress)

values(#{userName},#{userAge},#{userAddress})

然后在Test 中写测试方法:

程序代码程序代码

/**

* 测试增加,增加后,必须提交事务,否则不会写入到数据库.

*/

public void addUser(){

User user=new User();

user.setUserAddress("人民广场");

user.setUserName("飞鸟");

user.setUserAge(80);

SqlSession session = sqlSessionFactory.openSession();

try {

IUserOperation userOperation=session.getMapper(IUserOperation.class);

userOperation.addUser(user);

https://www.sodocs.net/doc/3e16971306.html,mit();

System.out.println("当前增加的用户id为:"+user.getId());

} finally {

session.close();

}

}

用mybatis 更新数据

方法类似,先在IUserOperation 中增加方法:public void addUser(User user);

然后配置User.xml

程序代码程序代码

update user set userName=#{userName},userAge=#{userAge},userAddress=#{userAddress} where id=#{id}

Test 类总的测试方法如下:

程序代码程序代码

public void updateUser(){

//先得到用户,然后修改,提交。

SqlSession session = sqlSessionFactory.openSession();

try {

IUserOperation userOperation=session.getMapper(IUserOperation.class);

User user = userOperation.selectUserByID(4);

user.setUserAddress("原来是魔都的浦东创新园区");

userOperation.updateUser(user);

https://www.sodocs.net/doc/3e16971306.html,mit();

} finally {

session.close();

}

}

用mybatis 删除数据

同理,IUserOperation 增加方法:public void deleteUser(int id);

配置User.xml

程序代码程序代码

delete from user where id=#{id}

然后在Test类中写测试方法:

程序代码程序代码

/**

* 删除数据,删除一定要commit.

* @param id

*/

public void deleteUser(int id){

SqlSession session = sqlSessionFactory.openSession();

try {

IUserOperation userOperation=session.getMapper(IUserOperation.class);

userOperation.deleteUser(id);

https://www.sodocs.net/doc/3e16971306.html,mit();

} finally {

session.close();

}

}

这样,所有增删改查都完成了,注意在增加,更改,删除的时候要调用https://www.sodocs.net/doc/3e16971306.html,mit(),这样才会真正对数据库进行操作,否则是没有提交的。

到此为止,简单的单表操作,应该都会了,接下来的时间了,我会讲多表联合查询,以及结果集的选取。

除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!

mybatis实战教程(mybatis in action)之四:实现关联数据的查询

有了前面几章的基础,对一些简单的应用是可以处理的,但在实际项目中,经常是关联表的查询,比如最常见到的多对一,一对多等。这些查询是如何处理的呢,这一讲就讲这个问题。我们首先创建一个Article 这个表,并初始化数据.

程序代码程序代码

Drop TABLE IF EXISTS `article`;

Create TABLE `article` (

`id` int(11) NOT NULL auto_increment,

`userid` int(11) NOT NULL,

`title` varchar(100) NOT NULL,

`content` text NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

-- ----------------------------

-- 添加几条测试数据

-- ----------------------------

Insert INTO `article` VALUES ('1', '1', 'test_title', 'test_content');

Insert INTO `article` VALUES ('2', '1', 'test_title_2', 'test_content_2');

Insert INTO `article` VALUES ('3', '1', 'test_title_3', 'test_content_3');

Insert INTO `article` VALUES ('4', '1', 'test_title_4', 'test_content_4');

你应该发现了,这几个文章对应的userid都是1,所以需要用户表user里面有id=1的数据。

可以修改成满足自己条件的数据.按照orm的规则,表已经创建了,那么肯定需要一个对象与之对应,所以我们增加一个Article 的class

程序代码程序代码

package com.yihaomen.mybatis.model;

public class Article {

private int id;

private User user;

private String title;

private String content;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public User getUser() {

return user;

}

public void setUser(User user) {

https://www.sodocs.net/doc/3e16971306.html,er = user;

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public String getContent() {

return content;

}

public void setContent(String content) {

this.content = content;

}

}

注意一下,文章的用户是怎么定义的,是直接定义的一个User对象。而不是int类型。

多对一的实现

场景:在读取某个用户发表的所有文章。当然还是需要在User.xml 里面配置select 语句, 但重点是这个select 的resultMap 对应什么样的数据呢。这是重点,这里要引入association 看定义如下:

程序代码程序代码

< !-- User 联合文章进行查询方法之一的配置(多对一的方式) -->

< select id="getUserArticles" parameterType="int" resultMap="resultUserArticleList"> select user.id,https://www.sodocs.net/doc/3e16971306.html,erName,https://www.sodocs.net/doc/3e16971306.html,erAddress,article.id aid,article.title,article.content from user,article

where user.id=https://www.sodocs.net/doc/3e16971306.html,erid and user.id=#{id}

这样配置之后,就可以了,将select 语句与resultMap 对应的映射结合起来看,就明白了。用association 来得到关联的用户,这是多对一的情况,因为所有的文章都是同一个用户的。

还有另外一种处理方式,可以复用我们前面已经定义好的resultMap ,前面我们定义过一个resultListUser ,看这第二种方法如何实现:

程序代码程序代码

将association 中对应的映射独立抽取出来,可以达到复用的目的。

好了,现在在Test 类中写测试代码:

程序代码程序代码

public void getUserArticles(int userid){

SqlSession session = sqlSessionFactory.openSession();

try {

IUserOperation userOperation=session.getMapper(IUserOperation.class);

List

articles = userOperation.getUserArticles(userid);

for(Article article:articles){

System.out.println(article.getTitle()+":"+article.getContent()+

":作者是:"+article.getUser().getUserName()+":地址:"+

article.getUser().getUserAddress());

}

} finally {

session.close();

}

}

漏掉了一点,我们一定要在IUserOperation 接口中,加入select 对应的id 名称相同的方法:

public List

getUserArticles(int id);

然后运行就可以测试。

整个程序下载:

下载文件点击下载此文件

除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!

mybatis实战教程(mybatis in action)之五:与spring3集成(附源码)

在这一系列文章中,前面讲到纯粹用mybatis 连接数据库,然后进行增删改查,以及多表联合查询的的例子,但实际项目中,通常会用spring 这个沾合剂来管理datasource 等。充分利用spring 基于接口的编程,以及aop ,ioc 带来的方便。用spring 来管理mybatis 与管理hibernate 有很多类似的地方。今天的重点就是数据源管理以及bean的配置。

你可以下载源码后,对比着看,源代码没有带jar包,太大了,空间有限. 有截图,你可以看到用到哪些jar包,源码在本文最后.

1. 首先对前面的工程结构做一点改变,在src_user源代码目录下建立文件夹config ,并将原来的mybatis 配置文件Configuration.xml 移动到这个文件夹中, 并在config 文家夹中建立spring 配置文件:applicationContext.xml ,这个配置文件里最主要的配置:

程序代码程序代码

< !--本示例采用DBCP连接池,应预先把DBCP的jar包复制到工程的lib目录下。-->

[b]这里面的重点就是org.mybatis.spring.SqlSessionFactoryBean 与org.mybatis.spring.mapper.MapperFactoryBean[b] 实现了spring 的接口,并产生对象。详细可以查看mybatis-spring 代码。(https://www.sodocs.net/doc/3e16971306.html,/p/mybatis/),如果仅仅使用,固定模式,这样配置就好。

然后写测试程序

程序代码程序代码

package com.yihaomen.test;

import java.util.List;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.yihaomen.mybatis.inter.IUserOperation;

import com.yihaomen.mybatis.model.Article;

import https://www.sodocs.net/doc/3e16971306.html,er;

public class MybatisSprintTest {

private static ApplicationContext ctx;

static

{

ctx = new ClassPathXmlApplicationContext("config/applicationContext.xml");

}

public static void main(String[] args)

{

IUserOperation mapper = (IUserOperation)ctx.getBean("userMapper");

//测试id=1的用户查询,根据数据库中的情况,可以改成你自己的.

System.out.println("得到用户id=1的用户信息");

User user = mapper.selectUserByID(1);

System.out.println(user.getUserAddress());

//得到文章列表测试

System.out.println("得到用户id为1的所有文章列表");

List

articles = mapper.getUserArticles(1);

for(Article article:articles){

System.out.println(article.getContent()+"--"+article.getTitle());

}

}

mybatis实战教程(mybatis in action)之六:与Spring MVC 的集成

前面几篇文章已经讲到了mybatis与spring 的集成。但这个时候,所有的工程还不是web 工程,虽然我一直是创建的web 工程。今天将直接用mybatis与Spring mvc 的方式集成起来,源码在本文结尾处下载.主要有以下几个方面的配置

1. web.xml 配置spring dispatchservlet ,比如为:mvc-dispatcher

2. mvc-dispatcher-servlet.xml 文件配置

3. spring applicationContext.XML文件配置(与数据库相关,与mybatis sqlSessionFaction 整合,扫描所有mybatis mapper 文件等.)

4. 编写controller 类

5. 编写页面代码.

[/code]

1. web.xml 配置spring dispatchservlet ,比如为:mvc-dispatcher

程序代码程序代码

contextConfigLocation

classpath*:config/applicationContext.xml

org.springframework.web.context.ContextLoaderListener

org.springframework.web.context.ContextCleanupListener

mvc-dispatcher

org.springframework.web.servlet.DispatcherServlet

1

mvc-dispatcher

/

2. 在web.xml 同目录下配置mvc-dispatcher-servlet.xml 文件,这个文件名前面部分必须与你在web.xml里面配置的DispatcherServlet 的servlet名字对应.其内容为:

程序代码程序代码

xmlns:context="https://www.sodocs.net/doc/3e16971306.html,/schema/context"

xmlns:mvc="https://www.sodocs.net/doc/3e16971306.html,/schema/mvc"

xmlns:xsi="https://www.sodocs.net/doc/3e16971306.html,/2001/XMLSchema-instance"

xsi:schemaLocation="

https://www.sodocs.net/doc/3e16971306.html,/schema/beans

https://www.sodocs.net/doc/3e16971306.html,/schema/beans/spring-beans-3.0.xsd

https://www.sodocs.net/doc/3e16971306.html,/schema/context

https://www.sodocs.net/doc/3e16971306.html,/schema/context/spring-context-3.0.xsd

https://www.sodocs.net/doc/3e16971306.html,/schema/mvc

https://www.sodocs.net/doc/3e16971306.html,/schema/mvc/spring-mvc-3.0.xsd">

class="org.springframework.web.servlet.view.InternalResourceViewResolver">

/WEB-INF/pages/

.jsp

< /beans>

3. 在源码目录config 目录下配置spring 配置文件applicationContext.xml

程序代码程序代码

< !--本示例采用DBCP连接池,应预先把DBCP的jar包复制到工程的lib目录下。-->

destroy-method="close" p:driverClassName="com.mysql.jdbc.Driver"

p:url="jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=utf8"

p:username="root" p:password="password"

p:maxActive="10" p:maxIdle="10">

不知道为什么,一旦我用了MapperScannerConfigurer 去扫描所有的mapper 接口时,数据库配置datasource 就不能用读取database.properties文件了。报错:Cannot load JDBC driver class '${jdbc.driverClassName}',网上有人说在spring 3.1.1 下用sqlSessionFactionBean 注入可以解决,但我用spring 3.1.3 还是有问题,所以只好把数据库连接信息直接配置在了XML 文件里面。

4. 编写controller 层

程序代码程序代码

package com.yihaomen.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.servlet.ModelAndView;

import com.yihaomen.inter.IUserOperation;

import com.yihaomen.model.Article;

@Controller

@RequestMapping("/article")

public class UserController {

@Autowired

IUserOperation userMapper;

@RequestMapping("/list")

public ModelAndView listall(HttpServletRequest request,HttpServletResponse response){ List

articles=userMapper.getUserArticles(1);

ModelAndView mav=new ModelAndView("list");

mav.addObject("articles",articles);

return mav;

}

}

5. 页面文件:

[code]

< c:forEach items="${articles}" var="item">

${item.id }--${item.title }--${item.content }

运行结果:

当然还有mybatis 的Configure.xml 配置文件,与上一讲的差不多,唯一不同的就是不用再配置类似如下的: ,所有这些都交给在配置sqlSessionFactory 的时候,由 去导入了。

源码下载:

下载文件mybatis spring3 MVC 程序下载

数据库下载:

下载文件spring mvc 数据库测试文件

除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!

mybatis实战教程(mybatis in action)之七:实现mybatis分页(源码下载)

上一篇文章里已经讲到了mybatis与spring MVC的集成,并且做了一个列表展示,显示出所有article 列表,但没有用到分页,在实际的项目中,分页是肯定需要的。而且是物理分页,不是内存分页。对于物理分页方案,不同的数据库,有不同的实现方法,对于mysql 来说就是利用limit offset,pagesize 方式来实现的。oracle 是通过rownum 来实现的,如果你熟悉相关数据库的操作,是一样的很好扩展,本文以mysql 为例子来讲述.先看一下效果图(源代码在文章最后提供下载):

实现mybatis 物理分页,一个最简单的方式是,是在你的mapper的SQL语句中直接写类似如下方式:

程序代码程序代码

请注意这里的parameterType 是你传入的参数类,或者map ,里面包含了offset,pagesize ,和其他你需要的参数,用这种方式,肯定可以实现分页。这是简单的一种方式。但更通用的一种方式是用mybatis 插件的方式. 参考了网上的很多资料,mybatis plugin 方面的资料。写自己的插件.

程序代码程序代码

package com.yihaomen.util;

import https://www.sodocs.net/doc/3e16971306.html,ng.reflect.Field;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.List;

import java.util.Map;

import java.util.Properties;

import javax.xml.bind.PropertyException;

import org.apache.ibatis.builder.xml.dynamic.ForEachSqlNode;

import org.apache.ibatis.executor.ErrorContext;

import org.apache.ibatis.executor.Executor;

import org.apache.ibatis.executor.ExecutorException;

import org.apache.ibatis.executor.statement.BaseStatementHandler;

import org.apache.ibatis.executor.statement.RoutingStatementHandler;

import org.apache.ibatis.executor.statement.StatementHandler;

import org.apache.ibatis.mapping.BoundSql;

import org.apache.ibatis.mapping.MappedStatement;

import org.apache.ibatis.mapping.ParameterMapping;

import org.apache.ibatis.mapping.ParameterMode;

import org.apache.ibatis.plugin.Interceptor;

import org.apache.ibatis.plugin.Intercepts;

import org.apache.ibatis.plugin.Invocation;

mybatis面试题

1、Mybatis基础: #{...} 和${...} 的区别 MyBatis将#{…} 解释为JDBC prepared statement 的一个参数标记。而将${…} 解释为字符串替换。理解这两者的区别是很有用的, 因为在某些SQL语句中并不能使用参数标记(parameter markers)。 比如,我们不能在表名(table name)的位置使用参数标记。 假设有下面的代码: 01.Mapparms = new HashMap(); 02.parms.put("table", "foo"); // 表名 03.parms.put("criteria", 37); // 查询过滤条件 04.List rows = mapper.generalSelect(parms); 01. MyBatis生成的SQL语句(prepared statement)如下所示: 01.select * from foo where col1 = ? 重要提示: 请注意,使用$ {…} (字符串替换)时可能会有SQL注入攻击的风险。另外,字符串替换在处理复杂类型也可能常常发生问题,如日期类型。由于这些因素,我们建议您尽可能地使用#{…} 这种方式。 要使用LIKE语句该怎么写? 2、有两种使用LIKE的方法。(推荐使用)第一种方法是,在Java代码中添加SQL通配符。 示例一: 01.StringwildcardName = "%Smi%"; 02.List names = mapper.selectLike(wildcardName); 01.

企业级JAVA高级开发技术实战

关于举办企业级JAVA高级开发技术实战 培训班的通知 一、培训收益 通过此次课程培训,可使学习者获得如下收益: 1.掌握JavaSE的异常处理方法; 2.掌握多线程基础知识; 3.掌握IO系统、网络编程、Java反射机制、JVM性能调优; 4.理解JavaEE,EJB、JMS,Java语言的高级特征; 5.了解GoF的设计模式、Spring AOP、WebService与CXF。 二、培训特色 1.理论与实践相结合、案例分析与行业应用穿插进行; 2.专家精彩内容解析、学员专题讨论、分组研究; 3.通过全面知识理解、专题技能和实践结合的授课方式。

四、授课专家 刘老师有15年JAVA开发经验,9年授课经验. 精通J2EE多层架构和多种设计模式,熟悉Struts、MyBatis、Hibernate、Spring、Spring MVC、Android、H5、Jquery Mobile、AngularJS、Bootstrap等多种开源框架, 对源码有一定的理解. 熟悉 WebLogic, JBoss 容器并发集群的使用, 熟悉WebService、CXF、RESFul、UML、SVN、EasyUI、Flex、Lucene 等技术。长期专注于J2EE系统的分析与设计,亲身参与多个J2EE项目研发和应用系统升级,并主导系统架构设计,有着丰富的系统分析设计工作经验 张老师天津大学软件工程硕士,10多年的IT领域相关技术研究和项目开发工作,在长期软件领域工作过程中,对软件企业运作模式有深入研究,熟悉软件质量保障标准ISO9003和软件过程改进模型CMM/CMMI,在具体项目实施过程中总结经验,有深刻认识。通晓多种软件设计和开发工具。对软件开发整个流程非常熟悉,能根据项目特点定制具体软件过程,并进行项目管理和监控,有很强的软件项目组织管理能力。对C/C++ 、HTML 5、Hadoop、java、java EE、android、IOS、大数据、云计算有比较深入的理解和应用,具有较强的移动互联网应用需求分析和系统设计能力,熟悉Android框架、IOS框架等技术,了解各种设计模式,能在具体项目中灵活运用。 龚老师企业级J2EE专家,博士,北京理工大学软件研究所计算机应用技术专业。在软件行业工作近二十年,近50多个大中型项目的主持、管理、开发经验。主要学术成果: 近年来先后在国内外重要刊物发表论文20多篇,多篇被EI收录,出版著作4部。参与完成自然科学基金项目2项,参与纵向课题5项,主持横向科研项目5项。

mybatis中文版教程

MyBatis Spring1.0.0-RC3 参考文档 MyBatis 社区(https://www.sodocs.net/doc/3e16971306.html,) Copyright ? 2010 本文档的拷贝仅允许您个人使用或分发给其他用户,但是不能收取任何费用,后期的发布无论是印刷版或电子版,也会进行版权声明。 本文档由南磊(nanlei1987@https://www.sodocs.net/doc/3e16971306.html,)翻译

目录 第一章介绍 (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上下文环境的样板和冗余代码。它还透明地增加了Spring 对MyBatis事务的支持。 1.2 要求 在开始阅读本手册之前,很重要的一点是你要熟悉Spring和MyBatis这两个框架还有和它们有关的术语,本手册不会提供二者的背景内容,基本安装和配置教程。 和MyBatis一样,MyBatis-Spring也需要Java 5或更高版本。 1.3 感谢 非常感谢那些使得本项目成为现实的人们(按字母顺序排序)。Eduardo Macarron,Hunter Presnall和Putthibong Boonbong的编码工作,测试和文档修改;Andrius Juozapaitis,Giovanni Cuccu,Raj Nagappan和Tomas Pinos的贡献;而Simone Tripodi发现了这些人并把他们带入项目之中。没有他们的努力,这个项目是不可能存在的。

mybatis教程从入门到精通

mybatis教程从入门到精通 什么是mybatis MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点: 1. 从配置文件(通常是XML配置文件中)得到sessionfactory. 2. 由sessionfactory 产生session 3. 在session 中完成对数据的增删改查和事务提交等. 4. 在用完之后关闭session 。 5. 在java 对象和数据库之间有做mapping 的配置文件,也通常是xml 文件。 mybatis实战教程(mybatis in action)之一:开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包。这些软件工具均可以到各自的官方网站上下载。 首先建立一个名字为MyBaits 的dynamic web project 1. 现阶段,你可以直接建立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目录下建立此文件,内容如下:

MyBatis学习 之三动态SQL语句

MyBatis学习之三动态SQL语句 三、动态SQL语句 MyBatis学习之一、MyBatis简介与配置MyBatis+Spring+MySql MyBatis学习之二、SQL语句映射文件(1)resultMap MyBatis学习之二、SQL语句映射文件(2)增删改查、参数、缓存 MyBatis学习之三、动态SQL语句 MyBatis学习之四、MyBatis配置文件 有些时候,sql语句where条件中,需要一些安全判断,例如按某一条件查询时如果传入的参数是空,此时查询出的结果很可能是空的,也许我们需要参数为空时,是查出全部的信息。使用Oracle的序列、mysql的函数生成Id。这时我们可以使用动态sql。 下文均采用mysql语法和函数(例如字符串链接函数CONCAT)。 3.1 selectKey 标签 在insert语句中,在Oracle经常使用序列、在MySQL中使用函数来自动生成插入表的主键,而且需要方法能返回这个生成主键。使用myBatis的selectKey标签可以实现这个效果。 下面例子,使用mysql数据库自定义函数nextval('student'),用来生成一个key,并把他设置到传入的实体类中的studentId属性上。所以在执行完此方法后,边可以通过这个实体类获取生成的key。 select nextval('student') INSERT INTO STUDENT_TBL(STUDENT_ID, STUDENT_NAME, STUDENT_SEX, STUDENT_BIRTHDAY, STUDENT_PHOTO, CLASS_ID, PLACE_ID) V ALUES (#{studentId}, #{studentName}, #{studentSex}, #{studentBirthday}, #{studentPhoto, javaType=byte[], jdbcType=BLOB, typeHandler=org.apache.ibatis.type.BlobTypeHandler}, #{classId}, #{placeId}) 调用接口方法,和获取自动生成key StudentEntity entity = new StudentEntity(); entity.setStudentName("黎明你好"); entity.setStudentSex(1); entity.setStudentBirthday(DateUtil.parse("1985-05-28")); entity.setClassId("20000001"); entity.setPlaceId("70000001"); this.dynamicSqlMapper.createStudentAutoKey(entity); System.out.println("新增学生ID: " + entity.getStudentId()); selectKey语句属性配置细节: 属性描述取值keyProper ty selectKey 语句生成结果需要设置的属性。 resultTyp e 生成结果类型,MyBatis 允许使用基本的数据类型,包括String 、int 类型。 order 1:BEFORE,会先选择主键,然后设置keyProperty,再执行insert 语句; 2:AFTER,就先运行insert 语句再运行selectKey 语句。 BEFORE AFTER

mybatis-3-mapper

>

黑马程序员mybatis教程第二天:延迟加载

延迟加载 什么是延迟加载 resultMap可以实现高级映射(使用association、collection实现一对一及一对多映射),association、collection具备延迟加载功能。 需求: 如果查询订单并且关联查询用户信息。如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息。把对用户信息的按需去查询就是延迟加载。 延迟加载:先从单表查询、需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张表速度要快。 使用association实现延迟加载 需求 查询订单并且关联查询用户信息 mapper.xml 需要定义两个mapper的方法对应的statement。 1、只查询订单信息 SELECT * FROM orders 在查询订单的statement中使用association去延迟加载(执行)下边的satatement(关联查询用户信息) 2、关联查询用户信息 通过上边查询到的订单信息中user_id去关联查询用户信息

使用UserMapper.xml中的findUserById 上边先去执行findOrdersUserLazyLoading,当需要去查询用户的时候再去执行findUserById,通过resultMap的定义将延迟加载执行配置起来。 延迟加载resultMap 使用association中的select指定延迟加载去执行的statement的id。

MyBatis基础知识

1、#{}和${}的区别是什么? #{}是预编译处理,${}是字符串替换。 #{}是sql的参数占位符,Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值; ${}是Properties文件中的变量占位符,Mybatis在处理${}时,就是把${}替换成变量的值。使用#{}可以有效的防止SQL注入,提高系统安全性。 2、MyBatis是如何进行分页的? Mybatis使用RowBounds对象进行分页,它是针对ResultSet结果集执行的内存分页,而非物理分页,可以在sql内直接书写带有物理分页的参数来完成物理分页功能,也可以使用分页插件来完成物理分页。 分页插件的基本原理是使用Mybatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql,根据dialect方言,添加对应的物理分页语句和物理分页参数。 举例:select * from student,拦截sql后重写为:select t.* from (select * from student)t limit 0,10 3、在mapper中如何传递多个参数? 第一种:使用#{0},#{1}... mapper层: public selectUser(String username, String password); mapper.xml层: //对应的xml,#{0}代表接收的是dao层中的第一个参数,#{1}代表dao层中第二参数,更多参数一致往后加即可。 第二种:使用@param注解: mapper层: public selectUser(@param("username")String username,@param("password")String password); mapper.xml层: 4、Mybatis都有哪些Executor执行器?它们之间的区别是什么? Mybatis有三种基本的Executor执行器,SimpleExecutor、ReuseExecutor、BatchExecutor。 SimpleExecutor:每执行一次update或select,就开启一个Statement对象,用完立刻关闭Statement对象。

Mybatis3.1实战

Mybatis3.1实战 1、前言 (2) 2、什么是mybatis (2) 3、Mybatis入门实例 (2) 4、Mybatis中的增、删、改、查 (8) 5、Mybatis新特性介绍 (10) 6、mybatis-config.xml中的元素介绍 (11) 7、xml映射文件及用法 (18) 8、Mybatis参数传递 (20) 9、基于注解的sql语句 (21) 10、动态sql语句 (22) 11、mybatis中的一对多、一对一、多对多 (24) 12、自定义类型处理器 (28) 13、Spring3.1+springmvc+mybatis3.1集成 (31) 备注 (40) Like模糊查询 (40) 排序 (40) if元素中的条件语句 (40)

1、前言 随着开发团队转投Google Code旗下,ibatis3.x正式更名为Mybatis。相信很多朋友以前看过ibatis2.x,对ibatis2.x也比较熟悉,随着技术的发展,我们必须跟得上技术发展的步伐,不能永远停留在原来的技术上而不做进一步学习。由于在我的一个新项目中采用了mybatis,为此我发了几天来学习了mybatis,相对hibernate来说,本人感觉mybatis相对来说更加简单,特别是熟悉sql 语句的朋友们,你在采用mybatis时,你会觉得跟传统的jdbc方式来操作数据库没什么差别,只是mybatis帮你做了很多原来你在用jdbc来实现时的很多工作。我们来看看mybatis包含了哪些新特性。 Mybatis实现了接口绑定,使用更加方便 对象关系映射的改进,效率更高 MyBatis采用功能强大的基于OGNL的表达式来消除其他元素。 在本学习教程中,全方位介绍了mybatis中的各种特性,里面的实例都是采用比较简单的实例来实现,对于有些没有介绍到的特性,大家可以参考官方文档。本教程采用的是mybatis最新的版本mybatis3.1,并结合了maven来写这个教程,所以大家需要对maven有所了解。 2、什么是mybatis MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs (Plan Old Java Objects,普通的Java对象)映射成数据库中的记录。 3、Mybatis入门实例 在maven中加入mybatis、mysql、junit的依赖包: junit junit 4.10 test org.mybatis mybatis 3.1.1

SpringMVC+Spring+Mybatis框架配置详细步骤(eclipse普通版)

SSI框架搭建 SpringMVC3.1.2+Spring3.1.2+Mybatis3.2.6 编号:SSI-SMVC3-S3-I3 版本:V1.0 级别:公开 编写时间:2016-02-17

目录 1导言 (1) 1.1目的 (1) 1.2范围 (1) 1.3说明 (1) 2搭建SpringMVC (2) 2.1搭建所需jar包 (2) 2.2其他依赖包 (3) 2.3搭建步骤 (4) 2.3.1创建项目 (4) 2.3.2导入jar包 (6) 2.3.3配置web.xml (7) 2.3.4配置spring-servlet.xml (9) 2.3.5配置applicationContext.xml (10) 2.3.6配置log4j.properties (10) 3整合mybatis (10) 3.1整合所需jar包 (10) 3.2其他依赖包 (11) 3.3整合步骤 (11) 3.3.1导入jar包 (11) 3.3.2配置config.properties (11) 3.3.3配置spring-dataSource.xml (12) 3.3.4 配置applicationContext.xml (15) 3.3.5配置mybatis-config.xml (16) 3.3.6创建实体model (17) 3.3.7创建实例化dao (19) 3.3.8 创建业务服务service (21) 3.3.9创建控制层controller (23)

3.3.10页面代码 (28) 3.3.11启动项目 (37)

1导言 1.1 目的 本文档是根据个人的工作经验搭建的轻量级SSI框架,也是实际应用中比较全面的基础框架,用于指导SSI框架初学者学习搭建SSI框架,希望能给各位使用者提供帮助,同时也希望朋友们尽量去帮助其他人。 1.2 范围 本次框架搭建的版本是SpringMVC3.1.2+Spring3.1.2+Mybatis3.2.6,数据库采用的是mysql,在eclipse开发工具下搭建直接搭建的web项目,页面采用的是h5,ajax实现数据访问,如果页面为jsp等,则修改controller的返回类型即可。 1.3 说明 本文档是个人总结的经验,仅供参考学习,同时欢迎朋友们一起沟通学习,文档中会对使用的jar做详细解说,对配置的过程使用图文说明,因为SSI博大精深,很多知识在搭建过程中没有使用到,只是一个基础框架的搭建,能测试通过就可以,所以对于高要求的开发,需要自己添加jar、增加方法和配置,同时文档中出现的纰漏希望朋友们等指正。 开发环境eclipse-jee-indigo-SR1-win32-dic,Tomcat7.0,JDK1.7,mysql。

mybatis实战教程之四:实现关联数据的查询

mybatis实战教程(mybatis in action)之四:实现关联数据的查询 有了前面几章的基础,对一些简单的应用是可以处理的,但在实际项目中,经常是关联表的查询,比如最常见到的多对一,一对多等。这些查询是如何处理的呢,这一讲就讲这个问题。我们首先创建一个Article 这个表,并初始化数据. 程序代码 Drop TABLE IF EXISTS `article`; Create TABLE `article` ( `id` int(11) NOT NULL auto_increment, `userid` int(11) NOT NULL, `title` varchar(100) NOT NULL, `content` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; -- ---------------------------- -- 添加几条测试数据 -- ---------------------------- Insert INTO `article` VALUES ('1', '1', 'test_title', 'test_content'); Insert INTO `article` VALUES ('2', '1', 'test_title_2', 'test_content_2'); Insert INTO `article` VALUES ('3', '1', 'test_title_3', 'test_content_3'); Insert INTO `article` VALUES ('4', '1', 'test_title_4', 'test_content_4'); 你应该发现了,这几个文章对应的userid都是1,所以需要用户表user里面有id=1的数据。可以修改成满足自己条件的数据.按照orm的规则,表已经创建了,那么肯定需要一个对象与之对应,所以我们增加一个Article 的class 程序代码 package com.yihaomen.mybatis.model;

SSM基础框架搭建(SpringMVC+Spring+Mybatis)

SSM基础框架搭建(SpringMVC+Spring+Mybatis) SSM框架简述 到现在用了SSM框架也有一段时间了,对于基础的使用已经基本习惯,这段时间也多多少少搭了很多遍基础框架,当然每一次的搭建都会比原先搭建的东西更多些,也会更加完善,我相信大家也会从搭建的过程中成长去学到很多东西,SSM框架网上也有很多教程,不过我相信每个编写以及阅读的人总会从相似的文章中学到不同的东西. SSM框架基础概念 Spring 这里不得不说Spring非常强大,Spring拥有这IOC(控制反转,依赖注入)和AOP(面向切面编程)这两个强大的功能,这两个功能使框架足够的解耦,通过工厂模式和bean的配置完成对象的注入并且由bean生成的对象是单例的 SpringMVC SpringMVC分离了控制器,验证器,Servlet分发器,模型对象等 Mybatis Mybatis解除了程序与代码的耦合度,在一定程度上简化了sql的管理,只需要在XML中进行相应SQL的编写即可,Mybatis提供了相应的映射,配置起来更加容易 SSM基础框架搭建 这里就直接介绍SSM框架如何搭建了,至于环境配置和MAVEN项目的创建可以参考我的博客,也可以参考环境搭建,MAVEN项目搭建,下面开始搭建的教程,可能是对于上文链接博客的整合的完善与一些细微错误的纠正吧。 引入相关的JRA包 4.0.2.RELEASE 3.2.6 1.7.7 1.2.17 junit junit 4.11

Mybatis-3.3.0官方文档-中文.pdf

来获取。

Copyright ? 2010–2015 https://www.sodocs.net/doc/3e16971306.html,. All rights reserved.

XML 配置文件(configuration XML)中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务范围和控制方式的事务管理器(TransactionManager)。XML 配置文件的详细内容后面再探讨,这里先给出一个简单的示例: 当然,还有很多可以在XML 文件中进行配置,上面的示例指出的则是最关键的部分。要注意 XML 头部的声明,用来验证 XML 文档正确性。environment 元素体中包含了事务管理和连接池的配置。mappers 元素则是包含一组 mapper 映射器(这些 mapper 的XML 文件包含了 SQL 代码和映射定义信息)。 不使用 XML 构建 SqlSessionFactory 如果你更愿意直接从 Java 程序而不是 XML 文件中创建 configuration,或者创建你自己的 configuration 构建器,MyBatis 也提供了完整的配置类,提供所有和 XML 文件相同功能的配置项。

注意该例中,configuration 添加了一个映射器类(mapper class)。映射器类是 Java 类,它们包含 SQL 映射语句的注解从而避免了 XML 文件的依赖。不过,由于 Java 注解的一些限制加之某些 MyBatis 映射的复杂性,XML 映射对于大多数高级映射(比如:嵌套Join 映射)来说仍然是必须的。有鉴于此,如果存在一个对等的 XML 配置文件的话,MyBatis 会自动查找并加载它(这种情况下,BlogMapper.xml 将会基于类路径和 BlogMapper.class 的类名被加载进来)。具体细节稍后讨论。 从 SqlSessionFactory 中获取 SqlSession 既然有了 SqlSessionFactory ,顾名思义,我们就可以从中获得 SqlSession 的实例了。SqlSession 完全包含了面向数据库执行SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。例如: 诚然这种方式能够正常工作,并且对于使用旧版本 MyBatis 的用户来说也比较熟悉,不过现在有了一种更直白的方式。使用对于给定语句能够合理描述参数和返回值的接口(比如说BlogMapper.class),你现在不但可以执行更清晰和类型安全的代码,而且还不用担心易错的字符串字面值以及强制类型转换。 例如: 现在我们来探究一下这里到底是怎么执行的。

javaweb开发要学习的所有技术和框架总结:

学习javaweb开发要学习的技术和框架总结: 前言:当初想学习javaweb开发的时候,希望能够全方面地学习(这样找工作时就胸有成足了)。但是对这个根本不理解,又不认识从事这方面的熟人,所以学习起来无从下手。经过了一年的‘死’学习,从网上,从书本,从视频里面深入了解了java。想从事java的朋友,只要把这些技术全学会了,哪就业肯定没有问题了。 前端技术: HTML, CSS, JA V ASCRIPT, JQUERY, AJAX HTML “超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。 超文本标记语言的结构包括“头”部分(外语:Head)、和“主体”部分(外语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。 CSS 级联样式表是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。 JavaScript JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。 jQuery jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多)。jQuery在2006年1月由美国人John Resig在纽约的barcamp发布,吸引了来自世界各地的众多JavaScript高手加入,由Dave Methvin率领团队进行开发。如今,jQuery已经成为最流行的javascript库,在世界前10000个访问最多的网站中,有超过55%在使用jQuery。

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

mybatis 第一天mybatis的基础知识 课程安排: 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逆向工程 1对原生态jdbc程序中问题总结 1.1环境 java环境:jdk1.7.0_72 eclipse:indigo mysql:5.1 1.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代码进行重新编译。 3、向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。设想:将sql语句及占位符号和参数全部配置在xml中。

JavaEE测试题带答案教学提纲

1.在Java中的变量命名规范中,下面命名正确两项的是( ) (选择两项) a)¥money b)$int c)int d)*i 2.绘制流程图时,下面()代表判断和分支。(选择一项) a)矩形 b)椭圆 c)菱形 d)圆形 3.在Java环境中给出如下代码,编译运行的输出结果是()。 public class Test{ intx=1; inty=2; public int cal(intx,inty){ int z=x+y; return z; } public static void main(String args[]){ Test d = newTest(); z=d.cal(d.x,d.y); System.out.println(z); } }(选择一项) A) 3 B) 0

C) 编译错误 D) 编译通过,但运行时出错 4.下列选项中关于枚举说法错误的是()。(选择一项) a)枚举类型是从JavaSE5.0开始引入的一种新类型 b)枚举类型使用关键字enum定义 c)枚举是指由一组固定的常量组成的类型 d)在枚举中,除了可以定义枚举常量以外不能出现其他成员 5. 在Java中,以下关于多态说法错误的是()。(选择一项) a)实现多态的一个前提是要有继承关系 b)将一个父类的引用指向一个子类对象,要进行强制类型转换 c)父类引用变量指向其子类对象是实现多态的一个条件 d)使用多态可以提高代码的可扩展性和可维护性 6. 在Java中,如下代码段的输出结果为()。 Strings="hello"; s.substring(2,4); System.out.println(s.length());(选择一项) a) 5 b) 2 c) 4 d) 3 7. 在Java中,如下代码的输出结果是()。 public static void main(String[]args){ char c[]={'1','2','3','4'};