mybatis 框架简单实例
来源:互联网 发布:微信收费群设置 知乎 编辑:程序博客网 时间:2024/05/01 13:23
2.2. 创建实体类
3. 定义数据访问接口
4.创建MyBatis映射文件(UserDaoMapper.xml)
5. 创建mybatis配置文件
6. 编写测试代码
package com.mybatis.config;import java.io.Reader;import java.util.Iterator;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;public class UserDaoTest { @Test public void userDaoTest() throws Exception { String resource = "MyBatis-Configuration.xml"; Reader reader = Resources.getResourceAsReader(resource); SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(reader); SqlSession session = factory.openSession(); UserDao userDao = session.getMapper(UserDao.class); User user = new User(); user.setUserName("hongye"); user.setPassword("123456"); user.setComment("备注"); userDao.insert(user); System.out.println("记录条数:"+userDao.countAll()); List<User> users = userDao.selectAll(); Iterator<User> iter = users.iterator(); while(iter.hasNext()){ User u = iter.next(); System.out.println("用户名:"+u.getUserName()+"密码:"+u.getPassword()); } user.setComment("comment"); userDao.update(user); User u = userDao.findByUserName("hongye"); System.out.println(u.getComment()); userDao.delete("hongye"); System.out.println("记录条数:"+userDao.countAll()); session.commit(); session.close(); }}
7. parameterType、parameterMap、resultType、resultMap以及resultMap
(1)、resultMap这个标签是数据库和javabean的映射关系的定义,和其他四个联系不大,下面看看在mybatis映射文件中的定义
<resultMap id="result" type="com.base.service.provider.jd.dto.JdOrderInfoDto"> <id property="id" column="id" javaType="java.lang.String" jdbcType="VARCHAR"/> <result property="bzOrderId" column="bzOrderId" javaType="java.lang.String" jdbcType="VARCHAR"/> <result property="success" column="success" javaType="int" jdbcType="INTEGER"/> <result property="jdOrderId" column="jdOrderId" javaType="java.lang.String" jdbcType="VARCHAR"/> <result property="name" column="name" javaType="java.lang.String" jdbcType="VARCHAR"/> <result property="mobile" column="mobile" javaType="java.lang.String" jdbcType="VARCHAR"/> <result property="orderTime" column="orderTime" javaType="java.util.Date" jdbcType="DATE"/> </resultMap>
标签中的type的值就是具体一个javabean的类完整路径,而其内的id 标签 以及result 中就是对javabean 和数据库中的数据的对应关系,javaType、jdbcType可写可不写。(2)、parameterMap这个也是传参数用的但是这个已经过时,不使用了所以这里也就不管了。
(3)、parameterType这个是传参数的类型的设置,这个变量的值可以设置为java的基本类型也可以是自定义的javabean
<insert id="saveJdOrderInfo" parameterType="com.base.service.provider.jd.dto.JdOrderInfoDto"> insert into jdorderinfo(id,bzOrderId,success,jdOrderId,name,mobile,orderTime) values(#{id},#{bzOrderId},#{success},#{jdOrderId},#{name},#{mobile},#{orderTime}) </insert>
这插入语句中的parameterType传的值就是自定义的一个javabean,他的值是javabean的这个类的全路径。下面这个是传入java已有类型的
<insert id="accessToken" parameterType="java.util.Map"> insert into mytest(id,name,sex) values(#{id},#{name},#{sex}) </insert>从中我们能看到传入的是一个map集合,但要注意这个map中的key要和values中的取值的变量的名称一致。
(4)、resultType这个变量定义了我们查询返回的数据的类型,他的值只能是java中已有的类型如Map,而且mybatis比较牛逼的就是把查询结果组装为java的Map集合,resultType和resultMap不能同时使用,只能使用其中一个。下面看看resultType="java.util.Map"的类型。
<!-- 查询返回的是 list<map> --> <!-- resultType 就是返回查询结果的类型,而如果是resultMap=则返回的就是你定义的javabean --> <select id="selectAccessToken" parameterType="int" resultType="java.util.Map"> select id ,name,sex from mytest where id=#{id} </select>
这条sql语句查询后会将结果查询结果封装到Map集合中,key就是id,name,sex而value就是这边属性对应的值。(5)、resultMap这个变量的值就是我们自己定的resultMap也就是(1)、中说的那个标签的值的引用,如果你要返回值为你自定义类型,resultMap的值就是我们(1)中定义的这个标签的id
<!--查询返回自定义类型,resultMap的值为自定义的resultMap标签的id --><select id="selectAll" parameterType="java.lang.String" resultMap="result"> select * from jdorderinfo where id=#{id}</select这个查询返回的就是我们(1)中自定义的resultMap类型。
这个问题在面试中时不时的问道,我们要注意如果是resultMap则返回的是我们自定义的resultMap的类型而如果是resultType则返回的是我们赋值的类型,比如map集合等,在同一个查询语句中不能同时使用只能使用其中一个,为什么,因为这些格式我们定义后,mybatis获得查询结果后会按照这些定义给我们组装成我们想要的格式,如果同时定义两种格式,他没法组装或者说我们自己都没法做到。
8.完整的定义
<?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.base.service.jdOrderInfo"><!-- resultMap 其中对应的就是一个类中属性字段的值和数据库中的属性字段 ,javaType和jdbcType简单常见类型可省略 --><resultMap id="result"type="com.base.service.provider.jd.dto.JdOrderInfoDto"><id property="id" column="id" javaType="java.lang.String" jdbcType="VARCHAR" /><result property="bzOrderId" column="bzOrderId" javaType="java.lang.String" jdbcType="VARCHAR" /><result property="success" column="success" javaType="int" jdbcType="INTEGER" /><result property="jdOrderId" column="jdOrderId" javaType="java.lang.String"jdbcType="VARCHAR" /><result property="name" column="name" javaType="java.lang.String"jdbcType="VARCHAR" /><result property="mobile" column="mobile" javaType="java.lang.String"jdbcType="VARCHAR" /><result property="orderTime" column="orderTime" javaType="java.util.Date"jdbcType="DATE" /></resultMap><!-- 添加用户信息 --><!-- parameterType就是你接受的参数的类型 其实还有parameterMap但是这个已经过时,所以最好不要使用! --><!--如果参数是java基本类型就直接写基本类型而如果是类则写类的全路径 --><insert id="saveJdOrderInfo" parameterType="com.base.service.provider.jd.dto.JdOrderInfoDto">insert intojdorderinfo(id,bzOrderId,success,jdOrderId,name,mobile,orderTime)values(#{id},#{bzOrderId},#{success},#{jdOrderId},#{name},#{mobile},#{orderTime})</insert><delete id="delAccessToken" parameterType="int">delete from jdorderinfo where id=#{id}</delete><update id="updateAccessToken" parameterType="java.util.Map">update jdorderinfo set name=#{name},mobile=#{mobile} where id=#{id}</update><!-- 查询返回的是 list<map> --><!-- resultType 就是返回查询结果的类型,而如果是resultMap=则返回的就是你定义的javabean --><select id="selectAccessToken" parameterType="int" resultType="java.util.Map">select id ,name,sex from jdorderinfo where id=#{id}</select><!--查询返回自定义类型,resultMap的值为自定义的resultMap标签的id --><select id="selectAll" parameterType="java.lang.String"resultMap="result">select * from jdorderinfo where id=#{id}</select></mapper>
- mybatis 框架简单实例
- Spring+SpringMVC+MyBatis框架一个简单工程的搭建实例
- ibatis(mybatis)简单实例
- MyBatis 简单实例
- mybatis 简单实例
- mybatis简单实例
- MyBatis简单实例
- mybatis的简单实例
- mybatis简单实例
- mybatis简单入门实例
- MyBatis框架简单入门
- mybatis框架简单案例
- mybatis框架oracle使用实例
- Hibernate框架,简单实例
- spring 框架 简单实例
- MiniUi框架简单实例
- Dwr 框架简单实例
- Spring MVC 框架 整合 MyBatis 框架实例
- 开源安全工具汇总
- 常使用的链接
- Android内存优化(一)
- 中国剩余定理:结合poj1006
- Adobe Gaming SDK 内置ProductStore详解
- mybatis 框架简单实例
- MAKING A BAYESIAN MODEL TO INFER UBER RIDER DESTINATIONS
- JS刷新页面总结
- My Notes
- LeetCode - Linked List Cycle
- 互联网创业梦已醒
- Android内部优化(二)
- 内地孕妇妈妈赴香港/鉴定宝宝性别需要什么手续和流程
- Think in java 笔记