mybatis学习,简单实例

因为工作中所使用的开发框架都是ssh,很长时间没有使用ssh框架之外的框架,最近温习了一下mybatis,废话不多说,直接上实例。

1、首先建立java web项目

2、导入开发所需jar包,jar包可以去mybatis官网下载,mybatis官网jar包下载步骤

3、创建测试表,下面是我的表结构。


4、创建配置文件

jdbc配置文件:
##mysql
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/world?useOldAliasMetadataBehavior=true&allowMultiQueries=true
jdbc.username=root
jdbc.password=mlnsoft

mybatis配置文件:
<?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>
  <!-- 引入外部配置文件 -->
  <properties resource="jdbc.properties"></properties>
   
   <!-- 配置mybatis运行环境 -->
     <environments default="cybatis">
        <environment id="cybatis">
            <!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
            <transactionManager type="JDBC" />
            
            <!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
            <!-- POOLED 表示支持JDBC数据源连接池 -->
            <!-- UNPOOLED 表示不支持数据源连接池 -->
            <!-- JNDI 表示支持外部数据源连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driverClassName}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments> 
    
</configuration>

5、创建Javabean,接口文件和映射xml文件

City.java
package com.cp.myproject.bean;

import java.io.Serializable;

public class City implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Integer id;
	private String name;
	private String countryCode;
	private String district;
	private Integer population;
	/**
	 * @return the id
	 */
	public Integer getId() {
		return id;
	}
	/**
	 * @param id the id to set
	 */
	public void setId(Integer id) {
		this.id = id;
	}
	/**
	 * @return the name
	 */
	public String getName() {
		return name;
	}
	/**
	 * @param name the name to set
	 */
	public void setName(String name) {
		this.name = name;
	}
	/**
	 * @return the countryCode
	 */
	public String getCountryCode() {
		return countryCode;
	}
	/**
	 * @param countryCode the countryCode to set
	 */
	public void setCountryCode(String countryCode) {
		this.countryCode = countryCode;
	}
	
	/**
	 * @return the population
	 */
	public Integer getPopulation() {
		return population;
	}
	/**
	 * @param population the population to set
	 */
	public void setPopulation(Integer population) {
		this.population = population;
	}
	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "City [id=" + id + ", name=" + name + ", countryCode="
				+ countryCode + ", distinct=" + district + ", population="
				+ population + "]";
	}
	/**
	 * @return the district
	 */
	public String getDistrict() {
		return district;
	}
	/**
	 * @param district the district to set
	 */
	public void setDistrict(String district) {
		this.district = district;
	}
	
	
}

CityMapper.java
package com.cp.myproject.mapper;

import java.util.List;

import com.cp.myproject.bean.City;

public interface CityMapper {

	/**
	 * 增加
	 * @param city
	 * @return
	 */
	public int insert(City city);
	/**
	 * 删除
	 * @param id
	 * @return
	 */
	public int delete (int id);
	/**
	 * 更新
	 * @param city
	 * @param id
	 * @return
	 */
	public int update (City city);
	/**
	 * 根据id查询
	 * @param id
	 * @return
	 */
	public City selectById(int id);
	/**
	 * 查询所有的记录
	 * @return
	 */
	public List<City> findAll();
	/**
	 * 更新或插入
	 * @param city
	 * @return
	 */
//	public int saveOrUpdate(City city);
}

CityMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cp.myproject.mapper.CityMapper">
<!-- 自定义返回结果集 -->
   <resultMap id="cityMap" type="City">
        <id property="id" column="ID" javaType="java.lang.Integer"></id>
        <result property="name" column="Name"></result>
        <result property="countryCode" column="CountryCode" ></result>
        <result property="district" column="District" ></result>
        <result property="population" column="Population" javaType="java.lang.Integer"></result>
    </resultMap>
<!-- 在各种标签中的id属性必须和接口中的方法名相同 , id属性值必须是唯一的,不能够重复使用。parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型-->    
<!-- useGeneratedKeys:( 仅 对 insert 有 用 ) 这 会 告 诉 MyBatis 使 用 JDBC 的getGeneratedKeys 
            方法来取出由数据(比如:像 MySQL 和 SQLServer 这样的数据库管理系统的自动递增字段)内部生成的主键。默认值: false。 -->    
