什么是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 。
1. 在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 测试数据库和用户表,注意
CREATE TABLE `user` ( `id` int(4) unsigned NOT NULL AUTO_INCREMENT, `username` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `password` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, UNIQUE KEY `id` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf-8
下面开始1、设置mybatis 配置文件:Configuration.xml, 在src目录下建立此文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <typeAliases> <typeAlias alias="User" type="com.handly.mybatis.model.User"/> </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/mis4_produce" /> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/handly/mybatis/model/User.xml"/> </mappers> </configuration>
2、建立与数据库对应的 java class,以及映射文件. 在src下建立package:com.handly.mybatis.model ,并在这个 package 下建立 User 类:
package com.handly.mybatis.model; public class User { private Integer id; private String username; private String password; private String name; //省略get/set方法 }
同时建立这个User 的映射文件 User.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- mapper namespace="com.handly.mybatis.models.UserMapper"> dao.UserDao--> <mapper namespace="com.handly.mybatis.dao.UserDao"> <select id="selectUserByID" parameterType="int" resultType="User"> select * from `user` where id = #{id} </select> </mapper>
下面对这几个配置文件解释下:
1.Configuration.xml 是 mybatis 用来建立 sessionFactory 用的,里面主要包含了数据库连接相关东西,还有 java 类所对应的别名,比如 这个别名非常重要,你在 具体的类的映射中,比如User.xml 中 resultType 就是对应这里的。要保持一致,当然这里的 resultType 还有另外单独的定义方式,后面再说。
2. Configuration.xml 里面 的是包含要映射的类的xml配置文件。
3. 在User.xml 文件里面 主要是定义各种SQL 语句,以及这些语句的参数,以及要返回的类型等.
开始测试 在test 源码目录下建立test.user这个package,并建立测试类TestUser:
package test.user; import java.io.Reader; import java.util.List; 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 org.junit.Test; import com.handly.mybatis.model.User; public class TestUser { 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; } @Test public void test() { SqlSession session = sqlSessionFactory.openSession(); try { User user = (User) session.selectOne("com.handly.mybatis.models.UserMapper.selectUserByID", 1); System.out.println(user.getUsername()); System.out.println(user.getDate()); } finally { session.close(); } } }
现在运行这个程序,是不是得到查询结果了。恭喜你,环境搭建配置成功,接下来第二章,将讲述基于接口的操作方式,增删改查。
mybatis实战教程(mybatis in action)之二:以接口的方式编程
前面一章,已经搭建好了eclipse,mybatis,mysql的环境,并且实现了一个简单的查询。请注意,这种方式是用SqlSession实例来直接执行已映射的SQL语句: session.selectOne("com.handly.mybatis.models.UserMapper.selectUserByID", 1)
其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如UserDao.class),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细过程:
package com.handly.mybatis.dao; import com.handly.mybatis.model.User; public interface UserDao { public User selectUserByID(int id); }
请注意:
1、这里面有一个方法名 selectUserByID 必须与 User.xml 里面配置的 select 的id 对应
2、User.xml中namespace,将com.handly.mybatis.models.UserMapper替换为:com.handly.mybatis.dao.UserDao
重写测试代码
/** * 根据ID获取用户 */ @Test public void testGetById(){ SqlSession session = sqlSessionFactory.openSession(); try { UserDao userDao = session.getMapper(UserDao.class); User user = userDao.selectUserByID(1); System.out.println(user.getUsername()); System.out.println(user.getDate()); } finally { session.close(); } }
运行这个测试程序,就可以看到结果了。
mybatis实战教程(mybatis in action)之三:实现数据的增删改查
前 面已经讲到用接口的方式编程。这种方式,要注意的一个地方就是。在User.xml 的配置文件中,mapper namespace="com.yihaomen.mybatis.inter.IUserOperation" ,命名空间非常重要,不能有错,必须与我们定义的package 和 接口一致。如果不一致就会出错,这一章主要在上一讲基于接口编程的基础上完成如下事情:
1. 用 mybatis 查询数据,包括列表
2. 用 mybatis 增加数据
3. 用 mybatis 更新数据.
4. 用 mybatis 删除数据.
查询数据,前面已经讲过简单的,主要看查询出列表的 查询出列表,也就是返回list, 在我们这个例子中也就是 List , 这种方式返回数据,需要在User.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置的
查询列表的语句在 User.xml 中
<!-- 返回list 的select 语句,注意 resultMap 的值是指向前面定义好的 --> <select id="selectUsers" parameterType="string" resultMap="resultListUser"> select * from user where username like #{userName} </select>
在 UserDao接口中增加方法:public List selectUsers(String userName); 现在在 Test 类中做测试
/** * 根据用户登录名模糊搜索 */ @Test public void testGetByUserName(){ SqlSession session = sqlSessionFactory.openSession(); try { UserDao userDao = session.getMapper(UserDao.class); List list = userDao.selectUsers("admin"); if(null!=list && list.size()>0){ for(User user: list){ System.out.println(user.getUsername()); System.out.println(user.getDate()); } }else{ System.out.println("list is null;"); } } finally { session.close(); } }
用mybatis 增加数据 在 UserDao接口中增加方法:public void addUser(User user); 在 User.xml 中配置
<insert id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id"> insert into user(username,password,name,date,guoji,quhao,sex,mail,shouji) values(#{username},#{password},#{name},#{date},#{guoji},#{quhao},#{sex},#{mail},#{shouji}) </insert>
然后在 Test 中写测试方法:
/** * 添加用户 */ @Test public void testAddUser(){ SqlSession session = sqlSessionFactory.openSession(); try { UserDao userDao = session.getMapper(UserDao.class); User user=new User(); user.setUsername("wwww"); user.setPassword("111222333"); user.setName("老汤"); userDao.addUser(user); session.commit(); System.out.println("当前增加的用户 id为:"+user.getId()); } finally { session.close(); } }
用mybatis 更新数据 方法类似,先在 UserDao中增加方法:public void addUser(User user); 然后配置 User.xml
<update id="updateUser" parameterType="User" > update user set password=#{password},name=#{name} where id=#{id} </update>
Test 类总的测试方法如下:
/** * 更新用户 */ @Test public void testUpdateUser(){ SqlSession session = sqlSessionFactory.openSession(); try { UserDao userDao = session.getMapper(UserDao.class); User user=new User(); user.setId(1); user.setUsername("ccccc"); user.setPassword("444555666"); user.setName("汤小米"); userDao.updateUser(user); session.commit(); System.out.println("当前增加的用户 id为:"+user.getId()); } finally { session.close(); } }
用mybatis 删除数据 同理,UserDao增加方法:public void deleteUser(int id); 配置User.xml
<delete id="deleteUser" parameterType="int"> delete from user where id=#{id} </delete>
然后在Test类中写测试方法:
/** * 删除用户 */ @Test public void testDelUser(){ SqlSession session = sqlSessionFactory.openSession(); try { UserDao userDao = session.getMapper(UserDao.class); userDao.deleteUser(41); session.commit(); } finally { session.close(); } }
相关推荐
mybatis实战教程(mybatis in action)之一:开发环境搭建 .................................................. 3 mybatis实战教程(mybatis in action)之二:以接口的方式编程 ........................................
mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis in action之四实现...
Manning.iBATIS.in.Action.Jan.2007.eBook-BBL.pdf MyBatis 3 User Guide Simplified Chinese.pdf MyBatis-3.0.3-Migrations.pdf MyBatis-3.0.3-User-Guide.pdf MyBatis-3-Migrations.doc MyBatis-3-Migrations.pdf ...
mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis in action之四实现...
生成已tk.mybatis封装的mybatis代码
Mybatis-Generator 为我们生成的代码非常的复杂,所以我们自己写了mybatis_tools来生成我们的mapper pojo dao service 和action。 现在开源出来给大家使用,如果您想使用此源码来生成自己的代码,但是又弄不懂怎么用...
jeecg-mybatis-framework,采用SpringMVC+Mybatis等主流框架,为jeecg的参考学习版本,参考YIYA网站,仅供大家学习和技术交流。代码生成器:支持单表模型,根据表生成对应的Bean,Service,Dao,Action,XML,JSP等,增删改查...
mybatis_tools为我们生成的代码非常的复杂,所以我们自己写了mybatis_tools来生成我们的mapper pojo dao service 和action。
struts_spring_mybatis登录小例子,自己写的,好用,就是框架之间的用法。建立个表就行。tomcat 6.0 jdk6.0 ecplise
struts2+Spring3.0+Mybatis组合框架开发,可以正常的运行,其中使用spring注解方式管理action
<li><a class="icon" href="hj02Action!rpt_pdf" target="dwzExport" targetType="dialog" title="开始打印?" width="800" height="600" >打印pdf(old) </a></li> <li><a class="icon" href="hj02...
使用Java平台,采用SpringMVC+Mybatis等主流框架 数据库:使用免费MYSQL 前端:使用Jquery和Easyui技术.界面清晰简洁,易操作 权限:对菜单,按钮控制.仅展示有权限的菜单和按钮. 拦截:对所有无权限URL进行拦截,防止...
手把手教你整合最优雅SSM框架:SpringMVC + Spring + MyBatis 博客地址:http://blog.csdn.net/qq598535550/article/details/51703190 我们看招聘信息的时候,经常会看到这一点,需要具备SSH框架的技能;而且在大...
用在持久层,还可以再增加或者修改的时候,从页面直接传入action中
该demo是一个Spring4.1.3+SpringMVC+Mybatis整合而成的demo(使用sqlSessionFactory和MapperScannerConfigurer自动扫描*Mapper....为了方便,没有使用jsp提交action到后台,而是通过自定义监听类测试能否读写数据库。
mybatis+spring+springtest 求ActionBean的ut测试
struts2 spring3 mybatis mysql 整合,实现简单登录。 资源中包含使用的jar包,导入工程可调试 http://localhost:8080/SSM/user/gotoLogin.action
访问路径:http://localhost:8080/ssm-manager-controller/getUsers.action 或者:http://localhost:8080/ssm-manager-controller/xxxTest.action 数据库的,可以根据文章直接创建 ssm-parent实现了所有外部依赖包...
使用Java平台,采用SpringMVC+Mybatis等主流框架 数据库:使用免费MYSQL 前端:使用Jquery和Easyui技术.界面清晰简洁,易操作 权限:对菜单,按钮控制.仅展示有权限的菜单和按钮. 拦截:对所有无权限URL进行拦截,防止...
基于Spring+SpringMVC+MyBatis SSM框架的简易新闻系统前后台源码及sql文件,可用于学习参考。导入eclipse发布后即可。前端使用bootstrap。 前台地址:http://localhost:8080/News/news/news_index.action 后台地址...