zoukankan      html  css  js  c++  java
  • MyBatis入门

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。


    项目结构:
    这里写图片描述

    环境搭建:导入两个包,web项目直接放在lib中,费web项目导入classPath中
    包

    MyBatis的xml文件的配置,文件配置在src目录下

    <?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="dev">
            <environment id="dev">
                <transactionManager type="JDBC" />
    
                 <!-- 配置数据库连接信息 -->
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
                    <property name="username" value="root"/>
                    <property name="password" value="123456"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <!-- 注册student.xml映射文件-->
            <mapper resource="com/wql/student.xml" />
        </mappers>
    
    </configuration>

    映射文件的配置,一般配置在实体类相同的目录下

    <?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.studentDao.ServiceDao">  <!-- dao层路径 -->
        <!-- 添加 -->
        <insert id="add" parameterType="com.wql.Student">
            insert into
            student(id,name,age,sex) values(#{id},#{name},#{age},#{sex})
        </insert>
    
        <!-- 删除 -->
        <insert id="delete" parameterType="Integer">
            delete from student where
            id=#{id}
        </insert>
    
        <!-- 更新 -->
        <insert id="update" parameterType="com.wql.Student">
            update student set
            name=#{name},age=#{age},sex=#{sex} where id=#{id}
        </insert>
    
        <!-- 查询单个信息 -->
        <select id="findById" resultType="com.wql.Student"
            parameterType="Integer">
            select * from student where id=#{id}
        </select>
    
        <!-- 查询所有的信息 -->
        <select id="findAll" resultType="com.wql.Student">
            select * from student order by 'id'
        </select>
    
        <!-- 模糊查找 -->
        <select id="findByCondition" resultType="com.wql.Student"
            parameterType="com.wql.Student">
            select * from student where 1=1
            <if test="name!=null">
                and name like '%${name}%'
            </if>
        </select>
    </mapper>
    

    这里有很多属性,parameterType可以理解为传入参数的属性;resultType理解为得到结果的属性
    具体属性用法看:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html

    MyBatis与数据库连接

    package com.myBatisUtils;
    
    import java.io.InputStream;
    
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    public class MyBatisUtils {
    
        // 使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
        static InputStream is = Thread.currentThread().getContextClassLoader()
                .getResourceAsStream("mybaits.xml");
        // 构建sqlSession的工厂
        static SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(is);
    
        /*
         * 使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件); Reader reader =
         * Resources.getResourceAsReader(resource); 构建sqlSession的工厂;
         * SqlSessionFactory sessionFactory = new
         * SqlSessionFactoryBuilder().build(reader); 创建能执行映射文件中sql的sqlSession
         */
        static SqlSession s = sf.openSession();
    
        public static SqlSession getSqlSession() {
            return s;
        }
    }
    

    Dao层的实现

    package com.studentDaoImpl;
    
    import java.util.List;
    
    import org.apache.ibatis.session.SqlSession;
    
    import com.myBatisUtils.MyBatisUtils;
    import com.studentDao.StudentDao;
    import com.wql.Student;
    
    public class StudentDaoImpl implements StudentDao{
        //配置映射文件域
        String namespace="com.studentDao.ServiceDao";
        //得到执行映射文件中sql的sqlSession
        SqlSession sqlSession=MyBatisUtils.getSqlSession();
        public void add(Student s) {
            try{
                sqlSession.insert(namespace+".add", s);
                sqlSession.commit();    //提交事务
            }catch(Exception e){
                sqlSession.rollback();  //事务回滚
            }finally{
                sqlSession.close();
            }
        }
    
        public void delete(int id) {
            try{
                sqlSession.delete(namespace+".delete",String.valueOf(id));
                sqlSession.commit();
            }catch(Exception e){
                sqlSession.rollback();
            }finally{
                sqlSession.close();
            }
        }
    
        public void update(Student s) {
            try{
                sqlSession.update(namespace+".update",s);
                sqlSession.commit();
            }catch(Exception e){
                sqlSession.rollback();
            }finally{
                sqlSession.close();
            }
    
        }
    
        public Student findById(int id) {
            return sqlSession.selectOne(namespace+".findById",id);
        }
    
    
        public List<Student> findAll() {
            return sqlSession.selectList(namespace+".findAll");
        }
    
    }
    

    上面基本是完成了,可以直接去测试
    这里写图片描述


    关于MyBatis中的模糊查找:http://blog.csdn.net/qq_36330228/article/details/78477389

    具体学习推荐文档:http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html

  • 相关阅读:
    去掉链接A标签周围的虚线框(IE、Firefox)<转>
    解决ckeditor 错误 和一些WEB开发的错误
    asp.net程序编译调试时偶尔出现访问被拒绝的错误的解决方法
    手工创建全新的DataSet
    玩3c `
    C#写个很不错的资源管理器
    asp.net调用JavaScript自定义方法
    JavaScript压缩格式化和加密
    ASP.NET格式化时间
    Response.ContentType 详细列表
  • 原文地址:https://www.cnblogs.com/wangqilong/p/9417521.html
Copyright © 2011-2022 走看看