`
dwj147258
  • 浏览: 192009 次
  • 性别: 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
分享到:
评论

相关推荐

    java-ssm+vue旅游资源网站实现源码(项目源码-说明文档)

    旅游资源网站的主要使用者分为管理员和用户,实现功能包括管理员:首页、个人中心、用户管理、景点信息管理、购票信息管理、酒店信息管理、客房类型管理、客房信息管理、客房预订管理、交流论坛、系统管理,用户:首页、个人中心、购票信息管理、客房预订管理、我的收藏管理,前台首页;首页、景点信息、酒店信息、客房信息、交流论坛、红色文化、个人中心、后台管理、客服等功能。 项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7+ 后端技术:ssm 前端技术:Vue 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog

    【高创新】基于粒子群优化算法PSO-Transformer-BiLSTM实现故障识别Matlab实现.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    这里收集那些神奇的产品经理为我们带来的意想不到的产品功能和改版,又称_MDZZ_PM_awesome-pm.zip

    这里收集那些神奇的产品经理为我们带来的意想不到的产品功能和改版,又称_MDZZ_PM_awesome-pm

    AI City track 5数据集-voc-xml格式

    有戴头盔的人、未戴头盔的人、摩托车三种类别,包含736张图像、对应voc格式标签(xml)

    4-3_Business_BLUE_2017_16-CL-20180524MTAX.potx

    微软演示材料

    VB075期刊信息管理系统(SQL).7z

    VB075期刊信息管理系统(SQL).7z

    西门子SMART200程序 PID的控制写法,突破8路,PID直接做成子程序,无密码,直接调用

    西门子SMART200程序 PID的控制写法,突破8路,PID直接做成子程序,无密码,直接调用。

    VBATM校园自动银行系统设计(源代码+论文).zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、5资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    基于深度学习的移动物体检测分类源码

    基于YOLOv5的物体检测识别与分类系统,可根据不同的权重模型对不同的物体进行识别,整体分为图片、视频和摄像头三个检测模块,具体检测能力依据模型而定。

    PMSM滑模控制仿真无位置 永磁电机 可提供文档if启动 如果没有收敛,将1e-4搞小一点 e-6或者e-5试下 本次滑模模型

    PMSM滑模控制仿真无位置 永磁电机 可提供文档if启动 如果没有收敛,将1e-4搞小一点 e-6或者e-5试下 本次滑模模型文档包括: 1 simulink界面调整,由于使用这个仿真的时候很可能会出现因为软件环境不同导致无法使用, 或者导致的波形错误,特写了一个关于参数界面的设置,按照那个设置,结合主框图,能够 避免使用出问题。 2 波形记录,将转速波形,转矩波形,位置估计+实际位置波形,三项定子电流波形, 给定转速(蓝绿色)+实际转速(红色)+估算转速(蓝色) 3 另外仿真程序内部,里面标注了各个功能模块的位置及部分原理。 4 lunwen的话推荐看 13 16 开头的lunwen,其他的可以拓展性的看。

    60-AspNet8-jQery-Datatables-5-Code.zip

    构建使用jQuery组件DataTables.net的Asp.Net 8 MVC应用程序的实用指南。

    皮层微创脑机接口传感器的发展现状与未来趋势

    内容概要:文章探讨了皮层微创脑机接口(BCI)传感器作为神经电信号采集与调控装置,在临床上的应用现状与科研进展,并分析了传感器在未来可能的发展趋势和技术革新点。介绍了现有商业化及实验级别的电极器材,并讨论了其如何进一步向着高通量、软界面与更持久的生命设计演化。 适合人群:神经工程专业科研工作者,尤其是关注BCI传感器领域的研究生、教师和其他相关专业的科研人士。 使用场景及目标:旨在增进从业者对于皮层微创BCI的理解,特别是传感器的设计、制作工艺和未来可能的方向;有助于科研与产品研发。 其他说明:文章还强调了技术创新在材料与设计理念层面的重要性,为BCI传感器在实际医疗与神经科研中发挥作用打下了坚实的基础。

    基于python实现的社会力模型仿真+源码+文档(毕业设计&课程设计&项目开发)

    基于python实现的社会力模型仿真+源码+文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档~ 基于python实现的社会力模型仿真+源码+文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档~ 基于python实现的社会力模型仿真+源码+文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档~ 基于python实现的社会力模型仿真+源码+文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档~ 基于python实现的社会力模型仿真+源码+文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档~ 基于python实现的社会力模型仿真+源码+文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档~

    2024.9.18 作业

    2024.9.18 作业

    Python环境一键安装脚本,适用于Linux_lxspacepy.zip

    Python环境一键安装脚本,适用于Linux_lxspacepy

    昕一 - 一样的月光 [qmms2].mp3

    昕一 - 一样的月光 [qmms2].mp3

    【高创新】基于凌日优化算法TSOA-Transformer-BiLSTM实现故障识别Matlab实现.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    http服务器的实现.7z

    http服务器的实现.7z

    java-ssm+vue高校奖学金管理系统实现源码(项目源码-说明文档)

    高校奖学金管理系统的主要实现功能包括:管理员:首页、个人中心、学生管理、辅导员管理、教务处管理、奖学金类型管理、奖学金信息管理、学生成绩管理、奖惩信息管理、奖学金申请管理、公告信息管理。学生:首页、个人中心、奖学金信息管理、学生成绩管理、奖惩信息管理、奖学金申请管理、公告信息管理,辅导员;首页、个人中心、学生管理、学生成绩管理、奖惩信息管理、奖学金申请管理、公告信息管理,教务处;首页、个人中心、学生管理、学生成绩管理、奖惩信息管理、奖学金申请管理、公告信息管理 项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7+ 后端技术:ssm 前端技术:Vue 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog

    Palo Alto Networks PA-220 管理员指导手册

    Palo Alto Networks PA-220 管理员指导手册

Global site tag (gtag.js) - Google Analytics