MyBatis系列之入门教程(MyBatis3.2)

 

MyBatis和Hibernate一样都是基于ORM的关系型数据库框架

ORM工具的基本思想:

1.从配置文件(通常是XML配置文件中)得到 sessionfactory.
2.
sessionfactory 产生 session
3.
session中完成对数据的增删改查和事务提交等.
4.
在用完之后关闭session

5.java对象和数据库之间有做mapping的配置文件,也通常是xml文件。

 

 

MyBatis 是支持 普通 SQL 查询 , 存储过程 和 高级映射 的优秀持久框架。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索封装。

 

本文就一个demo的形式,讲诉MyBatis的数据库操作过程,新建一个web项目,项目结构如图:

我们需要准备mybatis3.2.jar和mysql的jar,日志输出的jar根据自己项目的需要

 

 

新建数据库,数据表是users,设置id为主键,同时自动增长

 

 

新建一个资源文件config

编写数据库配置信息文件db.properties:

 


  
  1. driver=com.mysql.jdbc.Driver
  2. url=jdbc\:mysql\://localhost\:3306/db_mysql?useUnicode\=true&characterEncoding\=utf-8
  3. username=root
  4. password=111

 

 

 

 

 

编写pojo类:

 


  
  1. package com.mybatis.entity;
  2. public class User {
  3. /*
  4. * ID
  5. */
  6. private int id;
  7. /*
  8. * 用户姓名
  9. */
  10. private String name;
  11. /*
  12. * age
  13. */
  14. private int age;
  15. public int getId() {
  16. return id;
  17. }
  18. public void setId(int id) {
  19. this.id = id;
  20. }
  21. public String getName() {
  22. return name;
  23. }
  24. public void setName(String name) {
  25. this.name = name;
  26. }
  27. public int getAge() {
  28. return age;
  29. }
  30. public void setAge(int age) {
  31. this.age = age;
  32. }
  33. @Override
  34. public String toString() {
  35. return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
  36. }
  37. }

 

 

 

 

 

编写pojo类对应的mapper文件:


  
  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. <!--
  5. 为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
  6. -->
  7. <mapper namespace="com.mybatis.mapper.userMapper">
  8. <!--
  9. 在select标签中编写查询的SQL语句, 设置select标签的id属性为findById,id属性值必须是唯一的,不能够重复
  10. parameterType可以在MyBatis的配置文件里设置,也可以直接用包名+类名
  11. -->
  12. <insert id="save" parameterType="User">
  13. insert into users(id,name,age) value(#{name},#{age})
  14. </insert>
  15. <update id="update" parameterType="User">
  16. update users set name=#{name},age=#{age} where id=#{id}
  17. </update>
  18. <delete id="delete" parameterType="int">
  19. delete from users where id=#{id}
  20. </delete>
  21. <select id="findById" parameterType="int" resultType="User">
  22. select * from users where id=#{id}
  23. </select>
  24. <select id="findAll" resultType="User">
  25. select * from users
  26. </select>
  27. </mapper>

 

 

然后,在编写MyBatis的配置文件:

 


  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  4. <configuration>
  5. <!-- 数据库配置文件 -->
  6. <properties resource="db.properties" />
  7. <!-- 实体类,简称 -设置别名 -->
  8. <typeAliases>
  9. <typeAlias alias="User" type="com.mybatis.entity.User" />
  10. </typeAliases>
  11. <!-- 读取db.properties里的数据,进行数据库配置 -->
  12. <environments default="development">
  13. <environment id="development">
  14. <transactionManager type="JDBC" />
  15. <dataSource type="POOLED">
  16. <property name="driver" value="${driver}"/>
  17. <property name="url" value="${url}" />
  18. <property name="username" value="${username}"/>
  19. <property name="password" value="${password}"/>
  20. </dataSource>
  21. </environment>
  22. </environments>
  23. <!-- 注册userMapper.xml文件 -->
  24. <mappers>
  25. <mapper resource="com/mybatis/mapper/userMapper.xml"/>
  26. </mappers>
  27. </configuration>

 

 

 

 

测试类:


  
  1. import java.io.Reader;
  2. import org.apache.ibatis.io.Resources;
  3. import org.apache.ibatis.session.SqlSession;
  4. import org.apache.ibatis.session.SqlSessionFactory;
  5. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  6. import com.mybatis.entity.User;
  7. public class Test {
  8. public static void main(String[] args) {
  9. String resource = "mybatis-config.xml";
  10. try{
  11. //加载Mybatis的配置文件
  12. Reader reader = Resources.getResourceAsReader(resource);
  13. //构建sqlSession的工厂
  14. SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
  15. //创建可以执行sql的SqlSession
  16. SqlSession session = sessionFactory.openSession();
  17. //映射sql的标志字符串
  18. String statement = "com.mybatis.mapper.userMapper.findById";
  19. //执行查询返回id为1的User对象
  20. User user = session.selectOne(statement,1);
  21. System.out.println(user);
  22. }catch (Exception e) {
  23. e.printStackTrace();
  24. }
  25. }
  26. }


然后,可以编写日志文件,进行日志输出


  
  1. log4j.properties\uFF0C
  2. log4j.rootLogger=DEBUG, Console
  3. #Console
  4. log4j.appender.Console=org.apache.log4j.ConsoleAppender
  5. log4j.appender.Console.layout=org.apache.log4j.PatternLayout
  6. log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
  7. log4j.logger.java.sql.ResultSet=INFO
  8. log4j.logger.org.apache=INFO
  9. log4j.logger.java.sql.Connection=DEBUG
  10. log4j.logger.java.sql.Statement=DEBUG
  11. log4j.logger.java.sql.PreparedStatement=DEBUG

运行测试类,可以输出,说明我们的mybatis搭建好了,可以进行数据库操作

 

 

需要注意的:

为了统一编码,建议新建数据库时设置成utf-8的

还有测试时,那个id一定要和userMapper.xml里的id对应,mybatis是根据这个id调用sql函数的哦

配置mybatis文件时,一定要注意顺序,一般都是先配置别、数据库配置、然后mapper文件注册的

 

 



文章来源: smilenicky.blog.csdn.net,作者:smileNicky,版权归原作者所有,如需转载,请联系作者。

原文链接:smilenicky.blog.csdn.net/article/details/51287036

(完)