mybatis实践

看mybatis的文档感觉很简单,总是眼高手低,真正写起代码,错误百出,看来以后还得多实际写代码来学习

目录结构

文件:
jdbc.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf-8
username=root
password=yourpassword

mybatis.xml

<?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>
	<properties resource="jdbc.properties" />

	<!--
		这里指定的别名,是为了简写mapper.xml中的resultType中的名称
		<mapper>标签中的namespace不能使用些简写
	 -->
	<typeAliases>
		<typeAlias alias="Card" type="cn.creval.study.mybatis.entity.Card"/>
	</typeAliases>

	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${driver}"/>
				<property name="url" value="${url}"/>
				<property name="username" value="${username}"/>
				<property name="password" value="${password}"/>
			</dataSource>
		</environment>
	</environments>

	<mappers>
		<mapper resource="cn/creval/study/mybatis/entity/card.xml"/>
	</mappers>
</configuration>

card.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="cn.creval.study.mybatis.entity.Card">
	<sql id="columns">
		id
		,shop_id as shopId
		,code
		,name
		,consumption_types as consumptionTypes
		,discount
		,create_date as createDate
		,is_delete as isDelete
	</sql>

	<select id="selectCard" parameterType="java.lang.String" resultType="Card">
		select
		<include refid="columns"></include>
		from card where id = #{id}
	</select>
</mapper>

mybatis-mapper.xml

<?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>
	<properties resource="jdbc.properties" />

	<!--
		这里指定的别名,是为了简写mapper.xml中的resultType中的名称
		<mapper>标签中的namespace不能使用些简写
	 -->
	<typeAliases>
		<typeAlias alias="Card" type="cn.creval.study.mybatis.entity.Card"/>
	</typeAliases>

	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${driver}"/>
				<property name="url" value="${url}"/>
				<property name="username" value="${username}"/>
				<property name="password" value="${password}"/>
			</dataSource>
		</environment>
	</environments>

	<mappers>
		<mapper resource="cn/creval/study/mybatis/entity/card-mapper.xml"/>
	</mappers>
</configuration>

card-mapper.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="cn.creval.study.mybatis.dao.CardMapper">
	<sql id="columns">
		id
		,shop_id as shopId
		,code
		,name
		,consumption_types as consumptionTypes
		,discount
		,create_date as createDate
		,is_delete as isDelete
	</sql>

	<select id="selectCard" parameterType="java.lang.String" resultType="Card">
		select
		<include refid="columns"></include>
		from card where id = #{id}
	</select>
</mapper>

CardMapper.java

package cn.creval.study.mybatis.dao;

import cn.creval.study.mybatis.entity.Card;

public interface CardMapper {
	Card selectCard(String id);
}

MybatisTest.java

package test;

import java.io.IOException;
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 org.junit.After;
import org.junit.Assert;
import org.junit.Test;

import cn.creval.study.mybatis.dao.CardMapper;
import cn.creval.study.mybatis.entity.Card;

public class MbatisTest {

	public SqlSession session;
	public final String CARD_NAMESPACE = "cn.creval.study.mybatis.entity.Card";

	public void init() throws IOException {
		String resource = "mybatis.xml";
		Reader reader = Resources.getResourceAsReader(resource);
		SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
		SqlSessionFactory sessionFactory = builder.build(reader);
		session = sessionFactory.openSession();
		Assert.assertNotNull(session);
		System.out.println("创建会话成功!");
	}

	/**
	 * 使用Mapper
	 * @throws IOException
	 */
	public void initMapper() throws IOException {
		String resource = "mybatis-mapper.xml";
		Reader reader = Resources.getResourceAsReader(resource);
		SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
		SqlSessionFactory sessionFactory = builder.build(reader);
		session = sessionFactory.openSession();
		Assert.assertNotNull(session);
		System.out.println("创建会话成功!");
	}

	@After
	public void close() {
		if (session != null) {
			session.close();
			session = null;
		}

		Assert.assertNull(session);
		System.out.println("会话关闭成功!");
	}

	@Test
	public void test1() throws IOException {
		init();

		String id = "20899f25f50e4a8d89a05d094b9d5795";
		Card card = session.selectOne(CARD_NAMESPACE + ".selectCard", id);
		Assert.assertEquals(id, card.getId());
		System.out.println(card);
	}

