1.Mybatis HelloWorld工程
来源:互联网 发布:mac pro win10性能 编辑:程序博客网 时间:2024/05/21 10:29
1.mybatis介绍
MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。支持自定义SQL映射,支持存储过程及一些高级映射;它支持两种配置方式,分别是Annotation(注解),XML。
Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
2.搭建maven工程
创建maven工程
补充目录结构
引入相关依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.cjq</groupId> <artifactId>cjq-mybatis1</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>cjq-mybatis1</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!--MyBatis相关--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.8</version> </dependency> <!--数据库相关--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.35</version> </dependency> </dependencies></project>
创建核心配置文件(主要是数据源)
<?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="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="admin"/> </dataSource> </environment> </environments> <mappers> <!-- <mapper resource="com/cjq/vo/DeptMapper.xml"/> --> </mappers></configuration>
创建vo
package com.cjq.vo;/** * Created by cjq on 2017/9/16. */public class Dept { Integer deptno; String dname; String loc; @Override public String toString() { return "Dept{" + "deptno=" + deptno + ", dname='" + dname + '\'' + ", loc='" + loc + '\'' + '}'; } public Integer getDeptno() { return deptno; } public void setDeptno(Integer deptno) { this.deptno = deptno; } public String getDname() { return dname; } public void setDname(String dname) { this.dname = dname; } public String getLoc() { return loc; } public void setLoc(String loc) { this.loc = loc; }}
创建映射文件(映射的是SQL语句)
<?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="dept"> <!-- namespace的值可以自定义--> <!--id标识,resultType是返回值类型,parameterType方法传入的参数类型 --> <!--查询所有--> <select id="getAll" resultType="com.cjq.vo.Dept"> select * from dept </select> <!--根据id删除--> <delete id="delete" parameterType="int"> delete from dept where deptno=#{deptno} </delete> <!--新增--> <insert id="save" parameterType="com.cjq.vo.Dept"> insert into dept values(#{deptno},#{dname},#{loc}) </insert> <!--根据id查询--> <select id="getDept" parameterType="int" resultType="com.cjq.vo.Dept"> select * from dept where deptno=#{value} </select></mapper>
在核心配置文件中引入映射文件
<?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="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="admin"/> </dataSource> </environment> </environments> <mappers> <mapper resource="mapper/DeptMapper.xml"/> </mappers></configuration>
测试
package com.cjq.vo;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 java.io.IOException;import java.io.InputStream;import java.util.List;/** * Created by cjq on 2017/9/16. */public class DeptTest { public static void main(String[] args) throws IOException { //测试查询 String resource="configuration.xml"; //获取资源的流 InputStream r= Resources.getResourceAsStream(resource); //获得session工厂 SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(r); //获得Session 会话 应用程序--mybatis之间的会话--->操作mybatis SqlSession sqlSession=factory.openSession(); //dept相当于映射文件中的namespace,getAll对应id List<Dept> list=sqlSession.selectList("dept.getAll"); for(Dept d:list){ System.out.println(d); } sqlSession.close(); }}
3.封装获取SqlSession的方法,编写dao层
package com.cjq.dao;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 java.io.IOException;import java.io.InputStream;/** * Created by cjq on 2017/9/16. */public class SessionFactory { static SqlSessionFactory factory=null; static{ //测试查询 String resource="configuration.xml"; //获取资源的流 InputStream r= null; try { r = Resources.getResourceAsStream(resource); } catch (IOException e) { e.printStackTrace(); } //获得session工厂 factory=new SqlSessionFactoryBuilder().build(r); } public static SqlSession getSession(){ //openSession默认事物是手动提交的 return factory.openSession(); }}
package com.cjq.dao;import com.cjq.vo.Dept;import org.apache.ibatis.session.SqlSession;import java.util.List;/** * Created by cjq on 2017/9/16. */public class DeptDao { SqlSession sqlSession= SessionFactory.getSession(); public List<Dept> getAll(){ List<Dept> list= sqlSession.selectList("dept.getAll"); return list; } public void save(Dept dept){ sqlSession.insert("save",dept); sqlSession.commit(); }}
修改测试类
package com.cjq.vo;import com.cjq.dao.DeptDao;import java.io.IOException;import java.util.List;/** * Created by cjq on 2017/9/16. */public class DeptTest { public static void main(String[] args) throws IOException { DeptDao dao=new DeptDao(); List<Dept> list=dao.getAll(); for(Dept d:list){ System.out.println(d); } Dept dept=new Dept(); dept.setDeptno(9); dept.setDname("test"); dept.setLoc("test"); dao.save(dept); }}
阅读全文
0 0
- 1.Mybatis HelloWorld工程
- MyBatis HelloWorld
- mybatis -- helloworld
- Mybatis HelloWorld
- MyBatis--HelloWorld
- MyBatis HelloWorld
- 【Mybatis】Helloworld
- MyBatis HelloWorld
- Mybatis-HelloWorld
- 创建Android HelloWorld工程
- Android学习--helloworld工程
- mvc2工程helloworld
- 创建RESTEasy helloworld工程
- 001.HelloWorld 命令行工程
- 001.HelloWorld 命令行工程
- SpringBoot搭建HelloWorld工程
- mybatis的HelloWorld
- HelloWorld之MyBatis
- LeetCode4. Median of Two Sorted Arrays
- [爬山算法] [BZOJ5041] LWD的降临
- [NOIP模拟] sort
- 用JS禁止微信浏览器下滑出现黑屏
- Android 5.0以下,使用android studio 出现错误com.android.build.api.transform.TransformException:
- 1.Mybatis HelloWorld工程
- java反射技术总结
- ios-MVC VS MVVM
- 网络请求数据回来中文乱码问题解决方法
- 2017 ACM-ICPC 亚洲区(西安赛区)网络...
- cmd中netstat 命令详解(二)
- 抽象类真的也可以被实例化(Java)
- MyISAM的锁与InnoDB的锁区别
- 计算器