Mybatis的作用与用法

       本人也是一个小白,刚开始接触Web项目为时两个月的时间。在代码道路上算是一路自学、一路坎坷,为了防止自身在日后的工作中避免出现将Mybatis的知识还给互联网,在这里记录一些自身心得,如有误请各位大佬们指出。

       Mybatis的来历我也就不在这里多说了,百度、必应上面这种资料多的数不胜数,我就在这里讲述一下它的作用Mybatis是用映射的方式,将XML表中的MySQL命令与数值发送至数据库中,从而得到相应的表,至于Mybatis与MySQL的连接有两用方式,第一种是在公司项目中常会使用的通过Web项目框架的方法进行连接,第二种就是通过java.sql包,设置URL、SQLName、SQLPassword、TableName连接。两种连接方式其实是相同的,只是Web项目框架不需要你去做特别的连接方式。话不多说,接下来来说说Mybatis

       Mybatis是通过XML可拓展表来实现命令的生成,来打个比方,现在数据库中有名为User_Info的一张表

 

USER_IDUSER_NAMEMOBILEAGESEX
1张三188****213823
2李四134****123130

如果我们要获取这张表中的张三的信息我们可以建立这样的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="UserMapper">
<sql id="user_info_column">
    USER_INFO.USER_ID,
    USER_INFO.USER_NAME,
    USER_INFO.MOBILE,
    USER_INFO.AGE,
    USER_INFO.SEX
</sql>
<sql id="user_info_property">
    #{userId},
    #{userName},
    #{mobile},
    #{age},
    #{sex}
</sql>
<resultMap type="User" id="UserResult">
	<result property="userId" column="USER_ID" />
	<result property="userName" column="USER_NAME" />
	<result property="mobile" column="MOBILE" />
	<result property="age" column="AGE" />
	<result property="sex" column="SEX" />
</resultMap>

<!-- 通过用户ID,查询用户记录 -->
<select id="queryUserById" parameterType="int" resultMap="UserResult">
	SELECT
	<include refid="edu_user_column" />
	FROM USER_INFO WHERE EDU_USER.USER_ID=#{value}
</select>
package com.inxedu.os.edu.dao.impl.user;

import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Repository("userDao")
public class UserDaoImpl extends GenericDaoImpl implements UserDao{

	public User queryUserById(int userId) {
		return this.selectOne("UserMapper.queryUserById", userId);
	}	
}

这样就能达到预期的效果了。

----------------------------------------------------------------------------------分割线------------------------------------------------------------------------------

时隔一年再次接触到了Mybatis在这里对Mybatis进行一些补充

案例还是与上述相同,Mapper.xml文件无需做改动,在这里对UserDaoImpl.java文件做一下调整,以便来参观的小白更加了解Mybatis的依赖。

看一下项目资源

先给大家献上GeneralDao.java,这是为了后续的继承,以达到代码客观性的作用

package mybatis.lesson;

import java.sql.Connection;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.cursor.Cursor;
import org.apache.ibatis.executor.BatchResult;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.ResultHandler;
import org.apache.ibatis.session.RowBounds;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

public class GeneralDao implements SqlSession{
	
    private SqlSessionFactory = new SqlSessionFactoryBean(){
        {
            setDataSource(dataSource);//dbcp与数据库的连接
            ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();//我在这里用的是SpringBoot加载的配置文件,大伙儿也可以去看一下Springboot持续集成的资料,这里就不给大家做过多的思维负担了
            setMapperLocations(resolver.getResources("classpath:mapper/*Mapper.xml")/*这里也可以改成你们项目在本机中的绝对位置或者相对位置*/);//指定你Mapper文件存放的位置
            sqlSessionFactoryBean.setConfigLocation(resolver.getResource("classpath:mybatis-config.xml"));//指定你的配置后面会贴出
        }
    };
	//private SqlSessionFactory sqlSessionFactory = (SqlSessionFactory) SpringBootBeanUtil.getBean("sqlSessionFactory");
	
	public SqlSession getSqlSession(){
		return this.sqlSessionFactory.openSession();
	}

	@Override
	public void clearCache() {
		this.sqlSessionFactory.openSession().clearCache();
	}

	@Override
	public void close() {
		this.sqlSessionFactory.openSession().close();
	}

	@Override
	public void commit() {
		this.sqlSessionFactory.openSession().commit();
	}

	@Override
	public void commit(boolean arg0) {
		this.sqlSessionFactory.openSession().commit(arg0);
	}

	@Override
	public int delete(String arg0) {
		return this.sqlSessionFactory.openSession().delete(arg0);
	}

	@Override
	public int delete(String arg0, Object arg1) {
		return this.sqlSessionFactory.openSession().delete(arg0, arg1);
	}

