Hello Mybatis 01 第一个CRUD
来源:互联网 发布:ios完整项目源码 编辑:程序博客网 时间:2024/06/06 16:49
What's the Mybatis?
MyBatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO).
自己使用mybatis有大半年了,相比较厚重的hibernate和其他orm框架,mybatis更加的灵活轻巧,可以更好的配合数据库和sql语句来开发项目。
这篇开始,我希望可以写一个关于mybatis的快速教程,除了mybatis,中间还会贯穿一些mysql的资料和mybatis与其他框架的配置,这个系列也算是自己这段时间对使用mybatis框架的一个总结。
环境搭建
我使用的环境有
mysql:mysql5.5.37
jdk:openjdk1.7
eclipse:java ee-Kepler Service Release 2
我们还需要在mysql数据库中建立一个名字叫做blog的schema,并建立一个user表
1 CREATE TABLE `blog`.`user` (2 `id` INT NOT NULL AUTO_INCREMENT,3 `name` VARCHAR(45) NULL,4 `age` INT NULL,5 PRIMARY KEY (`id`));
还要记得给这个表加几条数据哟
1 INSERT INTO `blog`.`user` (`name`, `age`) VALUES ('Mybatis', '4');2 INSERT INTO `blog`.`user` (`name`, `age`) VALUES ('struts2', '7');3 INSERT INTO `blog`.`user` (`name`, `age`) VALUES ('hibernate', '13');
接着我们在eclipse中新建一个web项目。
将jdbc的驱动包mysql-connector-java-5.1.30-bin.jar放置到web-inf下的lib文件夹中去。
再到mybatis在github的主页上下载mybatis的jar包.
https://github.com/mybatis/mybatis-3/releases
我使用的版本是3.2.3(最新的版本是3.2.7)
当然,你也可以使用maven来管理mybatis的包,只需要在项目的pom.xml中添加.
1 <dependency>2 <groupId>org.mybatis</groupId>3 <artifactId>mybatis</artifactId>4 <version>3.2.3</version>5 </dependency>
第一个CRUD
我们在pro.app下新建一个model包,新建一个user类与数据库相对应的vo类。
1 package pro.app.model; 2 3 public class User { 4 private int id; 5 private String name; 6 private int age; 7 public User(){} 8 public User(String name, int age) { 9 this.name = name;10 this.age = age;11 }12 public int getId() {13 return id;14 }15 public void setId(int id) {16 this.id = id;17 }18 public String getName() {19 return name;20 }21 public void setName(String name) {22 this.name = name;23 }24 public int getAge() {25 return age;26 }27 public void setAge(int age) {28 this.age = age;29 }30 }
在pro.app.inter下建立UserDAO接口,在这个接口中定义一个根据id找到User的方法selectOne()。
1 package pro.app.inter;2 import org.apache.ibatis.annotations.Param;3 4 import pro.app.model.User;5 6 public interface UserDAO {7 public User selectOne(@Param("id")Integer id);8 }
在pro.app.mapper下建立UserMapper.xml文件。
1 <?xml version="1.0" encoding="UTF-8" ?>2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">4 <mapper namespace="pro.app.inter.UserDAO">5 <select id="selectOne" parameterType="int" resultType="User">6 select * from user where id = #{id,jdbcType=INTEGER}7 </select>8 </mapper>
<select></select>标签对来定义对应UserDAO中的selectOne()方法需要执行的sql语句。这也是mybatis的核心功能。
现在我们还需要在src源目录下放置一个Configuration.xml文件用于mybatis的配置。
<?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> <typeAliases> <typeAlias alias="User" type="pro.app.model.User"/> </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/blog?useUnicode=true&characterEncoding=utf-8"/> <property name="username" value="mybatis"/> <property name="password" value="mybatis"/> </dataSource> </environment> </environments> <mappers> <mapper resource="pro/app/mapper/UserMapper.xml"/> </mappers></configuration>
在配置文件中通过定义现在的environment, 来指定目前的开发状态,用jdbc作为事务和连接池的配置与mysql数据库相链接。
在mappers下写入需要用到的mybatis 需要用到的mapper文件。
现在我们可以建立一个类测试mybatis是不是工作了,在pro.test下建立一个userTest类。
1 package pro.app.test; 2 3 import java.io.Reader; 4 5 import org.apache.ibatis.io.Resources; 6 import org.apache.ibatis.session.SqlSession; 7 import org.apache.ibatis.session.SqlSessionFactory; 8 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 9 10 import pro.app.inter.UserDAO;11 import pro.app.model.User;12 13 public class UserTest {14 private static SqlSessionFactory sqlSessionFactory;15 private static Reader reader; 16 static{17 try{18 reader= Resources.getResourceAsReader("Configuration.xml");19 sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);20 }catch(Exception e){21 e.printStackTrace();22 }23 }24 public static SqlSessionFactory getSession(){25 return sqlSessionFactory;26 }27 public static void main(String[] args) {28 SqlSession session = sqlSessionFactory.openSession();29 try {30 UserDAO userDao = session.getMapper(UserDAO.class);31 User user = userDao.selectOne(1);32 System.out.println("name : "+user.getName());33 System.out.println("age : "+user.getAge());34 } finally {35 session.close();36 }37 }38 }
在这个程序中,我们通过io类库中的Reader类来读取mybatis的相关配置文件,并且使用mybatis里的 SqlSessionFactoryBuilder类构建一个SqlSessionFactory。
这个SqlSessionFactory就相当与mybatis配置文件的化生了,对应各种被操作的类而言,它就是整个项目中的上帝了,上帝不能老是出现吧,所以一般在一个项目中指挥有一个SqlSessionFactory出现。接着我们的程序又通过SqlSessionFactory来获得一个SqlSession,SqlSession 对象完全包含以数据库为背景的所有执行 SQL 操作的方法。通过这个SqlSession的实例化对象,可以获得UserDAO接口的一个实例,接下来就可以执行相应的方法了。
来运行这个程序啦,控制台输出了以下内容
1 name : mybatis2 age : 4
bingo!我们如愿通过mybatis获得了数据库的数据。
接下来我们可以在UserDAO和UserMapper中添加其他的配置完成CRUD的任务。
UserMapper.xml
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 4 <mapper namespace="pro.app.inter.UserDAO"> 5 <select id="selectOne" parameterType="int" resultType="User"> 6 select * from user where id = #{id,jdbcType=INTEGER} 7 </select> 8 <insert id="insertOne" parameterType="User"> 9 insert into user (name,age)10 values(11 #{name,jdbcType=VARCHAR},12 #{age,jdbcType=INTEGER}13 )14 </insert>15 <delete id="deleteOne" parameterType="java.lang.Integer" >16 delete from user17 where id = #{id,jdbcType=INTEGER}18 </delete>19 <update id="updateOne" parameterType="User">20 update user 21 set name=#{name,jdbcType=VARCHAR}, 22 age=#{age,jdbcType=INTEGER} 23 where id= #{id,jdbcType=INTEGER} 24 </update> 25 </mapper>
UserDAO.java
1 package pro.app.inter; 2 import org.apache.ibatis.annotations.Param; 3 4 import pro.app.model.User; 5 6 public interface UserDAO { 7 public User selectOne(@Param("id")Integer id); 8 9 public void insertOne(User user);10 11 public void deleteOne(@Param("id")Integer id);12 13 public void updateOne(User user);14 }
和select方法一样,通过update,delete,insert标签分别对updateOne()、deleteOne(),insertOne()方法,并编写相应的接口方法来实现对应的CRUD任务。
总结
通过一个简单的CRUD例子熟悉mybatis的基本实现。
转载:http://www.cnblogs.com/whthomas/p/3761543.html
- Hello Mybatis 01 第一个CRUD
- 01 第一个Hello world!程序
- 第一个Hello Vue!
- 第一个hello程序
- 第一个mybatis例子
- mybatis第一个helloworld
- 第一个MyBatis程序
- Mybatis 第一个Demo
- mybatis第一个问题
- 第一个Mybatis
- 第一个驱动程序---Hello world
- 第一个“Hello World”程序
- 第一个atlas "Hello world"
- 第一个dojo hello world
- 第一个dojo hello world
- 第一个dojo hello world
- 第一个android Hello word
- 第一个设备驱动hello
- linux服务器常用操作和命令
- 文本分类学习笔记(2)- 特征提取
- Android的文件读写小结
- C#上创建ActiveX步骤
- Android 三种Dialog 实现方式
- Hello Mybatis 01 第一个CRUD
- [分享]错误“应用程序Xcode的这个版本不能与此版本的OS X配合使用”以及Mac源码和IOS开发资料分享
- PAT乙级 A除以B (20)
- org.hibernate.HibernateException:
- 筛选list集合中是否存在要比较的对象
- XCode 7 快速切换代码窗口和文档窗口
- Unity3D研究院之将场景导出XML或JSON或二进制并且解析还原场景(四十二)
- 让进程在后台可靠运行的几种方法
- Greenplum 在Linux下的安装(centOS,RedHat)