	@Test
	public void testMapper() throws IOException {
		initMapper();
		//通过session获取Mapper
		CardMapper mapper = session.getMapper(CardMapper.class);
		String id = "20899f25f50e4a8d89a05d094b9d5795";
		Card card = mapper.selectCard(id);
		System.out.println(card);
	}
}
时间: 2024-07-31 14:29:24

mybatis实践的相关文章

MyBatis 实践 --配置

MyBatis 实践 Configuration mybatis-configuration.xml是MyBatis的全局配置文件(文件名任意),其配置内容和顺序如下: properties : 属性(文件)加载/配置 settings : 全局配置参数 typeAliases : 定义类型别名 typeHandlers : 类型处理器 objectFactory : 对象工厂 plugins : 插件 environments : 环境集合属性对象 environment transactio

MyBatis 实践 --Mapper与DAO

MyBatis 实践 MyBatis简介 MyBatis前身是iBatis,是一个基于Java的数据持久层/对象关系映射(ORM)框架. MyBatis是对JDBC的封装,使开发人员只需关注SQL本身,而不需花费过多的精力去处理如注册驱动.设置参数.创建Connection/Statement.解析结果集等JDBC过程性代码.MyBatis基于XML/注解的方式配置Statement,执行SQL,并将执行结果映射成Java对象, 大大降低了数据库开发的难度. MyBatis is a first

Spring+MyBatis实践—MyBatis数据库访问

关于spring整合mybatis的工程配置,已经在Spring+MyBatis实践—工程配置中全部详细列出.在此,记录一下几种通过MyBatis访问数据库的方式. 通过sqlSessionTemplate来进行数据库访问. 通过Dao接口来进行数据库访问. 使用@Select注解形式访问数据库 1.在spring框架中使用mybatis来进行数据操作配置,参考Spring+MyBatis实践—工程配置的spring-datasources.xml文件. 2.Demo1—通过sqlSession

Spring+MyBatis实践—中文乱码

多种中文乱码问题及解决: jsp页面乱码 表单提交乱码 URL中文参数乱码 1.jsp页面乱码解决(2步): 新建jsp页面: <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Trans

Spring+MyBatis实践—登录和权限控制

1.实现用户登录功能: 通过session来实现用户登录功能.在用户登录时,将用户的相关信息放在HttpSession对象用,其中HttpSession对象可以通过HttpServletRequest的getSession方法获得.同时,HttpSession对象对应Jsp内置对象session,在jsp页面中也可以通过session来访问,如通过jstl标签库来访问session中的内容: <c:if test="${sessionScope.username == null}"

Spring+MyBatis实践——登录与权限控制

Spring+MyBatis实践--登录与权限控制 1.实现用户登录功能: 通过session来实现用户登录功能.在用户登录时,将用户的相关信息放在HttpSession对象用,其中HttpSession对象可以通过HttpServletRequest的getSession方法获得.同时,HttpSession对象对应Jsp内置对象session,在jsp页面中也可以通过session来访问,如通过jstl标签库来访问session中的内容: Html代码   <c:if test="${

[spring+springmvc+mybatis实践]学生社团管理系统

一.简介 ssm框架为现在十分流行的mvc主流框架.mybatis负责与数据库交互,springmvc与spring完美适配,负责控制器和视图渲染.之前有初步学习过ssm框架,这次借学校里的web课设实践一番,并总结出一些问题.前端使用的是bootstrap框架. 二.项目简介 社团是学校个性化设置的综合实践课程,也是培养学生综合素质和个人兴趣的有效途径.为给同学们提供社团的各方面信息,让同学们及时了解社团动态,积极参加社团活动,本系统拟开发实现学校社团报名课程管理系统,包括前台各个社团信息的展

SSM框架开发web项目系列(二) MyBatis真正的力量

前言 上篇SSM框架环境搭建篇,演示了我们进行web开发必不可少的一些配置和准备工作,如果这方面还有疑问的地方,可以先参考上一篇“SSM框架开发web项目系列(一) 环境搭建篇”.本文主要介绍MyBatis的基础内容,包括基本概念.开发步骤.使用实例等.说起MyBatis,工作中做过SSH/SSM相关Web开发的或者正在学习MyBatis的人或多或少都会接触到类似“MyBatis和Hibernate有什么区别?”,“MyBatis和Hibernate哪个更好?”,“为什么Mybatis用的人越来

第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结【第五天】

https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结[第四天] 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结[第五天] 开发环境: Eclipse IDE for Enterprise Java DevelopersOS: Wi