Mybatis的条件多建筑及行使,mybatis环境搭建

  mybatis是一个持久层框架,其重点考虑就想用先后中大量的SQL语句剥离出来,配置于布局文件中**,实现SQL的活配置.**

Mybatis的条件多建筑与采取,mybatis环境搭建

Mybatis的简介:

  MyBatis 本是apache的一个开源项目iBatis, 2010年这个类型由apache
software foundation 迁移至了google code,并且改名为MyBatis
。2013年11月动迁到Github.

  MyBatis 是如出一辙暂缓好的持久层框架,它支持定制化
SQL、存储过程和高档映射。MyBatis 避免了几乎有的 JDBC
代码和手动设置参数与取得结果集。MyBatis 可以下简易的 XML
或注解来安排以及照耀原生信息,将接口和 Java 的 POJOs(Plain Old Java
Objects,普通的 Java对象)映射成数据库被的记录。

Mybatis环境之部署(这里是独立的布局mybatis):

率先:mybatis jar包的下载和导入

v3.4.5的下载地址是:

https://github.com/mybatis/mybatis-3/releases/download/mybatis-3.4.5/mybatis-3.4.5.zip

一旦不思量使3.4.5版本的话,但是只要地方也忘怀的话,我们好当github.com官网上一直找:mybatis

检索结果如果图:

图片 1         
      图片 2

此时点击Download Latest ,然后选取自己想下载的本就得了。

以下载的缩减包解压,并且将mybatis-3.4.5.jar以及lib文件夹里面的jar全部导入到eclipse里面。当然这也用以mysql的教的jar包导入mysql-connector-java-5.1.44.jar。

坐这里我们从来不用Maven所以下面的安排就不要了,因为我们还已经把有的jar手动导入了:

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.4.5</version>
</dependency>

  

2、配置文件的书
于大团结的门类遭到创造一个source
folder,存放自己之安排文档创建sqlMappersConfig.xml,并且以下的部署(官方提供的部署,将法定的布局改成为温馨之)copy进去:
复制代码:

<?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="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

  

复制代码
sqlConnect.properties中的配备如下:

sqlDriver:com.mysql.jbdc.Driver
sqlUrl:mysql:jbdc://172.20.60.2/spectergk?useUnicode=true&characterEncoding=UTF8
sqlUserName:test
sqlUserPwd:111111

哼了到目前为止我们将要配备的config基本配置好了,但是这不过是config的布局,测试代码:

复制代码:

  public void functionTest(){
          //System.out.println("开始做mybatis");
          InputStream inputStream = null;
          try {
        inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
          } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
         /*
          * 创建工厂
          */
         SqlSessionFactory sqlSessionFactory =  new SqlSessionFactoryBuilder().build(inputStream);
         /*
          * 打开ssion
          */
          SqlSession sqlSession = sqlSessionFactory.openSession();

          System.out.println(sqlSession);
          sqlSession.close();
          try {
             inputStream.close();
         } catch (IOException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
         }       
     }

复制代码:

此时打印是有值的认证我们配备成功,剩下的我们尽管足以对mapper进行设置了

亚:mapper的创建同用,因为mybatis的mapper可以下动态代理,所有我们这边一直动用动态代理:

于pojo包中创造:

User.java

当mappers包中开创:

UserMapper.java

以跟sqlMappersConfig.xml的同级目录下面创建创建:

User.xml

还要于sqlMappersConfig.xml配置如下代码:

<!--下面是对com.spectergk.mybatis.pojo.User的包名起别名--!>
<typeAliases>
<typeAlias type="com.spectergk.mybatis.pojo.User" alias="User"/>
</typeAliases>
<!--加载映射资源--!>
<mappers>
<mapper resource="User.xml"/>
</mappers>

贯彻在针对数据库简单的增删改查,具体的落实而下面代码:

