MyBatis入门

原创 2017年09月15日 19:44:02

项目代码下载

点击下载项目源码(超链接)


项目总体结构


创建数据库,数据表


在项目中创建类

package entity;

public class Student {
	
	private int id;
	private Integer age;
	private Integer score;
	private String name;
	public Student() {		
	}
	public Student(String name,Integer age, Integer score) {
	
		this.age = age;
		this.score = score;
		this.name = name;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public Integer getScore() {
		return score;
	}
	public void setScore(Integer score) {
		this.score = score;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "Student [id=" + id + ", age=" + age + ", score=" + score
				+ ", name=" + name + "]";
	}
	

	

}


添加jar,mybatis.xml,db_mysql.properties

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="db_mysql.properties"></properties>

	<!-- 设置别名 -->
	<typeAliases>
		<package name="entity"></package>
	</typeAliases>

	<environments default="mysqlEM">

       <!--数据库连接信息,注意上面的default属性和下面的id属性一致 -->
		<environment id="mysqlEM">
			<transactionManager type="JDBC">
			</transactionManager>

			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driverClass}" />
				<property name="url" value="${jdbc.jdbcUrl}" />
				<property name="username" value="${jdbc.user}" />
				<property name="password" value="${jdbc.password}" />

			</dataSource>
		</environment>
	</environments>
   
   <!-- 引入类接口的xml -->
	<mappers>
		<mapper resource="StudentMapper.xml" />
	</mappers>


</configuration>

db_mysql.properties

jdbc.user=root
jdbc.password=root
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/text

jdbc.initPoolSize=5
jdbc.maxPoolSize=10
#...


lo4j.properties

log4j.rootLogger=DEBUG, Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%-5p   %m%n
log4j.logger.org.apache=INFO


创建操作类的接口

package dao;

import java.util.List;
import java.util.Map;

import entity.Student;

public interface IStudentDao {
  
    //将查询对象封装到Student对象中,测试if动态拼接字符串
    List<Student>  selectStudentByIf(Student student);
    
    //测试Where动态拼接字符串
    List<Student>  selectStudentByWhere(Student student);
    
    //测试choose动态拼接字符串
    List<Student>  selectStudentByChoose(Student student);
    
    //测试传入是数组的foreach动态拼接字符串
    List<Student>  selectStudentByForeach(int[]  a);
    
    //测试传入是List的foreach动态拼接字符串
    List<Student>  selectStudentByForeach2(List  a);
    } 


创建对应4中接口的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="dao.IStudentDao">

   <!-- 当表的字段和类的属性不一样时候
   column指向的是表中的字段,property指向的是类中的属性
    <resultMap type="entity.Student" id="StudentResult">
    <id column="tid"  property="id"/>
    <result column="tusername"  property="username"/>
    <result column="tpassword"   property="password"/>   
  </resultMap>
   -->


<select id="selectStudentByIf"  resultType="Student">
  select id,name,score from student where 1 = 1
  <if test="name != null and name != ''">
     and name like '%' #{name} '%'
  </if>
    <if test="age >0">
     and age > #{age}
  </if>
</select>


<select id="selectStudentByWhere"  resultType="Student">
  select id,name,score from student 
  <where>
     <if test="name != null and name != ''">
	   and name like '%' #{name} '%'
    </if>
	<if test="age >0">
		and age > #{age}
	</if>
  </where>
</select>
	
	
	
<select id="selectStudentByChoose"  resultType="Student">
  select id,name,score from student 
  <where>
     <choose>
        <when test=" name !=null and name !='' "> and name like '%' #{name} '%' </when>
         <when test =" age > 0"> and age > #{age}</when>
        <otherwise>and 1 = 2</otherwise>
     </choose>
  </where>
</select>




<select id="selectStudentByForeach"  resultType="Student">
  select id,name,age,score from student 
  <where>
     <if test="array.length > 0">
       id in
       <foreach collection="array"  open="("  close=")"  item="myid" separator=",">
         #{myid}
       </foreach>
     </if>
  </where>
</select>

<select id="selectStudentByForeach2"  resultType="Student">
  select id,name,age,score from student 
  <where>
     <if test="list.size > 0">
       id in
       <foreach collection="list"  open="("  close=")"  item="myid" separator=",">
         #{myid}
       </foreach>
     </if>
  </where>
</select>
</mapper>


测试

工具类,用于获取SqlSession

