文档章节

mybatis 学习三 使用接口类编写程序

忘川-hsm
 忘川-hsm
发布于 2017/03/29 16:39
字数 854
阅读 11
收藏 0

需要两个jar包,mysql-connector-java-5.1.21.jar和mybatis-3.4.2.jar 对应的maven为

<dependencies>
  	<dependency>
		<groupId>org.mybatis</groupId>
		<artifactId>mybatis</artifactId>
		<version>3.4.2</version>
	</dependency>
	<dependency>
	    <groupId>mysql</groupId>
	    <artifactId>mysql-connector-java</artifactId>
	    <version>5.1.21</version>
	</dependency>
  </dependencies>

1.创建表

use test;
create table t_employeer(
        employeer_id int not null  primary key AUTO_INCREMENT ,
        employeer_name varchar(50) default null,
        employeer_age int default null,
        employeer_department varchar(100) default null,
        employeer_worktype varchar(100) default null
)

2.创建实体类

public class Employeer {
	private Integer employeer_id;
	private String employeer_name;
	private Integer employeer_age ;
	private String employeer_department;
	private String employeer_worktype;
        ...

3.创建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>
	<!-- 元素允许在主配置文件之外提供一个properties格式对应文件,从而使得主配置文件更加通用。这样对部署非常有用  -->
	<!-- <properties resource="mysql.properties" /> -->
	<!-- 设置别名,一定要放在properties下面  -->
	<typeAliases>
		<typeAlias alias="Employeer" type="com.mucfc.model.Employeer"  />
	</typeAliases>
	<!-- 配置数据源相关的信息  -->
	<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://localhost:3306/test?characterEncoding=UTF-8"/> 
			<property name="username" value="root"/> 
			<property name="password" value="1994713"/> 
			<!--<property name="driver" value="${driver}" />
				<property name="url" value="${url}" />
				<property name="username" value="${username}" />
				<property name="password" value="${password}" /> -->
			</dataSource>
		</environment>
	</environments>
	<!-- 列出映射文件 -->
	<mappers>
		<mapper resource="com/mucfc/model/Employeer.xml" />
	</mappers>
</configuration>

如果想从配置文件读取mysql的数据源,可以添加对应的properties文件,上文的注释为properties方式的配置 mysql.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?charset=utf8
username=hsm
password=1994713

4.根据实体列编写对应的xml文件Employeer.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="com.hsm.inter.EmployeerMapper">
 
     <!-- 查找 -->
     <select id="findEmployeerByID" parameterType="int" resultType="Employeer">
     select* from `t_employeer` where employeer_id =#{employeer_id}
     </select>
     
      <!-- 插入 -->  
      <!-- useGeneratedKeys设置为"true"表明要MyBatis获取由数据库自动生成的主键;keyProperty="id"指定把获取到的主键值注入到Employeer的id属性 --> 
    <insert id="addEmployeer" parameterType="Employeer"
    useGeneratedKeys="true" keyProperty="employeer_id">  
        insert into `t_employeer`(employeer_name,employeer_age,employeer_department,employeer_worktype) 
        values(#{employeer_name},#{employeer_age},#{employeer_department},#{employeer_worktype})  
    </insert>  
    
     <!-- 删除  -->
    <delete id="deleteEmployeer" parameterType="int">  
        delete from `t_employeer` where employeer_id = #{employeer_id}  
    </delete>  
    
    <!-- 修改 -->  
    <update id="updateEmployeer" parameterType="Employeer">  
        update t_employeer set employeer_name = #{employeer_name},employeer_age= #{employeer_age},employeer_department = #{employeer_department}
        ,employeer_worktype=#{employeer_worktype}  where employeer_id = #{employeer_id}  
    </update>  
    
 </mapper>

5.编写mapper接口

package com.hsm.inter;

import com.mucfc.model.Employeer;

public interface EmployeerMapper {
	/**
	 * 注意要和Employeer.xml的方法名对应
	 */
	public Employeer findEmployeerByID(int id);
	public void addEmployeer(Employeer employeer);
	public void deleteEmployeer(int id);
	public void updateEmployeer(Employeer employeer);
}

6 .编写测试类

package com.hsm;

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;

import com.hsm.inter.EmployeerMapper;
import com.mucfc.model.Employeer;

public class MybatisTest2 {
	private static SqlSessionFactory sqlSessionFactory;
	private static Reader reader;
	static {
		try {
			reader = Resources.getResourceAsReader("mybatis-config.xml");
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 查找
	 */
	public static void findEmployeerById(int id) {
		SqlSession session = null;
		try {
			session = sqlSessionFactory.openSession();
			EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);
			Employeer employeer=employeerMapper.findEmployeerByID(id);
			if (employeer == null)
				System.out.println("null");
			else
				System.out.println(employeer);
		} finally {
			session.close();
		}
	}
	/**
	 * 增加
	 */
	public static void addEmployeer(Employeer employeer){
		SqlSession session = null;
		try {
			session = sqlSessionFactory.openSession();
			EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);
			employeerMapper.addEmployeer(employeer);
            session.commit() ;  		
		} finally {
			session.close();
		}
		
	}
	/**
	 * 删除
	 * 
	 */
	public static void deleteEmployeer(int id){
		SqlSession session = null;
		try {
			session = sqlSessionFactory.openSession();
			EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);
			employeerMapper.deleteEmployeer(id);
            session.commit() ;  		
		} finally {
			session.close();
		}
	}
	/**
	 * 更改
	 */
	public static void updateEmployeer(Employeer employeer){
		SqlSession session = null;
		try {
			session = sqlSessionFactory.openSession(); 
			EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);
			employeerMapper.updateEmployeer(employeer);
            session.commit() ;  		
		} finally {
			session.close();
		}
		
	}