	@Override
	public List<BatchResult> flushStatements() {
		return this.sqlSessionFactory.openSession().flushStatements();
	}

	@Override
	public Configuration getConfiguration() {
		return this.sqlSessionFactory.openSession().getConfiguration();
	}

	@Override
	public Connection getConnection() {
		return this.sqlSessionFactory.openSession().getConnection();
	}

	@Override
	public <T> T getMapper(Class<T> arg0) {
		return this.sqlSessionFactory.openSession().getMapper(arg0);
	}

	@Override
	public int insert(String arg0) {
		return this.sqlSessionFactory.openSession().insert(arg0);
	}

	@Override
	public int insert(String arg0, Object arg1) {
		return this.sqlSessionFactory.openSession().insert(arg0, arg1);
	}

	@Override
	public void rollback() {
		this.sqlSessionFactory.openSession().rollback();
	}

	@Override
	public void rollback(boolean arg0) {
		this.sqlSessionFactory.openSession().rollback(arg0);
	}

	@SuppressWarnings("rawtypes")
	@Override
	public void select(String arg0, ResultHandler arg1) {
		this.sqlSessionFactory.openSession().select(arg0, arg1);
	}

	@SuppressWarnings("rawtypes")
	@Override
	public void select(String arg0, Object arg1, ResultHandler arg2) {
		this.sqlSessionFactory.openSession().select(arg0, arg1, arg2);
	}

	@SuppressWarnings("rawtypes")
	@Override
	public void select(String arg0, Object arg1, RowBounds arg2,
			ResultHandler arg3) {
		this.sqlSessionFactory.openSession().select(arg0, arg1, arg2, arg3);
	}

	@Override
	public <T> Cursor<T> selectCursor(String arg0) {
		return this.sqlSessionFactory.openSession().selectCursor(arg0);
	}

	@Override
	public <T> Cursor<T> selectCursor(String arg0, Object arg1) {
		return this.sqlSessionFactory.openSession().selectCursor(arg0, arg1);
	}

	@Override
	public <T> Cursor<T> selectCursor(String arg0, Object arg1, RowBounds arg2) {
		return this.sqlSessionFactory.openSession().selectCursor(arg0, arg1, arg2);
	}

	@Override
	public <E> List<E> selectList(String arg0) {
		return this.sqlSessionFactory.openSession().selectList(arg0);
	}

	@Override
	public <E> List<E> selectList(String arg0, Object arg1) {
		return this.sqlSessionFactory.openSession().selectList(arg0, arg1);
	}

	@Override
	public <E> List<E> selectList(String arg0, Object arg1, RowBounds arg2) {
		return this.sqlSessionFactory.openSession().selectList(arg0, arg1, arg2);
	}

	@Override
	public <K, V> Map<K, V> selectMap(String arg0, String arg1) {
		return this.sqlSessionFactory.openSession().selectMap(arg0, arg1);
	}

	@Override
	public <K, V> Map<K, V> selectMap(String arg0, Object arg1, String arg2) {
		return this.sqlSessionFactory.openSession().selectMap(arg0, arg1, arg2);
	}

	@Override
	public <K, V> Map<K, V> selectMap(String arg0, Object arg1, String arg2,
			RowBounds arg3) {
		return this.sqlSessionFactory.openSession().selectMap(arg0, arg1, arg2, arg3);
	}

	@Override
	public <T> T selectOne(String arg0) {
		return this.sqlSessionFactory.openSession().selectOne(arg0);
	}

	@Override
	public <T> T selectOne(String arg0, Object arg1) {
		return this.sqlSessionFactory.openSession().selectOne(arg0, arg1);
	}

	@Override
	public int update(String arg0) {
		return this.sqlSessionFactory.openSession().update(arg0);
	}

	@Override
	public int update(String arg0, Object arg1) {
		return this.sqlSessionFactory.openSession().update(arg0, arg1);
	}
	
}

 UserImpl.java

package mybatis.lesson;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class UserDaoImpl extends GeneralDao{

	public User queryUserById(int userId) {
		return this.selectOne("UserMapper.queryUserById", userId);
	}	
}

mybatis-config.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>
    <settings>
        <!--使用JDBC的getGeneratedKeys获取数据库自增主键-->
        <setting name="useGeneratedKeys" value="true"/>
        <!--使用列标签替换列别名-->
        <setting name="useColumnLabel" value="ture" />
        <!--开启驼峰转换-->
        <setting name="mapUnderscoreToCamelCase" value="true" />
    </settings>
</configuration>

大家可以试一下,欢迎提问,你们的提问就是对我知识的巩固,谢谢。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值