mybatis入门学习

来源:互联网 发布:简单的平面设计软件 编辑:程序博客网 时间:2024/06/05 05:18

        作为一个程序员,第一个接触的orm框架就是hibernate,使用了很长时间。可是正是应为使用这个,让自己所学习的sql置于了一个很尴尬的地方,程序开发很少直接接触,却又不能够放弃。好在发现了mybiats 。相比于hibernate,mybatis可以说是灵活小巧了,因此也就很容易上手。我想正是因为它的小巧,在官网上则可以很容易的查找到它的中文文档,这对对于英文不怎么样的我来说不得不说是一个好消息.如果不知道他的中文参考文档请猛戳这里:http://mybatis.github.io/mybatis-3/zh/index.html.学习了mybatis也有一段时间了,总的来说就是mybatis可以提高程序在dao层的灵活性与性能,但是在开发效率上还是觉得hibernate比较高.

     接下来就写一个简单的小例子算是入门吧。首先嘛当然创建一个maven项目了。然后在pom文件中添加mybatis与mysql,已以及测试的依赖配置了

,然后依照它的官方文档添加mybatis-config.xml与PersonMapper.xml了。

因为mybatis是用于操作数据库的,所以则需要配置连接数据库的数据源以及事务管理了,这些东西都可以直接从官方文档中拿过来.

个人比较喜欢将数据库的信息写在配置文件中,然后再引入。

然后是实体bean 的映射文件

<?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="Person">  <insert id="insert" parameterType="Person" useGeneratedKeys="true" keyColumn="id">  insert into t_person(age,name)values(#{age},#{name});  </insert>  </mapper>

这里采用主键自动增长。

然后编写添加的代码

package com.mybatis.crud;import java.io.IOException;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import com.mybatis.bean.Person;public class MyBatisCRUD {public static SqlSessionFactory sqlSessionFactory;static{String resource = "mybatis-config.xml";InputStream inputStream;try {inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//添加public void add(){Person person=new Person();person.setAge(20);person.setName("宇智波鼬");SqlSession sqlSession=sqlSessionFactory.openSession();int count=sqlSession.insert("Person.insert", person);sqlSession.commit();System.out.println(count);}}

这里利用mybatis提供Resource从xml中构建sqlsessionFactory,这一块代码可以直接从文档中copy过来,因为测试的原因,我将其写在的静态代码块中。这里要注意的是事务是默认开启的,必须手动提交,也就是 SqlSession.comit();sqlSession.insert的第一个参数是映射文件的namespace+要引用sql的id。
<span style="font-size:24px;">最后编写测试代码:</span>
package com.mybatis.test;import org.junit.Test;import com.mybatis.crud.MyBatisCRUD;import com.sun.swing.internal.plaf.metal.resources.metal;public class MybatisTest {@Testpublic void addTest(){MyBatisCRUD myBatisCRUD=new MyBatisCRUD();myBatisCRUD.add();}}


然后测试,就可以查看数据库了.



OK。那么接下来就是更新 删除 修改了.

下面是完整的代码与配置文件

POM文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>com.maven.ibatis</groupId>  <artifactId>MybatisStudy</artifactId>  <packaging>war</packaging>  <version>0.0.1-SNAPSHOT</version>  <name>MybatisStudy Maven Webapp</name>  <url>http://maven.apache.org</url>  <dependencies>    <dependency>  <groupId>org.mybatis</groupId>  <artifactId>mybatis</artifactId>  <version>3.2.7</version></dependency>   <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency>    <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.31</version></dependency>      </dependencies>  <build>    <finalName>MybatisStudy</finalName>  </build></project>
mybatis-config.xml


<?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><!-- 引入外部配置文件 -->  <properties resource="db.properties"></properties>  <typeAliases>  <typeAlias type="com.mybatis.bean.Person" alias="Person"/>  </typeAliases>   <environments default="development">    <environment id="development">      <transactionManager type="JDBC"/>      <dataSource type="POOLED">        <property name="driver" value="${driver}"/>        <property name="url" value="${url}"/>        <property name="username" value="${username}"/>        <property name="password" value="${password}"/>      </dataSource>    </environment>  </environments>  <mappers>    <mapper resource="com/mybatis/PersonMapper.xml"/>  </mappers> </configuration>

personMapper.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="Person">  <insert id="insert" parameterType="Person" useGeneratedKeys="true" keyColumn="id">  insert into t_person(age,name)values(#{age},#{name});  </insert>    <update id="update" parameterType="Person">  update t_person set name=#{name},age=#{age} where id=#{id}  </update>  <select id="list" resultType="Person">  select * from t_person  </select>  <select id="findbyid" resultType="Person">  select * from t_person where id=#{id}  </select>  <delete id="delete">  delete from t_person where id=#{id}  </delete>  </mapper>

MybatisCURD.java

package com.mybatis.crud;import java.io.IOException;import java.io.InputStream;import java.util.List;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.omg.CORBA.PUBLIC_MEMBER;import com.mybatis.bean.Person;public class MyBatisCRUD {public static SqlSessionFactory sqlSessionFactory;static{String resource = "mybatis-config.xml";InputStream inputStream;try {inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//添加public void add(){Person person=new Person();person.setAge(20);person.setName("宇智波鼬");SqlSession sqlSession=sqlSessionFactory.openSession();int count=sqlSession.insert("Person.insert", person);sqlSession.commit();System.out.println(count);}//更新public void edit(){Person person=new Person();person.setId(1);person.setAge(22);person.setName("卡卡西");SqlSession sqlSession=sqlSessionFactory.openSession();int count=sqlSession.update("Person.update", person);sqlSession.commit();System.out.println(count);}//根据条件查询public void findbyCond(){SqlSession sqlSession=sqlSessionFactory.openSession();Person person=sqlSession.selectOne("Person.findbyid", 1);System.out.println(person);}//列表查询public void list(){SqlSession sqlSession=sqlSessionFactory.openSession();List<Person> list=sqlSession.selectList("Person.list");for (Person person : list) {System.out.println(person);} }//删除public void delete(){SqlSession sqlSession=sqlSessionFactory.openSession();int i=sqlSession.delete("Person.delete",1);sqlSession.commit();System.out.println(i);}}

mybatisTest.java

package com.mybatis.test;import org.junit.Test;import com.mybatis.crud.MyBatisCRUD;import com.sun.swing.internal.plaf.metal.resources.metal;public class MybatisTest {@Testpublic void addTest(){MyBatisCRUD myBatisCRUD=new MyBatisCRUD();myBatisCRUD.add();}@Testpublic void updateTest(){MyBatisCRUD myBatisCRUD=new MyBatisCRUD();myBatisCRUD.edit();}@Testpublic void findByCondTest(){MyBatisCRUD myBatisCRUD=new MyBatisCRUD();myBatisCRUD.findbyCond();}@Testpublic void listTest(){MyBatisCRUD myBatisCRUD=new MyBatisCRUD();myBatisCRUD.list();}@Testpublic void deleteTest(){MyBatisCRUD myBatisCRUD=new MyBatisCRUD();myBatisCRUD.delete();}}







0 0
原创粉丝点击