Mybatis(1)----------简介及第一开发程序
1、引言:
Mybatis是⼀个基于java语⾔的持久层的框架,主要⽤来简化数据库的访问操作,内部封装 了原来的jdbc代码,替换了原有项⽬开发中的jdbc技术,他可以⾃动完成对象与关系的映射 (OR),极⼤简化了我们的开发,提⾼开发效率。
2、JDBC中存在的问题
1).⼤量的代码冗余 (处理结果集的时候存在⼤量的冗余)
2).不能完成数据库和实体的⾃动转换 (需要⼿动封装实体,不能⾃定封装实体类)
3、环境搭建:
1)引入核心jar:
2)配置提示文件
window--->preferences
输入"xml ",找到Xml CataLog选项并点击右侧的Add....
在弹出的选项卡中选择本地磁盘上mybatis配置⽂件的提示信息,并输⼊提示的 key
注意:
主配置⽂件:
Public ID: -//mybatis.org//DTD Config 3.0//EN
Address: http://mybatis.org/dtd/mybatis-3-config.dtd
映射⽂件:
Public ID: -//mybatis.org//DTD Mapper 3.0//EN
Address: http://mybatis.org/dtd/mybatis-3-mapper.dtd
3)创建Mybatis的主配置文件
a)在项⽬的src⽬录中⿏标右键,选择new,在搜索中搜索xml 选择XML Basic Template
b)点击下⼀步,在输⼊框中输⼊⽂件的名称 "mybatis-config.xml"
c)点击Next 下⼀步,选择Create XML file from DTD file
d)点击Next 下一步,选择DTD⽂件,选择配置的主配置⽂件的dtd
e)点击Next 下一步,直接finish即可;
生成配置文件如下:
4)书写连接相关的配置
<?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>
<!-- 配置连接相关的参数 -->
<environments default="dev"><!-- 配置测试环境 --><environment id="dev"><!-- 事务管理方式 Type属性:是否使用事务,固定写为JDBC --><transactionManager type="JDBC"/><!-- 配置数据源 type属性:是否使用连接池POOLED(是)UNPOOL(不是)--><dataSource type="POOLED" ><property name="driver" value="oracle.jdbc.driver.OracleDriver"/><property name="url" value="jdbc:oracle:thin:@localhost:1521:ORCL"/><property name="username" value="hr"/><property name="password" value="123"/></dataSource></environment>
</environments><!-- 进行注册 -->
<mappers><!-- 写UserDaoMapper.xml所在的路径 --><mapper resource="com/baizhi/dao/UserDaoMapper.xml" />
</mappers></configuration>
5)创建数据库
create table s_user (id number premary key,username varchar2(20),password varchar2(20),birthday date,xingzuo varchar2(20),shuxiang varchar2(20),
);
mapper.xml(在dao包中)
<?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" ><!-- namespace:是mapping所在类的权限定类名 -->
<mapper namespace="com.baizhi.dao.UserDao"><!--根据id查询 parameterType:传入数据的类型 id:dao中对应的方法名 --><select id="selectById" parameterType="Integer" resultType="com.baizhi.entity.User">select id,username,password,birthday,xingzuo,shuxiang from s_user where id = #{id}</select><!--根据username和password查询 两个数据作为传参,在dao中加入@param绑定数据 resultType:返回值类型--><select id="selectByNameAndPassword" resultType="com.baizhi.entity.User">select id,username,password,birthday,xingzuo,shuxiang from s_user where username=#{username} and password=#{password}</select><!--查询所有 id:dao类中对应的方法名 --><select id="selectAll" resultType="com.baizhi.entity.User">select id,username,password,birthday,xingzuo,shuxiang from s_user</select><!--插入数据 --><insert id="insert" parameterType="com.baizhi.entity.User">insert into s_user values(#{id},#{username},#{password},#{birthday},#{xingzuo},#{shuxiang})</insert><!--更新数据--><update id="update" parameterType="com.baizhi.entity.User">update s_user set username=#{username},password=#{password} where id=#{id}</update><!--删除数据--><delete id="delete" parameterType="String">delete from s_user where username=#{username}</delete></mapper>
书写:entity
import java.io.Serializable;
import java.util.Date;public class User implements Serializable{private Integer id;private String username;private String password;private Date bir;private String xingzuo;private String shuxiang;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Date getBir() {return bir;}public void setBir(Date bir) {this.bir = bir;}public String getXingzuo() {return xingzuo;}public void setXingzuo(String xingzuo) {this.xingzuo = xingzuo;}public String getShuxiang() {return shuxiang;}public void setShuxiang(String shuxiang) {this.shuxiang = shuxiang;}public User(Integer id, String username, String password, Date bir,String xingzuo, String shuxiang) {super();this.id = id;this.username = username;this.password = password;this.bir = bir;this.xingzuo = xingzuo;this.shuxiang = shuxiang;}public User() {super();// TODO Auto-generated constructor stub}@Overridepublic String toString() {return "User [id=" + id + ", username=" + username + ", password="+ password + ", bir=" + bir + ", xingzuo=" + xingzuo+ ", shuxiang=" + shuxiang + "]";}}
书写DAO:
import java.util.List;import org.apache.ibatis.annotations.Param;import com.baizhi.entity.User;public interface UserDao {public User selectById(Integer id);//@param进行数据绑定public User selectByNameAndPassword(@Param("username")String username,@Param("password")String password);public List<User> selectAll();public void insert(User user);public void update(User user);public void delete(String username);
}
Test测试类
import java.io.IOException;
import java.io.Reader;
import java.util.Date;
import java.util.List;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 org.junit.Test;import com.baizhi.dao.UserDao;
import com.baizhi.entity.User;public class TestM {@Testpublic void testSelectById() throws IOException {//读取配置文件Reader resourceAsReader = Resources.getResourceAsReader("mybatis-config.xml");//创建一个sqlSessionFactory对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsReader);//获取sqlSession连接SqlSession sqlSession = sqlSessionFactory.openSession();//通过sqlSession连接获取userdao对象UserDao userDao = sqlSession.getMapper(UserDao.class);User user = userDao.selectById(5);System.out.println(user);}@Testpublic void testfindByUsernameAndPassword() throws IOException{UserDao userDao = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-config.xml")).openSession().getMapper(UserDao.class);User user = userDao.selectByNameAndPassword("sqc", "123");System.out.println(user);}@Testpublic void testSelectAll() throws IOException{UserDao userDao = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-config.xml")).openSession().getMapper(UserDao.class);List<User> list = userDao.selectAll();System.out.println(list);}@Testpublic void testInsert() throws IOException{SqlSession sqlSession = null;try{Reader resourceAsReader = Resources.getResourceAsReader("mybatis-config.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsReader);sqlSession = sqlSessionFactory.openSession();UserDao dao = sqlSession.getMapper(UserDao.class);User user = new User(5,"hzq","123",new Date(),"天平座","鼠");dao.insert(user);sqlSession.commit();}catch(Exception e){sqlSession.rollback();throw new RuntimeException("~~~~~~~~~~~~");}}@Testpublic void testUpdate() throws IOException{SqlSession sqlSession = null;try{Reader resourceAsReader = Resources.getResourceAsReader("mybatis-config.xml");sqlSession = new SqlSessionFactoryBuilder().build(resourceAsReader).openSession();UserDao userDao = sqlSession.getMapper(UserDao.class);User user = new User(6,"sqc","123",null,null,null);userDao.update(user);sqlSession.commit();}catch(Exception e){sqlSession.rollback();throw new RuntimeException("~~~~~~~~~");}}@Testpublic void testDelete() throws IOException{SqlSession sqlSession = null;try{Reader resourceAsReader = Resources.getResourceAsReader("mybatis-config.xml");sqlSession = new SqlSessionFactoryBuilder().build(resourceAsReader).openSession();UserDao userDao = sqlSession.getMapper(UserDao.class);userDao.delete("hzq");sqlSession.commit();}catch(Exception e){sqlSession.rollback();throw new RuntimeException("~~~~~~~~~");}}
}
Mybatis(1)----------简介及第一开发程序相关推荐
- C++桌面应用开发(Qt学习)--Qt简介及第一个Qt程序
Qt简介 历史: 1991 奇趣科技 优点:跨平台:接口简单,易上手:简化了内存管理操作 成功案例:Linux桌面环境:WPS:谷歌地图等 创建一个Qt程序 点击创建项目后,选择项目路径以及给项目起名 ...
- SpringMVC简介及第一个MVC程序
文章目录 SpringMVC 一. 关于SpringMVC 1.MVC 2.Spring 1.Spring简介 2.Spring的7个模块 3.Spring优点 4.Spring核心机制 5.Spri ...
- 透过现象看本质,究竟为什么阿里巴巴爱招Java开发程序员?
为什么阿里巴巴最爱招Java开发程序员? 因为java本身设计特性就是大规模工程语言.它有三个根本性的特征 1.适应各种业务,你目前知道的几乎所有的业务都可以用java写.有很多语言做不到这一点. 2 ...
- Mybatis框架简介
一.Mybatis框架简介 MyBatis框架是一个开源的数据持久层框架.它的内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询.存储过程和高级映射,几乎消除了所有的JDBC代码和参数的手工 ...
- MyBatis-学习笔记06【06.使用Mybatis完成DAO层的开发】
Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...
- java开发 职业技能_java编程开发程序员需要具备哪些职业技能
随着互联网的不断发展,java编程开发可以说是目前学习人数和应用范围非常多的一种编程语言了,而今天我们就一起来了解一下,java编程开发程序员需要具备哪些职业技能. 1.数据结构和算法分析 数据结构和 ...
- MyBatis之Mapper动态代理开发
MyBatis之Mapper动态代理开发 2017/9/30 1.SqlSession的使用范围 1.SqlSessionFactoryBuilder SqlSessionFactoryBuilder ...
- 云计算概况及第一个Azure程序
08/04/2012 由于有不少人想尝试Azure,咨询注册问题,更新Azure支持部分. 简介 尝试Agile的方式来写博客.本文主要覆盖以下两个故事.故事一:作为一个没有开发过云计算平台的读者,我 ...
- Redux简介以及Redux应用程序中的状态更新方式
by Syeda Aimen Batool 通过Syeda Aimen Batool Redux简介以及Redux应用程序中的状态更新方式 (An intro to Redux and how sta ...
- 【Java学习】JDK安装及第一个java程序
一直听说Java是C++的升级和优化,却一直没用过,今天来简单学习一下. JDK安装及第一个java程序 一.JDK安装 二.第一个java程序 三.系统环境变量配置 一.JDK安装 JDK(Java ...
最新文章
- 用于计算机视觉领域的python第三方库是什么_大量Python开源第三方库资源分类整理,含菜鸟教程章节级别链接...
- NIO 之 Buffer 图解
- linux下多种锁的比较
- SAP CRM user参数CRM_UI_PROFILE是在哪行ABAP代码里读取的
- Java get set6_Java oop 的题与答案6:使用程序模拟英雄金币数,get与set知识,访问修饰符(有图)...
- Android Studio实现QQ的注册、登录和好友列表页面的跳转
- Ubuntu 查看磁盘挂载和磁盘剩余容量
- github issue 搜索_启用 GitHub Issue 作为博客留言系统 - Farseerfc的小窝
- CAD迷你画图2020R11
- 百度指数 爬虫 其实主要是破解
- 300句子与7000单词
- springboot集成Swagger3.0
- WebAPI第四天学习总结—— 常见网页特效案例(轮播图、节流阀、返回顶部、筋斗云案例)
- 计算机硬件介绍之CPU与多线程
- 基础拓扑学笔记(1)——欧拉定理
- 解决 raise ReadTimeoutError(self._pool, None, ‘Read timed out.‘)
- AT指令集详解[zt]
- 月报总结|3月Moonbeam最新进展
- 利用Unity引擎C#语言实现MySql数据库读写
- iOS文件下载(二)