MyBatis HelloWorld
2016-03-16 11:05
316 查看
一、MyBatis简介
iBatis是apche的一个开源项目,2010年迁移到google code后改名为MyBatis,2013年前已到github.MyBatis是一个基于java的持久层框架,与hibernate相比更加简单。关于MyBatis和Hibernate的对比,可参考这篇博客: Hibernate与 MyBatis的比较.二、MyBatis特点
开源的优秀持久层框架sql语句与代码分离
面向配置编程
支持复杂数据映射
动态sql
三、MyBatis开发环境搭建
工程目录:3.1下载jar包
mybatis-3.2.8.zip(3.2.8之后的jar包没有log4j,这一点我暂时也不知道为什么)mysql-connector,选择JDBC Driver for MySQL下载。
3.2在mysql中新建数据库
MyBatis是一个持久层框架,也就是和数据库打交道的,mysql新建一个数据库用来做测试。[code]create database book
建立一张user表:
[code]Create Table: CREATE TABLE `User` ( `id` int(10) NOT NULL AUTO_INCREMENT, `username` varchar(20) NOT NULL, `passWord` varchar(20) NOT NULL, PRIMARY KEY (`id`) )
插入几条记录:
[code]+----+----------+------------+ | id | username | passWord | +----+----------+------------+ | 1 | 小华 | xiaohua | | 2 | 柯南 | 666666 | | 3 | 慕白 | 123456 | | 4 | 小明 | xiaoming12 | +----+----------+------------+
这样数据库准备好了,也可以在mysql图形界面中操作。
3.3配置开发环境
3.3.1新建java project
在eclipse中新建java project,命名为Mybatis HelloWorld3.3.2导入jar包
单击工程名右键->build path->config build path->add external jars,加入以下jar包mysql-connector-java-5.1.38-bin.jar、
mybatis-3.2.8.jar、
asm-3.3.1.jar、
cglib-2.2.2.jar、
commons-logging-1.1.1.jar、
javassist-3.17.1-GA.jar、
log4j-1.2.17.jar、
log4j-api-2.0.2.jar、
log4j-core-2.0.2.jar、
slf4j-api-1.7.5.jar、
slf4j-log4j12-1.7.5.jar
3.3.3配置log4j
在src目录下添加log4j.properties,log4j可用来打印sql查询语句:[code]log4j.rootLogger=DEBUG, CONSOLE #Console log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.logger.java.sql.ResultSet=INFO log4j.logger.org.apache=INFO log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG
3.3.4 添加User.java
新建ucas.book.map、ucas.book.pojo、ucas.book.test包在ucas.book.pojo包下新建User实体:
[code]package ucas.book.pojo; public class User { private int id; private String username; private String password; public int getId() { return id; } public void setId(int 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; } }
3.3.5Mybatis配置文件
在ucas.book.map包下加入mybatis.xml和UserMapper.xml:数据库连接和相关配置信息写在mybatis.xml里面:
[code]<?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="ucas.book.pojo.User" /> </typeAliases> <environments default="development"> <environment id="development"> <!-- 事务管理类型,JDBC表示直接使用JDBC的提交和回滚设置,依赖于数据源得到的连接来管理事务 --> <transactionManager type="JDBC" /> <!-- 数据库连接池POOLED表示使用数据库连接池 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/book?useSSL=true" /> <property name="username" value="root" /> <property name="password" value="napoay" /> </dataSource> </environment> </environments> <mappers> <!-- SQL代码和映射信息配置文件 --> <mapper resource="ucas/book/map/UserMapper.xml" /> </mappers> </configuration>
sql代码写在UserMapper.xml中:
[code]<?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必须是唯一的,建议用该文件所在的包路径全类名 --> <mapper namespace="ucas.book.map.UserMapper"> <!-- select:表示这是一个查询操作 --> <!-- id:用来配合namespace来定位这个操作,也就是在调用时,将采用ucas.book.pojo.User.getUserById --> <!-- resultType:表示返回值类型,必须是全类名,MyBatis将自动为我们将查询结果封装成Student对象 --> <!-- parameterType:表示传进来的参数的类型,因为传的是id主键,所以是int型 --> <select id="getUserById" parameterType="int" resultType="ucas.book.pojo.User"> <!-- #{id}:表示占位符,也就是调用时必须为其传一个id参数进来,注意是#不是$ --> select * from User where id = #{id} </select> </mapper>
<select></select>中写的是通过id查询记录的sql语句。
3.3.6测试代码
[code]package ucas.book.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 ucas.book.pojo.User; public class TestUser { public static void main(String[] args) { String resource = "ucas/book/map/mybatis.xml"; Reader reader = null; SqlSession session; try { reader = Resources.getResourceAsReader(resource); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader); session = factory.openSession(); User user = session.selectOne("getUserById", 1); System.out.println("\nusername:" + user.getUsername()); session.close(); } }
结果:
相关文章推荐
- Linux内核的整体架构
- maven中dependencies与dependencyManagement的区别
- request和response中文乱码
- 获取当前的日期时间 格式“yyyy-MM-dd HH:MM:SS"
- 如何在maven项目的pom.xml文件中添加jar包
- 3月3号周练——2015 Multi-University Training Contest 7
- 《Linux内核设计与实现》第一二章读书笔记
- axis2 以 RPC的方式访问webservice
- Selenium - How does the Selenium WebDriver work?
- Android界面设计适配不同屏幕的尺寸和密度解读
- python abc
- 二叉树的存储和构造例子
- iOS沙盒机制
- java中subString、split、stringTokenizer三种截取字符串方法的性能比较
- IOS中修改导航默认标题颜色、字体
- 图论
- opencv摄像头标定学习总结
- sysbench 0.5 oltp测试笔记
- MySQL锁
- json对象与字符串互转