20、(知识篇)Mybatis使用
来源:互联网 发布:怎样注销手机淘宝号 编辑:程序博客网 时间:2024/05/16 13:04
/**
* MyBatis使用方法
* 1、到官网下载相关包 http://www.mybatis.org/mybatis-3/
* 2、创建xml的配置文件,详细配置可以在官网找到,直接copy过来用就好了(建议引入dtd)
* 2.1 :需要配置mapper,即是写sql的那个文件,写上对应的路径即可
* 例如:<mapper resource="com/mybatis/vo/userMapper.xml"/>
* 2.2:配置别名,可以再映射文件中,直接用别名,就不用写全类名了
* 例子:<typeAliases><typeAlias type="com.mybatis.vo.User" alias="User"/></typeAliases>
* 2.3:可以通过 properties引入外部文件 然后用${xxx}的方式写到xml中去
* 3、Mapper的使用
* 3.0 格式可以在官网找到,直接copy过来用就好了(建议引入dtd)
* 3.1 命名空间: <mapper namespace="com.mybatis.vo.User">
* 3.2 增删该查标签:insert/update/delete/select 然后再标签里面写上对应语句
* 3.3parameterType/resultType 需要写上全类名,或者可以用2.2的方式使用别名
* 3.4占位符#{xxxx} 如果是对象,则xxx为对象的属性名
* 4、获取SqlSessionFactory/SqlSession
* 4.1通过类加载器获取xml的配置文件
* 4.2 通过 new SqlSessionFactoryBuilder().build(is)获得sqlsessionfactory
* 4.3 通过 sessionFactory.openSession() 获得session
* 4.4调用mapper
* mybatis通过session调用 insert(xxxx)/update(xxxx)/delete(xxxx)/selectOne(xxx)/selectList(xxx)执行方法
* 其中xxx 需要填写3.1的 命名空间和 调用标签的id 格式 命名空间.标签id
* 5、mybatis默认是手动commit,所以执行完sql之后,需要手动commit/close
* 可以在session.openSession(true);设置自动提交
*
* 6、额外知识(二级缓存)这个只做了下了解,日后需要再深入研究吧
* 注意使用二级缓存的mapper的对象需要实现序列化
* 只需要再mapper文件中加入 <cache />标签即可
* 这样即使用两个 session去查询(必须分别提交事务), 当数据没有更新时做查询,则不会再次进行物理查询(即不会到数据库执行两次)
* 一般使用在那些数据不频繁更新的表 或者对数据准确性没有那么严格要求的情况中
*
* @param args
*/
测试类:
package com.mybatis.test;import java.io.InputStream;import java.util.List;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import com.mybatis.vo.User;public class Test {/** * MyBatis使用方法 * 1、到官网下载相关包 http://www.mybatis.org/mybatis-3/ * 2、创建xml的配置文件,详细配置可以在官网找到,直接copy过来用就好了(建议引入dtd) * 2.1 :需要配置mapper,即是写sql的那个文件,写上对应的路径即可 * 例如:<mapper resource="com/mybatis/vo/userMapper.xml"/> * 2.2:配置别名,可以再映射文件中,直接用别名,就不用写全类名了 * 例子:<typeAliases><typeAlias type="com.mybatis.vo.User" alias="User"/></typeAliases> * 2.3:可以通过 properties引入外部文件 然后用${xxx}的方式写到xml中去 * 3、Mapper的使用 * 3.0 格式可以在官网找到,直接copy过来用就好了(建议引入dtd) * 3.1 命名空间: <mapper namespace="com.mybatis.vo.User"> * 3.2 增删该查标签:insert/update/delete/select 然后再标签里面写上对应语句 * 3.3parameterType/resultType 需要写上全类名,或者可以用2.2的方式使用别名 * 3.4占位符#{xxxx} 如果是对象,则xxx为对象的属性名 * 4、获取SqlSessionFactory/SqlSession * 4.1通过类加载器获取xml的配置文件 * 4.2 通过 new SqlSessionFactoryBuilder().build(is)获得sqlsessionfactory * 4.3 通过 sessionFactory.openSession() 获得session * 4.4调用mapper * mybatis通过session调用 insert(xxxx)/update(xxxx)/delete(xxxx)/selectOne(xxx)/selectList(xxx)执行方法 * 其中xxx 需要填写3.1的 命名空间和 调用标签的id 格式 命名空间.标签id * 5、mybatis默认是手动commit,所以执行完sql之后,需要手动commit/close * 可以在session.openSession(true);设置自动提交 * * 6、额外知识(二级缓存)这个只做了下了解,日后需要再深入研究吧 * 注意使用二级缓存的mapper的对象需要实现序列化 * 只需要再mapper文件中加入 <cache />标签即可 * 这样即使用两个 session去查询(必须分别提交事务), 当数据没有更新时做查询,则不会再次进行物理查询(即不会到数据库执行两次) * 一般使用在那些数据不频繁更新的表 或者对数据准确性没有那么严格要求的情况中 * * @param args */public static void main(String[] args) {//通过类加载器获取xml的配置文件InputStream is = Test.class.getClassLoader().getResourceAsStream("mybatis-config.xml");System.out.println(is);SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);System.out.println(sessionFactory);SqlSession session = sessionFactory.openSession();System.out.println(session);String nameSpace = "com.mybatis.vo.User";String addValue = nameSpace+".addUser";/*int row = 0;row = session.insert(addValue,new User(0, "Tester2", 1));System.out.println(row);String updateValue = nameSpace+".updateUser";row = session.update(updateValue,new User(1, "Tester1", 1));System.out.println(row);*/String selectValue = nameSpace+".selectUser";User user = session.selectOne(selectValue,1);System.out.println(user);String selectAllValue = nameSpace+".selectAllUser";List<User> users = session.selectList(selectAllValue);System.out.println(users);String selectCountValue = nameSpace+".selectCount";long count = session.selectOne(selectCountValue);System.out.println(count);session.commit();session.close();}}
package com.mybatis.vo;public class User {private int id;private String userName;private int sex;public User() {super();// TODO Auto-generated constructor stub}public User(int id, String userName, int sex) {super();this.id = id;this.userName = userName;this.sex = sex;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public int getSex() {return sex;}public void setSex(int sex) {this.sex = sex;}@Overridepublic String toString() {return "User [id=" + id + ", userName=" + userName + ", sex=" + sex + "]";}}
userMapper.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="com.mybatis.vo.User"> <!-- 二级缓存 <cache /> --> <insert id="addUser" parameterType="User"> insert into `User` (userName,sex) values(#{userName},#{sex}) </insert> <update id="updateUser" parameterType="User"> update User set userName = #{userName},sex=#{sex} where id = #{id} </update> <select id="selectAllUser" resultType="User"> select * from User </select> <select id="selectCount" resultType="java.lang.Long"> select count(1) from User </select> <select id="selectUser" resultType="User"> select * from User where id = #{id} </select></mapper>
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.vo.User" alias="User"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC" /><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://192.168.1.92:3306/test" /><property name="username" value="root" /><property name="password" value="root" /></dataSource></environment></environments><!-- 映射文件 --><mappers><!-- <mapper resource="org/mybatis/example/BlogMapper.xml" /> --><mapper resource="com/mybatis/vo/userMapper.xml"/></mappers></configuration>
- 20、(知识篇)Mybatis使用
- 23、(知识篇)Mybatis03使用(Mybatis整合Spring)
- MyBatis知识系列之六:使用注解实现mybatis
- 使用Spring+MyBatis搭建项目的点滴知识梳理
- 梳理mybatis-使用篇
- mybatis相关知识
- MyBatis一些知识
- MyBatis知识详解
- mybatis 知识1
- mybatis知识解惑
- MyBatis 知识概览
- MyBatis知识简介
- Mybatis零碎知识小结
- Mybatis 相关知识(一)
- MyBatis 知识总结(一)
- MyBatis知识总结(二)
- Mybatis知识总结(三)
- mybatis知识汇总(一)
- vim 常用的若干命令
- Linux操作系统下运行命令时Ctrl+C和Ctrl+Z的作用及恢复
- php-变量常量
- java IO最详解
- 抽象工厂模式
- 20、(知识篇)Mybatis使用
- 简单的可拖动的ImageView,16/12/25 02
- Can't create more than max_prepared_stmt_count statements
- ssh注解配置
- 关于C++里面的函数中,按值传递与按引用传递的区别
- 【问题解决】ava.lang.NoSuchMethodError: antlr.collections.AST.getLine()
- Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
- solr replication原理探究
- OJ 1997: C语言实验——分割整数