package until;

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

	private static SqlSessionFactory sqlSessionFactory;

	public static SqlSession getSqlSession() {
		Reader reader;
		try {
			reader = Resources.getResourceAsReader("mybatis.xml");
			if (sqlSessionFactory == null) {

				sqlSessionFactory = new SqlSessionFactoryBuilder()
						.build(reader);
			}
			SqlSession sqlSession = sqlSessionFactory.openSession();

			return sqlSession;
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return null;
	}

}

Main

package text;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;
import org.junit.Before;
import org.junit.Test;

import until.MyBatisUntil;
import dao.IStudentDao;
import entity.Student;

public class Main {
	
	private IStudentDao dao;
	@Before
	public void before(){
		SqlSession sqlSession=MyBatisUntil.getSqlSession();
		dao=sqlSession.getMapper(IStudentDao.class);
	}
	
	@Test
	public void selectStudentByForeach2(){
        
        List<Integer> a=new ArrayList<Integer>();
        a.add(1);
        a.add(3);
        List<Student> students=dao.selectStudentByForeach2(a);
        for (Student student : students) {
			System.out.println(student);
		}	
	}


}



一个很好的MyBatis入门示例程序

说明: 1,本文采用的Mybatis框架版本为: mybatis-3.0.4.jar 2, 以持久化一个简单的User bean为例 User实体类的代码如下: package b...
  • lzkkevin
  • lzkkevin
  • 2011年08月18日 11:49
  • 3352

【SpringMVC+mybatis】3.mybatis入门程序

1.入门程序 (1)需求: 根据用户id(主键)查询用户信息; 根据用户名称模糊查询用户信息; 添加用户; 删除用户; 更新用户; (2)mybatis运行环境(下载mybatis的ja...
  • benben513624
  • benben513624
  • 2017年04月01日 23:03
  • 587

Mybatis最入门---HelloWorld

[一步是咫尺,一步即天涯] 上文中,我们已经演示了MySQL的安装配置,以及图形化管理工具的安装配置。本文,我们正式开始介绍当下流行Mybatis的使用方法,关于Mybatis的介绍,请进入传送门:M...
  • ABCD898989
  • ABCD898989
  • 2016年04月17日 18:55
  • 3850

MyBatis从入门到精通__刘增辉(著)_ 电子工业出版社.pdf 免费下载

下载地址: MyBatis从入门到精通__刘增辉(著)_ 电子工业出版社.pdf
  • jiongyi1
  • jiongyi1
  • 2018年01月25日 19:57
  • 114

新书《MyBatis 从入门到精通》

我在CSDN博客写了不少和MyBatis相关的博客,2015年时觉得自己写的太零散,不够系统全面,所以在GitBook创建了一本名为MyBatis最佳实践的开源电子书,当时写好了目录大纲,由于维护好几...
  • isea533
  • isea533
  • 2017年06月21日 20:46
  • 21051

Mybatis入门示例(一):基础代码

本文为转载内容 一、开发环境及前期准备: win7 、JDK1.7、 Intellij Idea、mybatis3.2.8 1、前期数据准备:新建一个名字叫mybatis的数据库,创建一个User...
  • PKWind
  • PKWind
  • 2016年03月06日 22:19
  • 1048

Mybatis最入门---整合Spring

[一步是咫尺,一步即天涯] 最近封闭开发中,于是近乎一个月都没有更新内容,希望各位看官不要在意。本文我们来介绍Mybatis最入门中的最后一文:与Spring的整合。本文仅作为基本Spring+myb...
  • ABCD898989
  • ABCD898989
  • 2016年05月28日 20:09
  • 1711

MyBatis学习(1):Mybatis使用详解和入门案例

前言MyBatis和Hibernate一样,是一个优秀的持久层框架。已经说过很多次了,原生的jdbc操作存在大量的重复性代码(如注册驱动,创建连接,创建statement,结果集检测等)。框架的作用就...
  • qq_32166627
  • qq_32166627
  • 2017年04月25日 16:13
  • 3116

王者系列之Mybatis入门配置(maven版本)

这次我们一起来做一个入门级别的持久层框架Mybatis的配置,正所谓完事开头难。1 引入依赖 org.mybatis mybatis ...
  • qq_33451004
  • qq_33451004
  • 2017年08月20日 19:47
  • 199

MyBatis环境配置及入门

Mybatis 开发环境搭建,选择: MyEclipse8.5 版本,mysql 5.5, jdk 1.8, mybatis3.2.3.jar 包。这些软件工具均可以到各自的官方网站上下载。 整个过...
  • qq_31065001
  • qq_31065001
  • 2017年05月09日 14:20
  • 138
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MyBatis入门
举报原因:
原因补充:

(最多只允许输入30个字)