User.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">
<!--namespace  指向的包为UserMapper接口  这是实现动态代理的条件之一  -->
<mapper namespace="com.spectergk.mybatis.mappers.UserMapper">
<!-- 这里配置的返回值是User  这是因为在sqlMappersConfig.xml  已经配置了其重命名 -->
<!-- 根据用的id来查询用户  返回值是User 传的值为parameterType -->
  <select id="selectUserById" resultType="User" parameterType="String">
        select * from user where uid = #{v}
  </select>
 <!-- 根据用户的用户名进行模糊查询 -->
  <select id="selectUsersbyUserName" resultType="User" parameterType="String">
      select * from user where realname like "%"#{v}"%";
  </select>
  <!-- 向数据库里面插入数据 -->
  <insert id="insertOneUser" parameterType="User">
      INSERT into user(uid,username,realname,mobile,mainpid,sex) values(#{uid},#{username},#{realname},#{mobile},#{mainpid},#{sex});
  </insert>
  <!-- 插入数据并且返回的自动生成的uid -->

  <insert id="insertOneUserGetid" parameterType="User">
      <selectKey keyProperty="uid" keyColumn="uid" resultType="String" order="AFTER">
          SELECT LAST_INSERT_ID()
      </selectKey>
      INSERT into user(username,realname,mobile,mainpid,sex) values(#{username},#{realname},#{mobile},#{mainpid},#{sex});
  </insert>

  <!-- 以list的形式插入 -->
  <insert id="insetUsers" >
          INSERT into user(uid,username,realname,mobile,mainpid,sex) values
          <foreach collection="list" item="item" separator=",">
               (#{item.uid},#{item.username},#{item.realname},#{item.mobile},#{item.mainpid},#{item.sex})
           </foreach>
  </insert>
  <!-- 以数组的形式插入 -->
  <insert id="insetUsersArray" >
          INSERT into user(uid,username,realname,mobile,mainpid,sex) values
          <foreach collection="array" item="item" separator=",">
               (#{item.uid},#{item.username},#{item.realname},#{item.mobile},#{item.mainpid},#{item.sex})
           </foreach>
  </insert>
  <!-- 更新用户 -->
  <update id="updateUser" parameterType="User">
           UPDATE user set username = #{username} where uid = #{uid}
  </update>
  <!-- 删除用户 -->
  <delete id="deleteOneUser" parameterType="String">
     delete from user where uid = #{v}
  </delete>
  <delete id="deleteMoreUsers">
      delete from user where uid in (
      <foreach collection="list" item="item" separator=",">
            #{item}
      </foreach>
      )
  </delete>
</mapper>

复制代码:
以凡动态的加载所以这里要写接口就行了:

复制代码:

package com.spectergk.mybatis.mappers;
import java.util.List;
import com.spectergk.mybatis.pojo.User;


public interface UserMapper {
    /*
     * 根据用户的id查询
     */
    public User selectUserById(String id);
    /*
     * 根据用户的姓名 模糊查询
     */
    public List<User> selectUsersbyUserName(String username);
    /*
     * 插入一个用户
     */
    public void insertOneUser(User user);
    /*
     * 插入一个用户  并且返回插入的user的id
     */
    public void insertOneUserGetid(User user);
    /*
     * 插入多个用户
     */
    public void insetUsers(List<User> users);
    /*
     * 插入多个用户 这里传输array  
     */
    public void insetUsersArray(User[] users);
    /*
     * updateUser  更新
     */
    public void updateUser(User user);
    /*
     * 删除一个
     */
    public void deleteOneUser(String uid);
    /*
     * deleteMoreUsers删除多个
     */
    public void deleteMoreUsers(List<String> uids);
}

复制代码:
因测试的代码用这边仅写模糊插叙的测试代码:

//根据用户名 模糊查询查询
    public void fuzzysearch(){
        System.out.println("开始做mybatis");
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        /*
         * 创建工厂
         */
        this.sqlSessionFactory =  new SqlSessionFactoryBuilder().build(inputStream);
            /*
             * 打开ssion
             */
             SqlSession sqlSession = this.sqlSessionFactory.openSession();
             System.out.println(sqlSession);
             UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            List<User> users = userMapper.selectUsersbyUserName("刘");

            for (User user : users) {
                System.out.println(user);
            }
             sqlSession.close();    
        }

http://www.bkjia.com/Javabc/1235459.htmlwww.bkjia.comtruehttp://www.bkjia.com/Javabc/1235459.htmlTechArticleMybatis的环境搭建和使用,mybatis环境搭建
Mybatis的简介: MyBatis 本是apache的一个开源项目iBatis,
2010年之类型由apache software foundation 迁移到了…

使SQL与程序代码分离,即在非改程序代码的气象下,直接在配备文件被修改SQL.

mybatis的搭建步骤

下载jar包并安排确保

  mybatisjar下充斥网址:https://github.com/mybatis/mybatis-3/releases
mybatis压缩包解压后组织目录如下图片 3

 

除此以外lib目录下存放着编译依赖包如下

图片 4

最终只有需要将jar包放入项目之之lib 图片 5目下即可

或者选中项目右键 build
path图片 6

跻身者窗口图片 7

单击第二单按钮直接从地面开展补偿加jar,亦或按下按钮之后办事空间的类型遭到摘jar进行添加

修mybatis核心配置文件

在此之前需要调下xml的代码提示(引入dtd文件)

  央先押第6碰

  1. 选择window →  preferences
  2. 搜索xml →  xml
    catalog出现如下窗口
  3. 图片 8
  4.  add → file system
    选择而所急需之文本dtd图片 9

    即时点儿个文本都是不时下的所以还抬高进去图片 10

  5. key
    需要同布局文件被的 图片 11以此部分雷同

    从而key是  -//mybatis.org//DTD Config 3.0//EN,那么dtd文件及哪里寻找呢?

  6. 所要的dtd文件还当mybatis解压后的 mybatis-3.4.4\org\apache\ibatis\builder\xml
    下面要图图片 12

创造核心配置文件

  1. 找到如下窗口
    → next图片 13
  2. 选料第一独 → next 图片 14
  3.  选择第二个 → 选择config
    → next→finish即可图片 15

  4. 此时开立好的xml文件就会自动生成如下代码图片 16

编核心配置文件

  话不多说一直上代码

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration
 3     PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4     "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <!-- 引入database.propeerties -->
 7     <properties resource="database.properties"/>
 8     <!-- 配置mybatis的log实现log4j -->
 9     <settings>
10         <setting name="logImpl" value="LOG4J"/>
11     </settings>
12     <typeAliases>
13         <package name="cn.smbms.pojo"/>
14     </typeAliases>
15     <!-- 配置mybatis多套运行环境 -->
16     <environments default="development">
17         <environment id="development">
18             <!-- 配置事物管理,采用jdbc的事物管理 -->
19             <transactionManager type="JDBC"/>
20             <!-- POOLED:mybatis自带的数据源,jndi:基于Tomcat的数据源 -->
21             <dataSource type="POOLED">
22                 <property name="driver" value="${driver}"/>
23                 <property name="url" value="${url}"/>
24                 <property name="username" value="${user}"/>
25                 <property name="password" value="${pwd}"/>
26             </dataSource>
27         </environment>
28     </environments>
29     <!-- 将mapper文件加入到配置文件中 -->
30     <mappers>
31         <mapper resource="cn/smbms/dao/UserMapper.xml"/>
32     </mappers>
33 </configuration>
属性 作用
configuration 配置文件的根元素节点
propertes 通过resource属性从外表知道properties属性文件,该属性文件描述数据库的相关配置
settings 设置mybatis运行中的一些行为,比如此处设置mybatis的log日志实现为LOG4J,即使用log4j实现日志功能
environments 表示配置mybatis的多套运行环境,将SQL映射到多个不同的数据库上,元素节点中可配置多个,但必须指定默认运行环境
environment 配置mybatis的一套运行环境,需指定运行环境id,事务管理,数据源配置等相关信息
mappers 作用是告诉mybatis去哪里找SQL映射文件(该内容是开发者定义的映射SQL语句),整个项目可以有1个或多个
mapper mappers的子元素节点,具体知道SQL映射文件的路径,其中resource属性表SQL映射文件的路径

 

创造实体类并也其创建DAO接口

  结构如下图片 17

创sql映射文件

 
代码如下

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper
 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 <mapper namespace="cn.smbms.dao.UserMapper">
 6     <!-- 查询用户表记录数 -->
 7     <select id="count" resultType="int">
 8         select count(1) as count from smbms_user
 9     </select>
10     <!-- 查询用户列表 -->
11     <select id="getUserList" resultType="User">
12         select * from smbms_user    
13     </select>
14 </mapper>

 

  1. mapper:映射文件的根元素节点,只发生一个特性namespace
    1. namespace:用于区分不同的mapper,全局唯一.
  2. select:表示查询语句,是mybatis最常用的因素之一,常用属性如下
    1. id属性:改命名空间下唯一标识符
    2. resultType属性:表示SQL语句返回值类型,第一单select返回的是int,后者则是user类型

编辑测试接近运行

   工具类代码如下

 1 package cn.smbms.utils;
 2 
 3 import java.io.InputStream;
 4 
 5 import org.apache.ibatis.io.Resources;
 6 import org.apache.ibatis.session.SqlSession;
 7 import org.apache.ibatis.session.SqlSessionFactory;
 8 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 9 
10 public class MyBatisUtil {
11     private static SqlSessionFactory factory;
12     static {
13         try {
14             //获取mybatis-config.xml文件的输出流
15             InputStream is=Resources.getResourceAsStream("mybatis-config.xml");
16             factory=new SqlSessionFactoryBuilder().build(is);
17         } catch (Exception e) {
18             e.printStackTrace();
19         }
20     }
21     
22     public static SqlSession createSqlSession() {
23         return factory.openSession(false);    //默认true自带提交事务
24     }
25     public static void  closeSqlSession(SqlSession sqlSession) {
26         if(null!=sqlSession) {
27             sqlSession.close();
28         }
29     }
30 }

测试类代码方法同样 基于mapper接口方式操作如下

public static void main(String[] args) {
        Logger logger = Logger.getLogger(Test.class);
        SqlSession sqlSession =null;
        List<User> userList = new ArrayList<>();
        try {
            sqlSession = MyBatisUtil.createSqlSession();
            userList = sqlSession.getMapper(UserMapper.class).getUserList();
            for (User user : userList) {
                logger.debug("testGetUserList UserCode:"+user.getUserCode()+"and userName:"+user.getUserName());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            MyBatisUtil.closeSqlSession(sqlSession);
        }
    }

据悉mapper接口方式操作此接口必须对应select映射SQL语句被之id对应

测试类代码方法二 运行映射SQL语句

public static void main(String[] args) {
        Logger logger = Logger.getLogger(Test.class);
        SqlSession sqlSession =null;
        List<User> userList = new ArrayList<>();
        try {
            sqlSession = MyBatisUtil.createSqlSession();
            //直接运行已映射的SQL语句
            userList = sqlSession.selectList("cn.smbms.dao.UserMapper.getUserList");
            for (User user : userList) {
                logger.debug("testGetUserList UserCode:"+user.getUserCode()+"and userName:"+user.getUserName());
            }
        } catch (Exception e) {
            e.printStackTrace();
            logger.error(e);
        }finally {
            MyBatisUtil.closeSqlSession(sqlSession);
        }
    }

 在应用SQLsession实例执行都映射的说话,没有跟id所对应的方法吗不会见错,即使UserMpper这个接口没有啊无见面影响运行结果.

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图