<!--keyProperty: (仅对 insert有用)标记一个属性, MyBatis 会通过 getGeneratedKeys或者通过 insert 语句的 selectKey 子元素设置它的值。默认:不设置。 -->
<!--#{}中的内容,为占位符,当参数为某个JavaBean时,表示放置该Bean对象的属性值  -->


    <insert id="insert" useGeneratedKeys="true" keyProperty="id">
        insert into city (name,countryCode,district) values (#{name},#{countryCode},#{district})
    </insert>
    
    <update id="update" parameterType="com.cp.myproject.bean.City" >
      update city
      <set>
      <if test="district != null">district=#{district},</if>
      <if test="name != null">name=#{name},</if>
      <if test="countryCode != null">countryCode=#{countryCode},</if>
      <if test="population != null">population=#{population}</if>
    </set>
       where id = #{id}
    </update>
    
    <delete id="delete" parameterType="int">
     delete from city where id=#{id}  
    </delete>
    
    <select id="selectById" parameterType="int" resultMap="cityMap">
     select * from city where id=#{id}
    </select>
    
    <select id="findAll" resultMap="cityMap">
     select * from city
    </select>
    
    
</mapper>

6、将mapper xml文件 在mybatis.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>
  <!-- 引入外部配置文件 -->
  <properties resource="jdbc.properties"></properties>
   <!-- 为JAVA Bean起类别名 -->
   <typeAliases >
        <!-- 别名方式1,一个一个的配置 type中放置的是类的全路径,alias中放置的是类别名
        <typeAliase type="com.cp.myproject.bean.City" alias="City"/> -->
        <!-- 别名方式2,自动扫描,将JAVA类的类名作为类的类别名 -->
        <package name="com.cp.myproject.bean"/>
   </typeAliases>
   <!-- 配置mybatis运行环境 -->
     <environments default="cybatis">
        <environment id="cybatis">
            <!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
            <transactionManager type="JDBC" />
            
            <!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
            <!-- POOLED 表示支持JDBC数据源连接池 -->
            <!-- UNPOOLED 表示不支持数据源连接池 -->
            <!-- JNDI 表示支持外部数据源连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driverClassName}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments> 
    
    <mappers>
        <!-- 告知映射文件方式1,一个一个的配置
        <mapper resource="com/cp/myproject/mapper/CityMapper.xml"/>-->
        <!-- 告知映射文件方式2,自动扫描包内的Mapper接口与配置文件 -->
        <package name="com/cp/myproject/mapper"/>
    </mappers>
</configuration>

7、工具类创建

package com.cp.myproject.DbTools;

import java.io.Reader;
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 DbTools {
	
	 public static SqlSessionFactory sessionFactory;
	    
	    static{
	        try {
	            //使用MyBatis提供的Resources类加载mybatis的配置文件
	            Reader reader = Resources.getResourceAsReader("mybatis.xml");
	            //构建sqlSession的工厂
	            sessionFactory = new SqlSessionFactoryBuilder().build(reader);
	        } catch (Exception e) {
	            e.printStackTrace();
	        }
	        
	    }
	    //创建能执行映射文件中sql的sqlSession
	    public static SqlSession getSession(){
	        return sessionFactory.openSession();
	    }

}

8、创建测试类 CityService.java

package com.cp.myproject.service;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.cp.myproject.DbTools.DbTools;
import com.cp.myproject.bean.City;
import com.cp.myproject.mapper.CityMapper;

public class CityService {
	/**
	 * 查询所有的记录
	 */
	private static void findAll(){
		SqlSession session=DbTools.getSession();
        CityMapper mapper=session.getMapper(CityMapper.class);
        try {
        List<City> user=mapper.findAll();
        for(City citys:user){
        	System.out.println("name: "+citys.getName()+", district: "+citys.getDistrict()+", population: "+citys.getPopulation()+", countrycode: "+citys.getCountryCode());
        }
        //System.out.println(user.toString());
        session.commit();
        } catch (Exception e) {
            e.printStackTrace();
            session.rollback();
        }
	}
	
	/**
	 * 根据id查询记录
	 */
	private static void findbyid(){
		SqlSession session=DbTools.getSession();
        CityMapper mapper=session.getMapper(CityMapper.class);
        try {
			City city = mapper.selectById(1);
			System.out.println("name: "+city.getName()+", district: "+city.getDistrict());
		} catch (Exception e) {
			e.printStackTrace();
            session.rollback();
		}
	}
	/**
	 * 增加记录
	 */
	private static void insert(){
		SqlSession session=DbTools.getSession();
        CityMapper mapper=session.getMapper(CityMapper.class);
        try {
			City city = new City();
			city.setName("aaa");
			city.setCountryCode("aaa");
			city.setDistrict("aaa");
			mapper.insert(city);
		} catch (Exception e) {
			e.printStackTrace();
                        session.rollback();
		}
	}
	
	/**
	 * 记录更新
	 */
	public static void update(){
		SqlSession session=DbTools.getSession();
        CityMapper mapper=session.getMapper(CityMapper.class);
        try {
        	City city = mapper.selectById(4081);
        	city.setDistrict("88888");
        	mapper.update(city);
		} catch (Exception e) {
			e.printStackTrace();
            session.rollback();
		}
	}
	/**
	 * 删除记录
	 */
	public static void delete(){
		SqlSession session=DbTools.getSession();
        CityMapper mapper=session.getMapper(CityMapper.class);
        try {
			mapper.delete(4080);
		} catch (Exception e) {
			e.printStackTrace();
            session.rollback();
		}
	}
	
	
	public static void main(String[] args) {
//		saveOrUpdate();
//		delete();
//		findAll();
		findbyid();
//		insert();
//		update();
	}

}

9、运行测试类 CityService.java

Run As---->Java Appliation

10、运行结果

项目源码:mybatis实例源码下载

本文参考博文:http://www.cnblogs.com/hellokitty1/p/5216025.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值