	public static void main(String[] args) {							
		Employeer employeer1=new Employeer();
		employeer1.setEmployeer_name("李四");
		employeer1.setEmployeer_age(23);
		employeer1.setEmployeer_department("产品一部");
		employeer1.setEmployeer_worktype("开发工程师");
		
		Employeer employeer2=new Employeer();
		employeer2.setEmployeer_name("张三");
		employeer2.setEmployeer_age(30);
		employeer2.setEmployeer_department("产品二部");
		employeer2.setEmployeer_worktype("测试工程师");
		
		Employeer employeer3=new Employeer();
		employeer3.setEmployeer_name("小王");
		employeer3.setEmployeer_age(22);
		employeer3.setEmployeer_department("产品三部");
		employeer3.setEmployeer_worktype("数据分析师");
		
		
		Employeer employeer4=new Employeer();
		employeer4.setEmployeer_name("明明");
		employeer4.setEmployeer_age(22);
		employeer4.setEmployeer_department("财会部");
		employeer4.setEmployeer_worktype("财务人员");
	
		//插入
     	addEmployeer(employeer1);
     	addEmployeer(employeer2);
     	addEmployeer(employeer3);
     	addEmployeer(employeer4);
     	findEmployeerById(26);
     	deleteEmployeer(27);
		
		//更改
		employeer2.setEmployeer_id(28);
		employeer2.setEmployeer_age(21);
		employeer2.setEmployeer_department("产品四部");
		updateEmployeer(employeer2);

	}

}

© 著作权归作者所有

忘川-hsm
粉丝 8
博文 84
码字总数 50675
作品 0
深圳
程序员
私信 提问
早前学习Java记录

Spring 对 iBATIS 的支持】 Spring 通过 DAO 模式,提供了对 iBATIS 的良好支持。 SqlMapClient:是 iBATIS 中的主要接口,通过 xml 配置文件可以让 Spring 容器来管理 SqlMapClient 对象的创...

大风厂蔡成功
2016/07/10
43
0
Mybatis应用学习——简单使用示例

传统JDBC程序中存在的问题 1. 一个简单的JDBC程序示例: 2. 上面代码造成的问题: 频繁的创建和释放数据库连接对象,极大消耗数据库性能,解决:可以通过数据库连接池技术(c3p0、DBCP、dru...

江左煤郎
2018/11/22
21
0
基于 MyBatis 的 Spring Data 扩展--Spring Data MyBatis

Spring Data 项目的主要目标是使构建使用数据访问技术的 Spring 应用程序变得更加容易。此模块处理增强基于 MyBatis 的数据访问层的支持。 通过使用此模块,你可以在基于MyBatis为ORM的结构下...

匿名
2016/12/21
5.6K
4
动态代理之投鞭断流!看一下MyBatis的底层实现原理!

一日小区漫步,我问朋友:Mybatis中声明一个interface接口,没有编写任何实现类,Mybatis就能返回接口实例,并调用接口方法返回数据库数据,你知道为什么不?朋友很是诧异:是啊,我也很纳闷...

java填坑路
2018/09/09
0
0
Jarvis/spring-data-mybatis

Spring Data MyBatis Spring Data 项目的主要目标是使构建使用数据访问技术的 Spring 应用程序变得更加容易。此模块处理增强基于 MyBatis 的数据访问层的支持。 通过使用此模块,你可以在基于...

Jarvis
2016/12/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
6
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
4
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
7
0
从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到...

Java技术江湖
昨天
7
0
程序性能checklist

程序性能checklist

Moks角木
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部