`
dwj147258
  • 浏览: 194045 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

mybatis学习(一)

阅读更多

如今的持久化框架中,Hibernate和mybatis可以说是各自占据了半壁江山,所以我们不能单独只了解Hibernate,还得学习mybatis,今天就首先来入门mybatis

要使用mybatis只需下载mybatis然后将mybatis-3.0.4.jar导入到工程中,要使用mybatis就必须先了解他的配置文件,在这里我们来看看mybatis的核心配置文件,名字可以随意命名,configuration,xml

<?xml version="1.0" encoding="GBK"?>
  <!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
   "http://mybatis.org/dtd/mybatis-3-config.dtd">
 <configuration>
 
   <!-- 指定properties配置文件, 我这里面配置的是数据库相关 -->
   
   <!-- 指定Mybatis使用log4j -->
   <environments default="development">
     <environment id="development">
       <transactionManager type="JDBC"/>
       <dataSource type="POOLED">
           
        <!--   如果上面没有指定数据库配置的properties文件,那么此处可以这样直接配置  -->
         <property name="driver" value="com.mysql.jdbc.Driver"/>
         <property name="url" value="jdbc:mysql://localhost:3306/express_door"/>
         <property name="username" value="root"/>
         <property name="password" value="root"/>
         
          
          <!-- 上面指定了数据库配置文件, 配置文件里面也是对应的这四个属性 -->
       <!--   <property name="driver" value="${driver}"/>
          <property name="url" value="${url}"/>
          <property name="username" value="${username}"/>
          <property name="password" value="${password}"/> -->
          
       </dataSource>
     </environment>
   </environments>
   
  <!-- 映射文件,mybatis精髓, 后面才会细讲 -->
   <mappers>
     <mapper resource="main/java/conf/userDao-mapping.xml"/>
   </mappers>
   
 </configuration>

 在这里我们定义它的environments,在这个节点里面我们可以配置多个environment,这个使用多个环境的时候就可以用到,随后就是定义他的dataSource,就是一般的驱动,数据库,用户名和密码,配置完之后,我们还需要配置映射文件,如我们这里有个userDao-mapping.xml

接着就是这个userDao-mapping.xml

内容如下:

<?xml version="1.0" encoding="GBK"?>  
  <!DOCTYPE mapper   
  PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"  
  "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> 
  <mapper namespace="main.java.com.mybatis.UserDao">
   <select id="findUserById" resultType="main.java.com.mybatis.User" > 
      select * from user_t where id = #{id}
    </select>
	
 </mapper>

 可以看到,首先配置了mapper,虽然现在不知道是什么鬼,但是可以看到就是一个执行数据库操作的一个接口,然后可以看到定义了一个查询 resultType是一个实体类

在这里需要注意的是这个查询的id需要和接口中的方法名一致,还有这样配置的缺点是数据库列名必须和实体名保持一致,要想自定义的话我们可以在上面定义一个resultMap

这样配置文件就变成了如下:

<?xml version="1.0" encoding="GBK"?>  
  <!DOCTYPE mapper   
  PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"  
  "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> 
  <mapper namespace="main.java.com.mybatis.UserDao">
 	<resultMap id ="userMap" type="main.java.com.mybatis.User">
 		<result  column="id" property ="id"/>
 		<result  column="user_name" property ="userName"/>
 		<result  column="user_type" property ="userType"/>
 	</resultMap>
   <select id="findUserById" resultMap="userMap" > 
      select * from user_t where id = #{id}
    </select>
	
 </mapper>

我们的实体类为:

package main.java.com.mybatis;

public class User {
	private int id ; 
	private String userName ; 
	private String userType ;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getUserType() {
		return userType;
	}
	public void setUserType(String userType) {
		this.userType = userType;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", userName=" + userName + ", userType="
				+ userType + "]";
	}
	
	
}

  

 

定义好了配置文件,我们就需要来写一个数据库执行类,UserDao

package main.java.com.mybatis;

import java.util.List;

public interface UserDao {
	public void insert(User user);
	
	public User findUserById(int userId);
	
	public List<User> findAllUsers();
}

可以看到这就是一个接口,然后定义了一些方法。

最后来测试一下吧

 

package main.java;

import java.io.IOException;

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 main.java.com.mybatis.User;
import main.java.com.mybatis.UserDao;
import main.java.com.mybatis.UserDaoImp;

public class Main {
	public static void main(String[] args) {
		SqlSession sqlSession =  getSessionFactory().openSession();
		UserDao userMapper = sqlSession.getMapper(UserDao.class);
		User user = userMapper.findUserById(2);
		System.out.println(user);
	}
	private static SqlSessionFactory getSessionFactory() {  
        SqlSessionFactory sessionFactory = null;  
       String resource = "main/java/conf/configuration.xml";  
        try {  
           sessionFactory = new SqlSessionFactoryBuilder().build(Resources  
                    .getResourceAsReader(resource));
        } catch (IOException e) {  
            e.printStackTrace();  
       }  
       return sessionFactory;  
   }
}

 输出为:

SLF4J: Class path contains multiple SLF4J bindings.

SLF4J: Found binding in [jar:file:/D:/JettyProject/SpringStudyPro/WebContent/WEB-INF/lib/activemq-all-5.14.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in [jar:file:/D:/JettyProject/SpringStudyPro/WebContent/WEB-INF/lib/slf4j-jdk14-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

User [id=2, userName=dss, userType=dsa]

 

这就是一个简单的mybatis的实用例子,很简单吧

 

 下面贴出使用mybatis实现增删改查的例子:

先贴出mapping配置文件:

userDao-mapping.xml

<?xml version="1.0" encoding="GBK"?>  
  <!DOCTYPE mapper   
  PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"  
  "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> 
  <mapper namespace="main.java.com.mybatis.UserDao">
 	<resultMap id ="userMap" type="main.java.com.mybatis.User">
 		<result  column="id" property ="id"/>
 		<result  column="user_name" property ="userName"/>
 		<result  column="user_type" property ="userType"/>
 	</resultMap>
   <select id="findUserById" parameterType="java.lang.Integer" resultMap="userMap" > 
      select * from user_t where id = #{id}
    </select>
    <select id="findUserByName" parameterType="java.lang.String" resultMap="userMap" > 
      select * from user_t where user_name like '%${value}%'
    </select>
    <insert id="insertUser" parameterType="java.lang.String">
    	insert into user_t(user_name , user_type) values (#{userName} , #{userType}) 
    </insert>
    <delete id="deleteUserById" parameterType="int">
       delete from user_t where id=#{id}
    </delete>
    <update id="updateUser" parameterType="main.java.com.mybatis.User">
       update user_t set user_name=#{userName},user_type=#{userType}  where id=#{id}
    </update>
	<insert id="insertBatch" parameterType="java.util.List"> 
 		insert user_t(user_name , user_type) 
 		values 
 		<foreach collection="list" item="obj" index="index" separator="," > 
   		 (#{userName} , #{userType})
 		</foreach> 
 	</insert>
 </mapper>

 实现类:

userDaoImp

package main.java.com.mybatis;

import java.io.IOException;
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;

public class UserDaoImp  {
	
	public void updateUserById(){
		User user = findUserById(3);
		user.setUserName("updateDengwei");
		SqlSession sqlSession = getSessionFactory().openSession();
		sqlSession.update("updateUser", user);
		sqlSession.commit();
		
	}
	
	public void deleteUserById(int id){
		SqlSession sqlSession = getSessionFactory().openSession() ;
		sqlSession.delete("deleteUserById", id);
		sqlSession.commit();
	}
	public void insertUser(User user){
		SqlSession sqlSession =  getSessionFactory().openSession();
		UserDao userMapper = sqlSession.getMapper(UserDao.class);
		sqlSession.insert("insertUser", user);
		sqlSession.commit();
		System.out.println("OK");
	}
	public User findUserById(int userId) {
		SqlSession sqlSession =  getSessionFactory().openSession();
		UserDao userMapper = sqlSession.getMapper(UserDao.class);
		User user = userMapper.findUserById(userId);
		System.out.println(user);
		return user;
	}
	public List<User> findUserByName(String name){
		SqlSession session = getSessionFactory().openSession() ;
		UserDao userMappper = session.getMapper(UserDao.class);
		List<User> list = userMappper.findUserByName(name);
		return list ;
	}
	public List<User> findAllUsers() {
		SqlSession sqlSession =  getSessionFactory().openSession();
		UserDao userMapper = sqlSession.getMapper(UserDao.class);
		List<User> users = userMapper.findAllUsers();
		for(User user : users){
			System.out.println(user);
		}
		return null;
	}
	
	 private static SqlSessionFactory getSessionFactory() {  
		          SqlSessionFactory sessionFactory = null;  
		         String resource = "main/java/conf/configuration.xml";  
		          try {  
		             sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader(resource));
		          } catch (IOException e) {  
		              e.printStackTrace();  
		         }  
		         return sessionFactory;  
		     }
}

 

0
0
分享到:
评论

相关推荐

    MYBATIS学习资料文件

    "MYBATIS学习资料文件"这一标题明确指出,这是一份与MyBatis相关的学习资源集合,可能包含教程、示例代码、笔记等,旨在帮助用户理解和掌握MyBatis这一流行的数据持久层框架。 【描述解读】 描述中提到“mybatis所...

    MyBatis学习笔记1

    【标题】"MyBatis学习笔记1" 涉及的知识点主要集中在MyBatis这一流行的持久层框架上。MyBatis是一个优秀的Java ORM(对象关系映射)框架,它允许开发者将SQL查询与Java代码分离,使得数据库操作更加灵活且易于维护。...

    Mybatis学习视频+教程+源码

    Mybatis 是一款流行的Java持久层框架,它简化了数据库与Java应用之间的交互,提供了一种灵活的映射机制,使得开发者能够将SQL语句直接写在配置文件或者Mapper接口中,极大地提高了开发效率。本资源包含Mybatis的学习...

    MyBatis学习.md

    MyBatis个人学习记录,经过一周的学习,自己把MyBatis学习完了,下一步进入Spring的学习了

    MyBatis学习.pdf

    MyBatis是一款流行的Java持久层框架,它的设计理念是让程序员能够通过简单的配置和映射,将对象和数据库中的记录进行关联。MyBatis的主要特点是支持定制化SQL、存储过程以及高级映射,同时它减少了传统JDBC操作中...

    mybatis学习笔记

    MyBatis 是一款深受开发者喜爱的持久层框架,它允许开发者使用 SQL 语句来操作数据库,同时提供了强大的映射机制,将 SQL 与 Java 代码分离,简化了开发过程。这篇“mybatis 学习笔记”将带你深入理解 MyBatis 的...

    mybatis入门学习资料

    在MyBatis学习的过程中,需要注重实践,阅读示例代码,并且可以参考社区提供的示例和单元测试。若在文档阅读过程中发现错误或遗漏之处,应记录下来并反馈给社区,以帮助改进文档内容。同时,对于文档的翻译和校对,...

    mybatis学习

    MyBatis 是一款优秀的...通过深入学习 MyBatis,你可以有效地将业务逻辑与数据访问层分离,提高代码的可维护性和可读性。同时,MyBatis 的灵活性和强大的功能使其成为 Java 开发者在处理 SQL 操作时的首选框架之一。

    Mybatis学习笔记整合架构

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。 MyBatis是一个优秀的持久层框架,它对jdbc的操作...

    MyBatis学习笔记.zip

    在这些MyBatis学习笔记中,我们可以期待涵盖以下几个关键知识点: 1. **MyBatis简介**:首先会介绍MyBatis的起源、目标和优点,例如简化数据库操作、提高开发效率、易于维护等。 2. **环境搭建**:包括如何下载...

    mybatis学习入门一、mybatis+servlet实现数据显示

    标题 "mybatis学习入门一、mybatis+servlet实现数据显示" 提供了我们即将探讨的核心主题:MyBatis框架的学习入门,以及如何结合Servlet来展示数据。在这个过程中,我们将深入理解MyBatis的基本概念,它的作用,以及...

    【MyBatis学习笔记六】——MyBatis一对一,一对多,多对一,多对多.zip

    【MyBatis学习笔记六】——MyBatis一对一,一对多,多对一,多对多.zip博客地址:https://blog.csdn.net/weixin_43817709/article/details/117537580

    MyBatis学习笔记

    MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs...

    MyBatis学习手册及配置文件

    这份“MyBatis学习手册及配置文件”提供了全面的学习资源,帮助用户深入理解并掌握MyBatis的核心概念和实践技巧。 首先,`SqlMapConfig.xml`是MyBatis的全局配置文件,它是MyBatis启动时加载的第一个配置文件,用于...

    Mybatis学习笔记

    这份笔记以清晰的条理和重点标注,为读者构建了一个系统的学习路径,不仅涵盖了Mybatis的基础知识,也包括了进阶技巧和实战经验。通过阅读和实践,初学者能够全面了解Mybatis,并在实际项目中灵活运用。同时,内置的...

    【狂神说】mybatis学习总结后源码下载(全) mybatis-study.zip

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。在深入探讨MyBatis之前,我们先理解一下它的基本概念和核心特性。 1. **基本概念** - MyBatis消除了几乎所有的JDBC代码和手动设置...

    MyBatis学习实例

    本资源“MyBatis学习实例”旨在帮助你深入理解并掌握MyBatis的核心概念和实践应用。 1. **MyBatis概述** MyBatis是一个基于Java的持久层框架,它简化了数据库访问,通过XML或注解方式配置和映射原生信息,将接口和...

    MyBatis学习代码

    MyBatis学习代码: mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis in...

Global site tag (gtag.js) - Google Analytics