本人初学,内容不严谨,大神请无视
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。iBATIS一词来源于“internet”和“abatis”的组合,iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
使用步骤
1.创建maven项目
2.设置pom文件
<?xml version="1.0" encoding="UTF-8"?> <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>Mybatisdemo</groupId> <artifactId>Mybatisdemo</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <!--mysql jar包--> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.28</version> </dependency> <dependency> <!--mybatis jar包--> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.2</version> </dependency> <dependency> <!--log4j日志文件--> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.12</version> </dependency> <dependency> <!--junit--> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> </dependencies> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </build> </project>
3 设置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> <!--导入database配置文件--> <properties resource="database.properties"></properties> <settings> <setting name="logImpl" value="LOG4J"/> </settings> <!--environments环境--> <environments default="development"> <!--environment环境变量--> <environment id="development"> <!--transactionManager 事务管理,采用JDBC事务--> <transactionManager type="JDBC"></transactionManager> <!--dataSource 数据源,sPOOLED是mybatis自带的数据源--> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"></property> <property name="url" value="${jdbc.url}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> </dataSource> </environment> </environments> <mappers> <mapper resource="com/bdqn/dao/TUserMapper.xml"/> </mappers> </configuration>
导入的database.properties
jdbc.driver=com.mysql.jdbc.Driver mysql驱动 jdbc.url=jdbc:mysql://localhost:3306/tcmp 数据库路径 jdbc.username=root 登录用户名 jdbc.password=3306 密码
log4j.properties
log4j.rootLogger=DEBUG,CONSOLE,file log4j.logger.cn.smbms.dao=debug log4j.logger.com.ibatis=debug log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug log4j.logger.java.sql.Connection=debug log4j.logger.java.sql.Statement=debug log4j.logger.java.sql.PreparedStatement=debug log4j.logger.java.sql.ResultSet=debug log4j.logger.org.tuckey.web.filters.urlrewrite.UrlRewriteFilter=debug log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.Threshold=error log4j.appender.CONSOLE.Target=System.out log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern= [%p] %d %c - %m%n log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.DatePattern=yyyy-MM-dd log4j.appender.file.File=log.log log4j.appender.file.Append=true log4j.appender.file.Threshold=error log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n log4j.logger.com.opensymphony.xwork2=error
4创建Java实体类
package com.bdqn.entity; public class Tuser { private Integer id; private String userName,password,nickName; 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 String getNickName() { return nickName; } public void setNickName(String nickName) { this.nickName = nickName; } @Override public String toString() { return "Tuser{" + "id=" + id + ", userName='" + userName + '\'' + ", password='" + password + '\'' + ", nickName='" + nickName + '\'' + '}'; } }
5创建mapper映射文件
<?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="com.bdqn.dao.TUserMapper"> <resultMap id="userMap" type="com.bdqn.entity.Tuser"> <result column="id" property="id"></result> <result column="user_name" property="userName"></result> select字句别名 <result column="password" property="password"></result> <result column="nick_name" property="nickName"></result> select字句别名 </resultMap> <!--编写SQL语句,定义节点id--> <select id="queryCount" resultType="int"> SELECT COUNT(1) FROM `t_user` </select> <select id="queryAll" resultMap="userMap"> SELECT * FROM `t_user` </select> </mapper>
创建完成后将mapper导入mybatis config
6创建MybatisUtil
将测试方法中重复的代码提取出来
public class MyBatisUtil { private static SqlSessionFactory sqlSessionFactory; static{ try { InputStream inputStream=Resources.getResourceAsStream("Mybatis-config.xml"); sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } public static SqlSession createSqlSesssion(){ return sqlSessionFactory.openSession(); } public static void closeSqlSession(SqlSession sqlSession){ if(sqlSession!=null){ sqlSession.close(); } } }
7编写测试类
查询
//测试mybatis操作数据库 public class TuserTest { @Test public void queryAll(){ SqlSession sqlSession=MyBatisUtil.createSqlSesssion(); List<Tuser> list=sqlSession.selectList("com.bdqn.dao.TUserMapper.queryAll"); for (Tuser user:list) { System.out.println(user); } MyBatisUtil.closeSqlSession(sqlSession); } @Test public void testQueryCount(){ SqlSession sqlSession=MyBatisUtil.createSqlSesssion(); int count=sqlSession.selectOne("com.bdqn.dao.TUserMapper.queryCount"); MyBatisUtil.closeSqlSession(sqlSession); System.out.println(count); } }
若是之前没设置错就会出查询结果
总结
上述示例,从核心配置文件,到映射文件,到获取SqlSessionFactory,到获取SqlSession,到java API操作,再到测试验证,完成了对Mybatis的基本操作。