1、导入mybaits jar包
手动导入mybaits github 下载地址 https://github.com/mybatis/mybatis-3/releases
maven导入依赖
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version></dependency>2、主配置文件
在github上下载源码包,并在\src\test\java\org\apache\ibatis\submitted\complex_property下拷贝Configuration.xml作为配置样板。
配置数据库链接
<dataSource type="UNPOOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0.1:3306/db_name"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource>3、获取SqlSession
SqlSession作用 1、向sql语句传入参数。 2、执行sql语句。 3、获取执行sql语句的结果。 4、事务的控制。
如何得到SqlSession:
- 通过主配置文件获取数据库连接相关信息。
- 通过配置信息构建SqlSessionFactory。
- 通过SqlSessionFactory打开数据库会话。
4、构建数据库访问类
public class DBAcess {
public SqlSession getSqlSession() throws IOException{
//通过配置文件读取数据库链接信息 Reader reader = Resources.getResourceAsReader("config/Configuration.xml"); //配置文件路径为相对于代码根目录的路径 //通过配置文件构建一个SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); //通过SqlSessionFactory打开一个数据库会话 SqlSession sqlSession = sqlSessionFactory.openSession(); return sqlSession; }}
5、mabaits操作xml配置
在github上下载源码包,并在\src\test\java\org\apache\ibatis\submitted\complex_property下拷贝User.xml作为配置样板。
在mapper下配置相应的sql操作如:
<select id="queryUserList" resultMap="UserResult">
SELECT id,username,password FROM user WHERE 1 = 1 </select>根据需要配置相应的resultMap返回数据 如:
<resultMap type="bean.User" id="UserResult">
<id column="id" jdbcType="INTEGER" property="id"/> <result column="username" jdbcType="VARCHAR" property="username"/> <result column="password" jdbcType="VARCHAR" property="password.encrypted"/> </resultMap>
6、将mabaits操作xml配置添加到主配置文件中
<mappers>
<mapper resource="oconfig/User.xml"/> </mappers>DAO层调用 例:sqlSession.selectList("User.queryUserList");//User对应<mapper namespace="User">
7、传递参数到SQL 结合OGNL
Mybaits中的OGNL | ||
取值范围 | 标签中的属性 | |
取值写法 | String与基本数据类型 | _parameter |
自定义类型 | 属性名(username) | |
集合 | 数组:array | |
List:list | ||
Map:_parameter | ||
操作符 | java常用操作符 | +,-,*,/,==,!=,||,&&等 |
自己特有的操作符 | and,or,mod,in,not in |
Mybaits中的OGNL | |||
从集合中取出一条数据 | 数组 | array[索引](String[]) | |
array[索引]。属性名(User[]) | |||
List | list[索引](List<String>) | ||
list[索引].属性名(List<User>) | |||
Map | _parameter.key(Map<String,String>) | ||
key.属性名(Map<String,User>) | |||
利用foreach标签从集合中取出数据 | <foreach collection="array" index="i" item="item"> | ||
数组 | i:索引(下标) | item item.属性名 | |
List | |||
Map | i:key |
<select id="queryUserList" parameterType="bean.User" resultMap="UserResult">
<!-- SELECT * FROM user WHERE id = #{id:INTEGER} --> select id,username,password from user where 1=1<if test="username!= null and !"".equals(username.trim())">and username=#{username}</if> <if test="password!= null and !"".equals(password.trim())">and password =#{description}</if> </select>
例:
User user = new User();
user.setUsername("...");
DAO层调用 例:sqlSession.selectList("User.queryUserList",user);
8、log4j配置
maven资源:
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version></dependency>手动可到mybatis-3.4.5\lib下获取
在mybaits源码包下mybatis-3-mybatis-3.4.5\src\test\java下拷贝log4j.properties至java源码根目录下
修改日志级别为debug可查看mybatis调试日志
log4j.rootLogger=DEBUG, stdout
#log4j.logger.org.apache.ibatis=ERROR
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%nlog4j.logger.org.apache=INFO