• MyBatis简单入门


    1.MyBatis架构(简单介绍MyBatis的流程)

      

    接下来简单介绍一下这张图:首先明确我们的目的就是要创建sqlsession然后利用这个对象去执行sql 完成CRUD。创建sqlsession的前提就是用session工厂去创建,利用工厂创建需要原材料啊,所以最顶端的MyBatis配置文件就是所需要的原材料。至于最下面的Exector(执行者)就是sqlsession中的对象,具体是由它去执行sql语句,而MappedStatement对象再Executor中是一个存sql的对象,它把sql给Exectuor(执行者),执行者去执行。由于写的sql肯定有占位符啊,所以最左边的输入映射就是去替换里面的占位符。执行完sql,比如查询,必然会返回结果,那么输出映射就是把结果返回来

    2.MyBatis下载

    mybaits的代码由github.com管理

    下载地址:https://github.com/mybatis/mybatis-3/releases

    3.项目

      3.1 环境搭建

     3.11 创建一个Java Project

        

     3.12 导包

      首先在project创建一个lib文件夹

      把下载好的mybatis中的jar包和lib目录下的jar包复制到lib文件夹下

     

     

    这里涉及到数据库 本人使用的是MySql 所以 把连接mysql的jar也导入,大家可以自己百度下载jar包

     bulid to path

      3.12 开始入门

      首先在数据库中创建一张表 这里我起名为user  并加点数据

      

      

      在项目中创建User的POJO对象 

    package Com.Dy;
    
    import java.util.Date;
    
    public class User {
    	private Integer id;
    	private String username;
    	private String sex;
    	private Date birthday;
    	private String address;
    
    	public User() {
    		super();
    	}
    
    	public User(Integer id, String username, String sex, Date birthday, String address) {
    		super();
    		this.id = id;
    		this.username = username;
    		this.sex = sex;
    		this.birthday = birthday;
    		this.address = address;
    	}
    
    	public Integer getId() {
    		return id;
    	}
    
    	public void setId(Integer id) {
    		this.id = id;
    	}
    
    	public String getUsername() {
    		return username;
    	}
    
    	public void setUsername(String username) {
    		this.username = username;
    	}
    
    	public String getSex() {
    		return sex;
    	}
    
    	public void setSex(String sex) {
    		this.sex = sex;
    	}
    
    	public Date getBirthday() {
    		return birthday;
    	}
    
    	public void setBirthday(Date birthday) {
    		this.birthday = birthday;
    	}
    
    	public String getAddress() {
    		return address;
    	}
    
    	public void setAddress(String address) {
    		this.address = address;
    	}
    
    	@Override
    	public String toString() {
    		return "User [id=" + id + ", username=" + username + ", sex=" + sex + ", birthday=" + birthday + ", address="
    				+ address + "]";
    	}
    	
    
    }
    

      

    根据最开始的架构图 第一步就是准备我们的原材料,所以开始写我们的核心配置文件sqlMapConfig.xml,既然涉及到了数据库我们肯定要告诉MyBatis使用什么数据库和连接字符串,让它可以去执行我们想要的sql。

    <?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">
                <!-- 使用jdbc事务管理 -->
                <transactionManager type="JDBC" />
                <!-- 数据库连接池 -->
                <dataSource type="POOLED">
                    <!-- 驱动 -->
                    <property name="driver" value="com.mysql.jdbc.Driver" />
                    <!-- 连接字符串 -->
                    <property name="url"
                        value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
                    <property name="username" value="root" />
                    <property name="password" value="hjf" />
                </dataSource>
            </environment>
        </environments>
    </configuration>

    还是第一张图,可以看到除了核心配置文件,下面还有个Mapper.xml,这个xml文件就是我们用来写sql的地方,这样说可能比较抽象,看到代码大家应该能懂,所以我们来构建UserMap.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">

    由于MyBatis只会加载核心配置文件,所以我们要在核心文件中配置,告诉MyBatis去这个文件找sql。resource就是你的Map的名字,这里是相对路径,大家可以用ctrl加左键点一下,看能不能进去,点的进应该就没写错。

    还是回到架构图,我们准备好了原材料,就要把原材料输送给工厂,所以我们创建一个单元测试,和创建普通类一样,就是要在你写的测试方法加上@Test,然后快捷键导包。

    首先我们要获得原材料加载核心配置文件,有多种方法,这里就简单的用一种。

    把材料输送给工厂,获得工厂对象

    工厂有了材料,就可以造产品啦 

     

    了Sqlsession就代表有了Executor对象,那么就可以去执行sql啦执行的sql是放在之前的UserMap,xml文件中,那么我们就去这个xml写sql吧,这里先写个简单的查询

    sql是写在Mapping标签下,具体怎么写可以看下面的注释

    <?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">
    
    <!-- 这里的namespace表示命名空间,防止和其他的Map里得id重复 -->
    <mapper namespace="User">
        
        <!-- id表示这个select的名字,只能唯一,以后就是通过这个id去找到这个select和下面的sql -->
        
        <!-- #{}是占位符,里面的值可以是任意的 你可以写#{v}和这里的#{id}作用一样,我们需要告诉框架这个占位符是什么类型的,
          我这里的id是Integer类型,所以parameterType="Integer"
    --> <!-- 大家可以看到框架最右边是可以返回POJO类型的数据,所以我们配置返回的类型是User型,所以resultType是User型,要写全类名哦 --> <select id="GetUser" parameterType="Integer" resultType="Com.Dy.User"> select * from user where id = #{id} </select> </mapper>

    写好sql后,自然是执行sql啦,因为我们只查一个所以用下面这个方法

    还记得上面我们写了个占位符嘛,这里的1 就是去替换占位符的。执行 结果:

     同理  如果你的paramterType是POJO类型,如下面的inserUser的select中,给入的参数是User类型,如果你的占位符中写的内容和你的类的字段相同,那么它就会默认用那个值,比如你要插入一个User,给一个User,那个User有一个username字段而且值为admin,那么你插入的时候如果写的是#{username}那么它就会用User类的username也就是admin去替换。

  • 相关阅读:
    WCF学习资料
    浅谈Configure和Setting
    面向对象的设计原则与目标[总结篇]
    异步调用与线程(总结篇)
    博客园“图灵微软名著杯博问大赛”
    《Flex 3权威指南》——Adobe官方培训教材
    Google和Yahoo专家眼中的JavaScript设计模式
    拥抱iPhone,拥抱软件开发的未来 ——转帖:中华读书报
    iPhone开发:抢先拥抱软件开发的未来
    jQuery之父强烈推荐之jQuery实战
  • 原文地址:https://www.cnblogs.com/dddyyy/p/9575417.html
Copyright © 2020-2023  润新知