zoukankan      html  css  js  c++  java
  • MyBatis开发-->入门

    作为一个Java程序员,在不同的公司会用到不同的框架,而这次,我用到的是Mybatis持久框架,关于Mybatis的介绍,大家可以百度一下,你就知道,我就不罗嗦了。本实例也是从其他大神那里实践过来的,记录只是因为自己实践了,加深印象,在以后可以再回来学习,同时将遇到的问题一并摘录。

    本篇为入门篇。

    Mybatis跟Hibernate一样,都是orm持久框架,只是,Mybatis使用原生的sql。下面来搭建入门环境吧。

    本文使用的数据库为mysql。所以首先是建库建表,语句如下:

    建库:

    +----------+------------------------------------------------------------------+
    | Database | Create Database                                                  |
    +----------+------------------------------------------------------------------+
    | mybatis  | CREATE DATABASE `mybatis` /*!40100 DEFAULT CHARACTER SET utf8 */ |
    +----------+------------------------------------------------------------------+

    建表:

    mysql> create table t_user(
    -> id int not null auto_increment,
    -> name varchar(20) default null,
    -> pass varchar(20) default null,
    -> primary key(id)
    -> )engine=InnoDB auto_increment = 1 default charset=utf8;
    

    添加一条记录:

    mysql> insert into t_user(name,pass) values('lilei','lilei');
    

    然后在MyEclipse中新建一个Web项目,整体结构如下:

    好,然后给出项目中的文件及配置内容。

    首先建立表对应的实体类User.java:

    package cn.clear.domain;
    
    public class User {
    	
    	private int id;
    	private String name;
    	private String pass;
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getPass() {
    		return pass;
    	}
    	public void setPass(String pass) {
    		this.pass = pass;
    	}
    
    }
    

    建立Mybatis的配置文件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>
    	<environments default="development">
    		<environment id="development">
    			<transactionManager type="JDBC"/>
    			<dataSource type="POOLED">
    				<property name="driver" value="com.mysql.jdbc.Driver"/>
    				<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis"/>
    				<property name="username" value="root"/>
    				<property name="password" value="root"/>
    			</dataSource>
    		</environment>
    	</environments>
    	<!-- User的映射文件 -->
    	<mappers>
    		<!-- <mapper resource="cn/clear/domain/UserMapper.xml"/> -->
             <!--在运行项目的时候要将映射文件的注释打开,我之所以这里要注释起来,
              是因为之前忘记将映射文件配置在配置文件中,导致运行报了一个错误,那个错误会在后面给出--> 
    </mappers> </configuration>

    建立实体类与数据表之间的映射文件:UserMapper.xml。注意此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="User">
         <!--顾名思义,根据id和下面的sql语句可以清楚这是根据主键id查询一条记录--> <select id="selectUserById" parameterType="int" resultType="cn.clear.domain.User"> select * from t_user where id = #{id} </select> </mapper>

    最后建立一个测试类TestUser.java,测试环境是否成功,看看能否查询出我们在数据库中插入的记录。

    package cn.clear.test;
    
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    
    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 cn.clear.domain.User;
    
    
    public class TestUser {
    	
    	public static String resource = "mybatis-config.xml"; 
    
    	public static void main(String[] args) throws IOException {
    		InputStream inputStream = Resources.getResourceAsStream(resource);
    		SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    		SqlSession session = sessionFactory.openSession();
    		try{
    			User user = session.selectOne("User.selectUserById",1);
    			System.out.println(user.getName());
    			
    		}finally{
    			session.close();
    		}
    	}
    }
    

    然后运行main方法,如果你上面的映射文件没有添加到配置文件mybatis-config.xml中那么将报以下错误:

    Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: 
    ### Error querying database.  Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for User.selectUserById
    ### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for User.selectUserById
    	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:26)
    	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:111)
    	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102)
    	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:66)
    	at cn.clear.test.TestUser.main(TestUser.java:24)
    Caused by: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for User.selectUserById
    	at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:797)
    	at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:631)
    	at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:624)
    	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:107)
    	... 3 more
    

    当你将映射文件都配置好,那么运行run方法将会见证到奇迹Console将会打印出我们想要的结果:

    lilei
    

    至此,恭喜,你已经成功入门Mybatis框架。

      

  • 相关阅读:
    如何垂直居中一个浮动元素?
    微信小程序vant-search获取不到输入的搜索内容踩坑
    关于微信小程序无法使用css3过度属性transition以及微信小程序如何利用api进行画面过度的展示
    Spring Shedule Task之注解实现 (两次启动Schedule Task 的解决方案)
    学习站点记录
    Spring 通过配置文件注入 properties文件
    Liunx下安装jdk
    Mybatis使用generator自动生成映射配置文件信息
    Tomcat容器虚拟路径设置
    Spring init-method和destroy-method 的使用
  • 原文地址:https://www.cnblogs.com/clear5/p/4990235.html
Copyright © 2011-2022 走看看