mybatis3 简单入门
来源:互联网 发布:数据粒度举例 编辑:程序博客网 时间:2024/04/29 16:15
官网文档:http://mybatis.github.io/mybatis-3/zh/index.html
源码:https://github.com/mybatis/mybatis-3
maven依赖:
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.6</version></dependency>
不管使用哪种持久层框架都先得有POJO和DAO
package me.poplaris.mybatis.bean;/** * User: poplar * Date: 14-7-4 下午5:56 */public class User { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
package me.poplaris.mybatis.dao;import me.poplaris.mybatis.bean.User;/** * User: poplar * Date: 14-7-4 下午5:59 */public interface UserDao { public User getUserId(int id);}
建立好POJO和DAO后我们开始使用MyBatis每 一 个 MyBatis 的 应 用 程 序 都 以 一 个 SqlSessionFactory 对 象 的 实 例 为 核 心 。 SqlSessionFactory 对 象 的 实 例 可 以 通 过 SqlSessionFactoryBuilder 对 象 来 获 得,我们先介绍使用XML来构建
@Test public void buildUseXml() throws IOException {// String resource = "org/mybatis/example/mybatis-config.xml"; String resource = "mybatis-config.xml"; //从 XML 中构建 SqlSessionFactory Reader reader = Resources.getResourceAsReader(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); //从 SqlSessionFactory 中获取 SqlSession SqlSession session = sqlSessionFactory.openSession(); try { User user = session.selectOne("me.poplaris.mybatis.dao.UserDao.getUserId",1); } finally { session.close(); } }一个简单的XML配置文件最主要的是配置数据源和事务管理器:
<?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://127.0.0.1:3306/test?autoReconnect=true"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments></configuration>
有时候你可能想从properties来读取数据源配置,而不是写死在XML中。在mybatis-config中添加properties配置
<properties resource="config.properties"></properties>config.properties文件如下:
driver=com.mysql.jdbc.Driverurl=jdbc:mysql://127.0.0.1:3306/test?autoReconnect=trueusername=rootpassword=root
修改过后的mybatis-config:
<?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> <properties resource="config.properties"></properties> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments></configuration>
执行buildUseXml测试,出现异常
java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for me.poplaris.mybatis.dao.UserDao.getUserId这是因为Mapped中没有实现UserDao,在mybatis-config.xml中添加POJO别名和mappers配置
<?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> <properties resource="config.properties"></properties> <typeAliases> <typeAlias alias="User" type="me.poplaris.mybatis.bean.User"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <mappers> <mapper resource="mybatis/User.xml"/> </mappers></configuration>并实现UserDao,新增XML配置文件User.xml
<?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="me.poplaris.mybatis.dao.UserDao"> <select id="getUserId" parameterType="int" resultType="User"> select * from `user` where id = #{id} </select></mapper>User.xml中mapper的namespace对应我们定义的DAO接口类UserDao,id为getUserId的select操作对应UserDao里的getUserId(int id)方法
再次执行buildUseXml测试,打印出了正常数据,一个简单的使用XML配置来读取数据成功实现。
在buildUseXml中
session.selectOne("me.poplaris.mybatis.dao.UserDao.getUserId",1);因为我们在mapper中已经配置了这个namespace,所以这行代码有更简单安全的方式来代替
UserDao userDao = session.getMapper(UserDao.class);User user = userDao.getUserId(1);所以整个buildUseXml测试变成了这样:
@Test public void buildUseXml() throws IOException {// String resource = "org/mybatis/example/mybatis-config.xml"; String resource = "mybatis-config.xml"; //从 XML 中构建 SqlSessionFactory Reader reader = Resources.getResourceAsReader(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); //从 SqlSessionFactory 中获取 SqlSession SqlSession session = sqlSessionFactory.openSession(); try {// User user = session.selectOne("me.poplaris.mybatis.dao.UserDao.getUserId",1); UserDao userDao = session.getMapper(UserDao.class); User user = userDao.getUserId(1); System.out.println(user); } finally { session.close(); } }
使用XML配置实现mybatis操作已经简单的介绍完毕,更多详细的XML配置,动态SQL等可以参看官方文档
下面介绍不依赖XML配置来实现mybatis操作,下面的测试方法是使用JAVA程序来创建一个简单的配置实例
@Test public void buildUseAnno(){ String url = "jdbc:mysql://127.0.0.1:3306/test?autoReconnect=true"; String userName = "root"; String password = "root"; //数据源 DataSource dataSource = new MyDefaultDataSource(url,userName,password); //事务工厂 TransactionFactory transactionFactory = new JdbcTransactionFactory(); Environment environment = new Environment("development", transactionFactory, dataSource); Configuration configuration = new Configuration(environment); //绑定DAO mapper configuration.addMapper(UserDaoWithAnno.class); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration); SqlSession session = sqlSessionFactory.openSession(); try { UserDaoWithAnno userDao = session.getMapper(UserDaoWithAnno.class); User user = userDao.getUserId(1); System.out.println(user); List<User> userList = userDao.getUsers(); System.out.println(userList); } finally { session.close(); } }首先需要自己实现DataSource,MyDefaultDataSource核心的代码片段如下:
@Override public Connection getConnection(String username, String password) throws SQLException { return DriverManager.getConnection(url,username,password); }
运行buildUseAnno测试,出现异常
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): me.poplaris.mybatis.dao.UserDaoWithAnno.getUserId这是因为mapper绑定未完成,我们需要对具体的SQL操作做绑定使用这种方式配置主要是添加映射类。
configuration.addMapper(UserDaoWithAnno.class);
映射类是 Java 类,这些类包含 SQL 映射语句的注解从而避免了XML文件的依赖
package me.poplaris.mybatis.dao;import me.poplaris.mybatis.bean.User;import org.apache.ibatis.annotations.Select;import java.util.List;/** * User: poplar * Date: 14-7-4 下午5:59 */public interface UserDaoWithAnno { @Select("select * from user where id= #{id}") public User getUserId(int id); @Select("select * from user") public List<User> getUsers();}使用Select注解完成注册mapper,再次执行buildUseAnno测试,成功。
OK,简单的使用注解方式来完成mybatis操作也已经介绍完毕,更多的注解方案请参看官方文档,实例代码请点击这里
0 0
- mybatis3 简单入门
- Java:MyBatis3新手简单入门
- Mybatis3文档阅读(一)之简单入门
- MyBATIS3入门学习笔记
- mybatis3.2入门
- mybatis3.x 入门
- mybatis3--2.mybatis入门
- mybatis3入门总结
- Mybatis3 快速入门
- MyBatis3.1.1简单示例
- Mybatis3入门之xml方式
- Mybatis3入门之注解方式
- spring4+mybatis3+mysql 入门示例
- springmvc,mybatis3简单配置实例
- Mybatis3简单使用(PostgreSQL)
- 【Mybatis3学习入门】【二】Mybatis快速入门
- Mybatis3
- 一、Mybatis3入门之xml方式
- iPhone将变得更聪明:根据位置调整安全设置
- Training--叠加动作栏
- Android核心基础
- 使用chrome保存facebook中视频文件的方法
- 修改InputQuery 实现 DateTimePicker 的功能
- mybatis3 简单入门
- 谷歌眼镜发明者:我们的设备能替代你的大脑
- jvm工具整理--jstat
- 尼康数码相机照片误删怎么恢复 相机内存卡数据恢复
- JAVA的三种标准输入方法例子
- 转:学习多线程之互斥锁、条件变量-linux多线程初学者
- cocos2d-x3.x屏蔽触摸遮罩层屏蔽按钮
- ThinkPHP
- 基础框架(Fondation Framework)的线程安全