Mybatis接口编程方式实现增删改查
来源:互联网 发布:淘宝我的信誉在哪里看 编辑:程序博客网 时间:2024/05/22 04:16
林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka
前面一章【Mybatis】Mybatis入门概述及第一个Mybatis实例实现增删改查 ,已经搭建好了eclipse,mybatis,mysql的环境,并且实现了一个简单的查询。请注意,这种方式是用SqlSession实例来直接执行已映射的SQL语句:
session.selectOne("com.mucfc.model.EmployeerMapper.findEmployeerByID", 1);
其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如EmployeerMapper.java),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细过程:
本文要改成以接口类来实现增删改查
整个工程目录 :
本文示例工程免费下载
1、首先还是mybatis的配置文件mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//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="christmas258@"/> --><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
driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/test?charset=utf8username=rootpassword=christmas258@
2、数据表对应的类Employeer.JAVA
package com.mucfc.model;import java.io.Serializable;/** * 雇员信息类 *@author linbingwen *@time 2015.5.11 */public class Employeer {private Integer employeer_id;private String employeer_name;private Integer employeer_age ;private String employeer_department;private String employeer_worktype;public Employeer() {super();}public Integer getEmployeer_id() {return employeer_id;}public void setEmployeer_id(Integer employeer_id) {this.employeer_id = employeer_id;}public String getEmployeer_name() {return employeer_name;}public void setEmployeer_name(String employeer_name) {this.employeer_name = employeer_name;}public Integer getEmployeer_age() {return employeer_age;}public void setEmployeer_age(Integer employeer_age) {this.employeer_age = employeer_age;}public String getEmployeer_department() {return employeer_department;}public void setEmployeer_department(String employeer_department) {this.employeer_department = employeer_department;}public String getEmployeer_worktype() {return employeer_worktype;}public void setEmployeer_worktype(String employeer_worktype) {this.employeer_worktype = employeer_worktype;}@Overridepublic String toString() {return "Employeer [employeer_id=" + employeer_id + ", employeer_name="+ employeer_name + ", employeer_age=" + employeer_age+ ", employeer_department=" + employeer_department+ ", employeer_worktype=" + employeer_worktype + "]";}}然后是SQL语句的配置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.mucfc.mapper.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>
注意com.mucfc.mapper.EmployeerMapper这个类是存在的,它是一个接口类,上一讲我们是使用com.mucfc.model.EmployeerMapper,而上一讲的这个类是不存在的
4、SQL语句映射类EmployeerMapper.java
package com.mucfc.mapper;import com.mucfc.model.Employeer;/** * SQL语句映射类 * @author linbingwen * @time 2015.5.11 */public interface EmployeerMapper {/** * 注意要和Employeer.xml的方法名对应 */public Employeer findEmployeerByID(int id);/** * 注意要和Employeer.xml的方法名对应 */public void addEmployeer(Employeer employeer);/** * 注意要和Employeer.xml的方法名对应 */public void deleteEmployeer(int id);/** * 注意要和Employeer.xml的方法名对应 */public void updateEmployeer(Employeer employeer);}5、测试:
(1)增加命令
上一讲【Mybatis】Mybatis入门概述及第一个Mybatis实例实现增删改查 中的方式:
/** * 增加 */public static void addEmployeer(Employeer employeer){SqlSession session = null;try {session = sqlSessionFactory.openSession(); //返回值是记录条数 int resultCount = session.insert("com.mucfc.model.EmployeerMapper.addEmployeer", employeer ); System.out.printf("当前插入的employeer_id :%d 当前插入数据库中条数:%d " , employeer.getEmployeer_id() ,resultCount); //获取插入对象的id System.out.println(""); session.commit() ; } 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();}}
(2)删除命令
上一讲【Mybatis】Mybatis入门概述及第一个Mybatis实例实现增删改查 中的方式:
/** * 删除 * */public static void deleteEmployeer(int id){SqlSession session = null;try {session = sqlSessionFactory.openSession(); //返回值是记录条数 int resultCount=session.delete("com.mucfc.model.EmployeerMapper.deleteEmployeer",id); System.out.println("当前删除数据库中条数: "+resultCount); //获取插入对象的id 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();}}
(3)查找命令
上一讲【Mybatis】Mybatis入门概述及第一个Mybatis实例实现增删改查 中的方式:
/** * 查找 */public static void findEmployeerById(int id) {SqlSession session = null;try {session = sqlSessionFactory.openSession();Employeer employeer = (Employeer) session.selectOne("com.mucfc.model.EmployeerMapper.findEmployeerByID", 1);if (employeer == null)System.out.println("null");elseSystem.out.println(employeer);} finally {session.close();}}
改成以接口编程的方式:
/** * 查找 */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");elseSystem.out.println(employeer);} finally {session.close();}}
(4)修改命令
上一讲【Mybatis】Mybatis入门概述及第一个Mybatis实例实现增删改查 中的方式:
/** * 更改 */public static void updateEmployeer(Employeer employeer){SqlSession session = null;try {session = sqlSessionFactory.openSession(); session.update("com.mucfc.model.EmployeerMapper.updateEmployeer",employeer); 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();}}
这是一个完整的测试:
package com.mucfc.test;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;import com.mucfc.mapper.EmployeerMapper;import com.mucfc.model.Employeer;public class MybatisTest {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");elseSystem.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);}}
测试结果:
插入了4条数据,ID为25~28
然后27号被删除
29号被修改
本文示例工程免费下载
林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka
- Mybatis接口编程方式实现增删改查
- Mybatis接口编程方式实现增删改查
- Mybatis接口编程方式实现增删改查
- SSM搭建-Mybatis接口编程方式实现增删改查 (17)
- 20、SSM框架-Mybatis接口编程方式实现增删改查 (2)
- mybatis实战教程之开发环境搭建、以接口的方式编程、实现数据的增删改查
- Mybatis用接口XML方式进行增删改查
- Mybatis--接口式编程及增删改查
- Mybatis-实现增删改查
- MyBatis实现增删改查
- mybatis实现增删查改
- mybatis通过接口实现增删改查方法
- MyBatis使用接口来实现增删改查
- MyBatis(三)增删改查--基于接口
- mybatis-springmvc+mybatis实现增删改查
- Mybatis学习(五)mybatis环境下以接口的方式进行的增删查改
- mybatis ---- 实现数据的增删改查
- mybatis实现的增删改查例子
- 以一个文本内容来筛选元素
- ios笔记
- 【HTTP】Fiddler(三)- Fiddler命令行和HTTP断点调试
- Android 系统分区分析
- Eclipse动画讲解常用快捷键
- Mybatis接口编程方式实现增删改查
- 通过IO操作,写日志
- ant简介
- jquery 筛选元素方法
- EditText获取焦点并弹出软键盘
- ez-css布局
- 开源CAD/CAE工具FreeCAD 0.15.4671 Win32_64 2CD
- 常用类String
- spring的配置文件中引入其他配置