本人也是一个小白,刚开始接触Web项目为时两个月的时间。在代码道路上算是一路自学、一路坎坷,为了防止自身在日后的工作中避免出现将Mybatis的知识还给互联网,在这里记录一些自身心得,如有误请各位大佬们指出。
Mybatis的来历我也就不在这里多说了,百度、必应上面这种资料多的数不胜数,我就在这里讲述一下它的作用Mybatis是用映射的方式,将XML表中的MySQL命令与数值发送至数据库中,从而得到相应的表,至于Mybatis与MySQL的连接有两用方式,第一种是在公司项目中常会使用的通过Web项目框架的方法进行连接,第二种就是通过java.sql包,设置URL、SQLName、SQLPassword、TableName连接。两种连接方式其实是相同的,只是Web项目框架不需要你去做特别的连接方式。话不多说,接下来来说说Mybatis
Mybatis是通过XML可拓展表来实现命令的生成,来打个比方,现在数据库中有名为User_Info的一张表
USER_ID | USER_NAME | MOBILE | AGE | SEX |
1 | 张三 | 188****2138 | 23 | 女 |
2 | 李四 | 134****1231 | 30 | 男 |
如果我们要获取这张表中的张三的信息我们可以建立这样的XML
USER_INFO.USER_ID,
USER_INFO.USER_NAME,
USER_INFO.MOBILE,
USER_INFO.AGE,
USER_INFO.SEX
#{userId},
#{userName},
#{mobile},
#{age},
#{sex}
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 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 getMapper(Class 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 Cursor selectCursor(String arg0) {
return this.sqlSessionFactory.openSession().selectCursor(arg0);
}
@Override
public Cursor selectCursor(String arg0, Object arg1) {
return this.sqlSessionFactory.openSession().selectCursor(arg0, arg1);
}
@Override
public Cursor selectCursor(String arg0, Object arg1, RowBounds arg2) {
return this.sqlSessionFactory.openSession().selectCursor(arg0, arg1, arg2);
}
@Override
public List selectList(String arg0) {
return this.sqlSessionFactory.openSession().selectList(arg0);
}
@Override
public List selectList(String arg0, Object arg1) {
return this.sqlSessionFactory.openSession().selectList(arg0, arg1);
}
@Override
public List selectList(String arg0, Object arg1, RowBounds arg2) {
return this.sqlSessionFactory.openSession().selectList(arg0, arg1, arg2);
}
@Override
public Map selectMap(String arg0, String arg1) {
return this.sqlSessionFactory.openSession().selectMap(arg0, arg1);
}
@Override
public Map selectMap(String arg0, Object arg1, String arg2) {
return this.sqlSessionFactory.openSession().selectMap(arg0, arg1, arg2);
}
@Override
public Map selectMap(String arg0, Object arg1, String arg2,
RowBounds arg3) {
return this.sqlSessionFactory.openSession().selectMap(arg0, arg1, arg2, arg3);
}
@Override
public T selectOne(String arg0) {
return this.sqlSessionFactory.openSession().selectOne(arg0);
}
@Override
public 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
大家可以试一下,欢迎提问,你们的提问就是对我知识的巩固,谢谢。