Welcome 微信登录

首页 / 数据库 / MySQL / MyBatis入门学习笔记

说到mybatis,我们首先说说ibatis,mybatis3.X是ibatis2.X的后期 版本,功能比ibatis强大了很多。1、mybatis和ibatis比较1.1、在 关系映射方面,mybatis相对ibatis的“嵌套查询”,多了“嵌套结果"查询的方式,嵌套查询会引发N+1查询问题,而嵌套结果查询可有效 避免。1.2、mybatis实现了dao接口和xml映射文件的绑定,这使得在ibatis中无多大卵用的namespace在mybatis中派上了用场,命名空间唯一来保证xml配置文件和dao类的一一绑定。1.3、mybatis提供了新的功能:注解,并且新增了ognl表达式,简化xml的配置 ,另外mybstis中的xml配置方式及dtd命名有了一些变化,使得在mybatis中xml映射及配置更加条理化。2、入门:2.1、mybatis简介;MyBatis是支持普通SQL查询存储过程高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录.MyBatis入门学习教程  http://www.linuxidc.com/Linux/2015-02/113771.htmJava实战应用:Mybatis实现单表的增删改 http://www.linuxidc.com/Linux/2014-06/103456.htm[Java][Mybatis]物理分页实现 http://www.linuxidc.com/Linux/2014-04/99889.htmMybatis快速入门教程 http://www.linuxidc.com/Linux/2013-06/85762.htmMybatis的关于批量数据操作的测试 http://www.linuxidc.com/Linux/2012-05/60863.htmMybatis中对List<Object> 对象List的批处理插入操作 http://www.linuxidc.com/Linux/2014-02/96916.htm2.2、加入jar包mybatis      mybatis-3.1.1.jar【MYSQL驱动包】
mysql-connector-java-5.1.7-bin.jar2.3、创建数据表2.4、添加mybatis配置文件conf.xml(主要用来注册xml映射文件和连接数据源)示例:(在配置过程中没有提示的朋友可以将dtd加入eclipse配置即可。)其中数据源配置可将配置文件放到peoperties文件中,具体如下:<properties resource="db.properties"/> <property name="driver" value="${driver}" /><property name="url" value="${url}" /><property name="username" value="${username}" /><property name="password" value="${password}" /><?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://localhost:3306/mybatis" />                                  <property name="username" value="root" />                                  <property name="password" value="root" />                          </dataSource>                  </environment>        </environments></configuration>2.5定义pojo类2.6为实体类定义别名<typeAliases>         <--! <typeAlias type="com.gsau.mybatis.bean.User" alias="_User"/>--><!-- 
类级别的别名映射
-->        <package name="com.gsau.mybaits.bean"/><!-- 
包级别的别名映射,这时pojo类要放到同一包中,如上面的com.gsau.mybaits.bean
--></typeAliases>2.7定义sql映射文件XXX.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="com.gsau.mybatis_test.test1.XXX">      <select id="getUser" parameterType="int"              resultType="com.gsau.mybatis.bean.User">              select * from users where id=#{id}      </select></mapper>2.8在配置文件中注册xml映射文件<mappers>        <mapper resource="com/gsau/mybatis_test/test1/XXX.xml"/></mappers>2.9编写测试public class Test {        public static void main(String[] args) throws IOException {                  String resource = "conf.xml";                  //加载mybatis的配置文件(它也加载关联的映射文件)                  Reader reader = Resources.getResourceAsReader(resource);                  //构建sqlSession的工厂                  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);                  //创建能执行映射文件中sql的sqlSession                  SqlSession session = sessionFactory.openSession();                  //映射sql的标识字符串                  String statement = "com.gsau.mybatis.bean.userMapper"+".selectUser";                  //执行查询返回一个唯一user对象的sql                  User user = session.selectOne(statement, 1);                  System.out.println(user);        }}3.1数据表的CRUD 操作在没有配置别名映射的时候参数类型prametwrType以及结果类型resultType都需要写出实体类的全类名。以上配置使用的是包级别的别名映射。<insert id="insertUser" parameterType="User">        insert into users(name, age) values(#{name}, #{age});</insert> <delete id="deleteUser" parameterType="int">        delete from users where id=#{id}</delete>                 <update id="updateUser" parameterType="User">        update users set name=#{name},age=#{age} where id=#{id}</update>                 <select id="selectUser" parameterType="int" resultType="User">        select * from users where id=#{id}</select>                 <select id="selectAllUsers" resultType="User">        select * from users</select>3.2在conf.xml中注册映射文件3.3在dao中调用sql映射文件4、注解的实现4.1定义sql映射的接口public interface UserMapper {        @Insert("insert into users(name, age) values(#{name}, #{age})")        public int insertUser(User user);         @Delete("delete from users where id=#{id}")        public int deleteUserById(int id);                                 @Update("update users set name=#{name},age=#{age} where id=#{id}")        public int updateUser(User user);         @Select("select * from users where id=#{id}")        public User getUserById(int id);         @Select("select * from users")        public List<User> getAllUser();}4.2在conf.xml中注册 此接口<mapper class="com.gsau.mybatis.crud.ano.UserMapper"/>4.3在dao中调用4.4可加入log4j配置文件,有properties和xml两种形式,方便找错,网上很多的(记得添加log4j的jar包)。5、如果结果类型是多个可使用resultMap,将resultType替换,或者给查询结果列定义别名和实体类对应。示例:<select id="selectOrderResultMap" parameterType="int" resultMap="orderResultMap">        select * from orders where order_id=#{id}</select> <resultMap type="_Order" id="orderResultMap">        <id property="id" column="order_id"/>        <result property="orderNo" column="order_no"/>        <result property="price" column="order_price"/></resultMap>更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2016-03/129567p2.htm
  • 1
  • 2
  • 下一页
translate和replace的区别MySQL的查询计划中ken_len的值计算相关资讯      MyBatis入门  MyBatis入门学习 
  • MyBatis入门示例  (08/03/2014 22:10:43)
  • MyBatis快速入门教程  (06/10/2013 06:51:57)
本文评论 查看全部评论 (0)
表情: 姓名: 字数