设为首页 收藏本站
查看: 1590|回复: 0

[经验分享] MyBatis 1章 入门(使用MyBatis完成CRUD)

[复制链接]

尚未签到

发表于 2016-11-24 10:26:47 | 显示全部楼层 |阅读模式
  
MyBatis 2章 MyBatis与Spring整合


MyBatis 1章 入门(使用MyBatis完成CRUD)

   
   
  1、技术目标:


   


  • 在项目中加入MyBatis框架
  • 配置MyBatis框架
  • 完成简单的CRUD操作
   
   
  2、什么是MyBatis?


   


  • MyBatis 的前身是 iBatis,iBatis一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架
  • MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架
  • MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索
  • MyBatis使用简单的XML或注解用于配置和原始映射
   
  3、使用准备


  注意:本案例所使用数据库为MySQL 5.5.12


  3.1)在MySQL数据库test中创建表film(电影表)并添加测试数据,SQL语句如下:

   

--创建影片表
CREATE TABLE `film` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`fname` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
INSERT INTO `film` VALUES ('1', '刀见笑');
INSERT INTO `film` VALUES ('2', '加勒比海盗4');
INSERT INTO `film` VALUES ('3', '第九鹰团');
INSERT INTO `film` VALUES ('4', '速度与激情5');
INSERT INTO `film` VALUES ('5', '雷神');
INSERT INTO `film` VALUES ('6', '最爱');
INSERT INTO `film` VALUES ('7', '宇宙英雄之超银河传说');
INSERT INTO `film` VALUES ('8', '危情三日');
              3.2)项目中导入jar包(本文已提供下载):


  mybatis-3.0.4.jar(本案例所使用的mybaties库)
  mysql-connector-java-5.1.13-bin.jar(MySQL驱动)
  3.3)在项目中创建如下包:


  com.xxx.dao(放置数据访问接口以及Mapper配置文件)
  com.xxx.pojo(放置实体类)
  com.xxx.test(放置测试类) 


  3.4)加入MyBatis配置文件mybatis-config.xml放在src(类路径)下,内容如下:
   

<?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>
<settings>
<!-- changes from the defaults -->
<setting name="lazyLoadingEnabled" value="false" />
</settings>
<typeAliases>
<!--这里给实体类取别名,方便在mapper配置文件中使用-->
<typeAlias alias="Film" type="com.xxx.pojo.Film"/>
</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"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!--这里添加的是执行CRUD操作的接口对应的配置文件(xml文件)-->
<mappers>
<mapper resource="com/xxx/dao/FilmMapper.xml"/>
</mappers>
</configuration>
   
  4、编写POJO类Film


  代码如下:
   

package com.xxx.pojo;
public class Film {
// Fields
private Long id;
private String fname;
// Constructors
/** default constructor */
public Film() {
}
// Property accessors
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public String getFname() {
return this.fname;
}
public void setFname(String fname) {
this.fname = fname;
}
}
   
  5、编写数据访问(CRUD)接口FilmMapper


  代码如下:
   

package com.xxx.dao;
import java.util.List;
import java.util.Map;
import com.xxx.pojo.Film;
/**
* 电影信息数据访问接口
*/
public interface FilmMapper {
/**
* 功能:查询所有电影
* @return
*/
public List<Film> getAllFilm();
/**
* 功能:按编号获取电影
* @return
*/
public Film getFilmById(int id);
/**
* 功能:查询并排序
* @param params
* @return
*/
public List<Film> getAllFilmOrder(Map<String, Object> params);
/**
* 功能:添加影片
* @param film
*/
public void insertFilm(Film film);
/**
* 功能:修改影片
* @param film
*/
public void updateFilm(Film film);
/**
* 功能:删除影片
* @param id
*/
public void deleteFilm(int id);
}
  6、编写Mapper配置文件FilmMapper.xml


  注意:FilmMapper.xml配置文件与FilmMapper接口放在同一路径下


  文件代码如下:



<?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.xxx.dao.FilmMapper">
<!-- 查询所有电影信息,对应FilmMapper接口中的getAllFilm方法 -->
<select id="getAllFilm" resultType="Film">
select * from film
</select>
<!-- 按电影编号查询电影信息,对应FilmMapper接口中的getFilmById方法 -->
<select id="getFilmById" parameterType="int" resultType="Film">
select * from film where id=#{id}
</select>
<!-- 按要求排序 ${变量名}表示将变量的值原样输出,就是拼接字符串 -->
<select id="getAllFilmOrder" parameterType="map" resultType="Film">
select * from film where 1 = 1
<if test="orderKey != null">
order by ${orderKey}
</if>
</select>
<!-- 添加影片 -->
<insert id="insertFilm" parameterType="Film" keyProperty="id"
useGeneratedKeys="true">
insert into film (fname) values (#{fname});
</insert>
<!-- 修改影片 -->
<update id="updateFilm" parameterType="Film">
update film
<trim prefix="set" suffixOverrides=",">
<if test="fname != null">
fname = #{fname}
</if>
</trim>
where id = #{id}
</update>
<!-- 删除影片 -->
<delete id="deleteFilm" parameterType="int">
delete from film where id = #{id}
</delete>
</mapper>
   
   
  7、编写测试类TestMyBaties,对CRUD进行测试


  代码如下:



package com.xxx.test;
import java.io.IOException;
import java.io.Reader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import junit.framework.TestCase;
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.xxx.dao.FilmMapper;
import com.xxx.pojo.Film;
public class TestMyBaties extends TestCase {
//指定MyBatis配置文件
private static final String RESOURCE = "mybatis-config.xml";
/**
* 共6步操作完成CRUD
* @throws IOException
*/
public void testBaties() throws IOException{
//1、指定MyBaties配置文件
Reader reader = Resources.getResourceAsReader(RESOURCE);
//2、创建SqlSessionFactory()
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = null;
try {
//3、获取SqlSession
session = sessionFactory.openSession();
//4、获取DAO接口对象
FilmMapper mapper = session.getMapper(FilmMapper.class);
//5、CRUD操作
//5.1--添加影片
Film film = new Film();
film.setFname("笑傲江湖");
mapper.insertFilm(film);
session.commit();//添加、修改、删除操作最后需要提交事务
//5.2--获取所有电影信息
List<Film> filmList = mapper.getAllFilm();
//显示所有电影信息
for(Film filmObj : filmList){
System.out.println("电影ID:" + filmObj.getId() + " 电影名:" + filmObj.getFname());
}
//5.3--查询排序
Map<String, Object> params = new HashMap<String, Object>();
params.put("orderKey", "id asc");
filmList = mapper.getAllFilmOrder(params);
//显示所有电影信息
for(Film filmObj : filmList){
System.out.println("电影ID:" + filmObj.getId() + " 电影名:" + filmObj.getFname());
}
//5.4--修改影片"笑傲江湖"为"喜剧之王"
film = mapper.getFilmById(10);
film.setFname("喜剧之王");
mapper.updateFilm(film);
session.commit();
//5.5--删除影片"笑傲江湖",其ID为10
mapper.deleteFilm(10);
session.commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
//6、关闭SqlSession
if(session != null){
session.close();
}
}
}
}
  MyBatis 2章 MyBatis与Spring整合

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-304879-1-1.html 上篇帖子: mybatis 缓存的简单配置 下篇帖子: Mybatis Cache探究
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表