• 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

  • 相关阅读:
    springboot发送邮件
    事务(进程 ID 64)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品(转)
    Java8中的Stream API基本用法总结
    java时间API,SpringBoot中应用LocalDateTime(日期转换)
    springboot配置自定义消息转换器
    全文检索lucene
    springmvc总结(配置传递参数去除前后空格、参数绑定时处理日期)
    vs2015 安装问题汇总
    浏览器快捷方式被修改的元凶
    使用天平3次,从12个乒乓球找唯一1个轻重未知的废品
  • 原文地址:https://www.cnblogs.com/wangqilong/p/9417521.html
Copyright © 2020-2023  润新知