之前写了Ibatis,为了做个对比,今天写写MyBatis:
一、基于xml映射形式:
1.总配置文件Configuration.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="com/mymy/jdbc.properties"> <property name="username" value="root"/> <!-- 会被jdbc.properties中的值覆盖 --> <property name="password" value="123"/> </properties> <settings> <!-- 全局映射器启用缓存 --> <setting name="cacheEnabled" value="true" /> <!-- 查询时,是否开启懒加载模式,true:关闭关联对象即时加载以提高性能 --> <setting name="lazyLoadingEnabled" value="false" /> <!-- 设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指定),不会加载关联表的所有字段,以提高性能 --> <setting name="aggressiveLazyLoading" value="false" /> <!-- 对于未知的SQL查询,允许返回不同的结果集以达到通用的效果 --> <setting name="multipleResultSetsEnabled" value="true" /> <!-- 允许使用列标签代替列名 --> <setting name="useColumnLabel" value="true" /> <!-- 允许使用自定义的主键值(比如由程序生成的UUID 32位编码作为键值),数据表的PK生成策略将被覆盖 --> <setting name="useGeneratedKeys" value="true" /> <!-- 给予被嵌套的resultMap以字段-属性的映射支持 --> <setting name="autoMappingBehavior" value="FULL" /> <!-- 对于批量更新操作缓存SQL以提高性能 --> <setting name="defaultExecutorType" value="BATCH" /> <!-- 数据库超过25000秒仍未响应则超时 --> <setting name="defaultStatementTimeout" value="25000" /> </settings> <!-- 全局别名 --> <typeAliases> <typeAlias type="com.mymy.bean.User" alias="User"/> </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> <!-- xml形式的映射 --> <mapper resource="com/mymy/bean/User.xml" /> <!-- 注解形式的映射 <mapper class="com.mymy.dao.UserDao" /> --> </mappers> </configuration>2.数据库配置文件jdbc.properties:
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mybatisdb username=root password=1233 User实体类:
package com.mymy.bean; public class User { private int id; private String userName; private int userAge; private String userAddress; public User() { } public User(String userName, int userAge,String userAddress) { this.userName = userName; this.userAge = userAge; this.userAddress = userAddress; } 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 getUserAge() { return userAge; } public void setUserAge(int userAge) { this.userAge = userAge; } public String getUserAddress() { return userAddress; } public void setUserAddress(String userAddress) { this.userAddress = userAddress; } }4.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="User" > <resultMap type="User" id="userResultMap"> <result column="id" property="id" /> <result column="user_name" property="userName" /> <result column="user_age" property="userAge" /> <result column="user_address" property="userAddress" /> </resultMap> <select id="selectOneUser" parameterType="int" resultType="User" resultMap="userResultMap"> select * from t_user where id = #{id} </select> <insert id="insertUser" parameterType="User" > INSERT INTO t_user (user_name,user_age,user_address) VALUES(#{userName},#{userAge},#{userAddress}) </insert> <delete id="deleteUser" parameterType="Integer"> delete from t_user where id = #{id} </delete> <update id="updateUser" parameterType="User" > UPDATE t_user t SET t.user_name=#{userName},t.user_age=#{userAge} WHERE t.id=#{id} </update> </mapper>
5.MyBatisTest 测试类:
package com.test; import java.io.IOException; import java.io.Reader; 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.model.User; public class MyBatisTest { private static SqlSessionFactory fa = null; private static Reader reader = null; static{ try { reader = Resources.getResourceAsReader("Configuration.xml"); fa = new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { e.printStackTrace(); } } public static SqlSessionFactory getSqlSessionFactory(){ return fa; } public static void main(String[] args) { SqlSession session = getSqlSessionFactory().openSession(); try{ // * 增 // User user = new User("abc",11,"asdf"); // session.insert("User.insertUser",user); // * 删 // session.delete("User.deleteUser", 7); /* * 改 */ User user = new User("abc",13,"asdf"); user.setId(6); session.update("updateUser",user); /* * 查 */ // User user = session.selectOne("User.selectOneUser",1); // System.out.println(user.getUserName()+":"+user.getUserAge()); }finally{ session.commit(); session.close(); } } }6.项目结构:
相关推荐
mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的...
mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip ...
解决mybatis头文件报错 下载好压缩包 解压将文件放到本地文件夹 例如 D盘的哪个文件夹 D:\mybatis\ ;然后打开eclipse ->Window->prefenrence->XML->XML Catalog->User Specifiled Entreis->Add->Location(此处是你...
本工程为 MyBatis-Plus 的官方示例,项目结构如下: mybatis-plus-sample-quickstart: 快速开始示例 mybatis-plus-sample-quickstart-springmvc: 快速开始示例(Spring MVC版本) mybatis-plus-sample-reduce-...
free-idea-mybatis is an enchange plugin for idea to supoort mybatis,here is the main functions: generate mapper xml files navigate from the code to mapper and from the mapper back to code auto code...
赠送jar包:mybatis-spring-2.0.0.jar; 赠送原API文档:mybatis-spring-2.0.0-javadoc.jar; 赠送源代码:mybatis-spring-2.0.0-sources.jar; 赠送Maven依赖信息文件:mybatis-spring-2.0.0.pom; 包含翻译后的API...
赠送jar包:mybatis-generator-core-1.3.7.jar; 赠送原API文档:mybatis-generator-core-1.3.7-javadoc.jar; 赠送源代码:mybatis-generator-core-1.3.7-sources.jar; 赠送Maven依赖信息文件:mybatis-generator-...
基于mybatis的慢SQL小插件,原理是mybatis拦截器。只需要在springboot的配置文件做简单的配置,mybatis拦截器将SQL中所有参数自动做了填充。拦截器监控慢SQL并将完整的可执行的SQL语句打印在日志文件中,复制该SQL...
赠送jar包:mybatis-3.5.9.jar; 赠送原API文档:mybatis-3.5.9-javadoc.jar; 赠送源代码:mybatis-3.5.9-sources.jar; 赠送Maven依赖信息文件:mybatis-3.5.9.pom; 包含翻译后的API文档:mybatis-3.5.9-javadoc-...
当前已经是移动互联网时代,Java持久框架Hibernate没有办法适应高性能,灵活,大数据,可优化等要求,这时MyBatis就进入了我们的视野,随着移动互联网应用的持续发酵,Spring MyBatis的应用已在Java互联网平台上得到...
开发工具 mybatis-3.4.2开发工具 mybatis-3.4.2开发工具 mybatis-3.4.2开发工具 mybatis-3.4.2开发工具 mybatis-3.4.2开发工具 mybatis-3.4.2开发工具 mybatis-3.4.2开发工具 mybatis-3.4.2开发工具 mybatis-3.4.2...
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 ...
生成已tk.mybatis封装的mybatis代码
MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。 使用这个类库中的类, Spring 将会加载必要的 MyBatis 工厂类和 session 类。 这个类库也提供一个简单的方式来注入 MyBatis 数据映射器和 ...
mybatis源码是mybatis-3.2.6的源码,用户使用mybatis时可以进行参考
随着大数据时代的到来,Java 持久层框架MyBatis 已经成为越来越多企业的选择。遗憾的是,时至今日国内依然没有一本讨论MyBatis 的书,这增加了初学者的学习难度,初学者往往只能基于零星的案例来学习MyBatis,无法...
此项目为springmvc、Mybatis、EHcache、maven、Spring security3、activiti5工作流的整合 是一个基于数据库的权限管理demo项目、使用mysql数据库 项目运行前需要构建maven私服 而且有些jar包私服中肯定没有,需要...
该jar包是Mybatis和Spring整合必备jar包,适配Mybatis-3.4.0及以上版本。
mybatis配置的重要文件包括mybatis-3-config.dtd mybatis-3-mapper.dtd
【BAT必备】mybatis面试题【BAT必备】mybatis面试题【BAT必备】mybatis面试题【BAT必备】mybatis面试题【BAT必备】mybatis面试题【BAT必备】mybatis面试题【BAT必备】mybatis面试题【BAT必备】mybatis面试题【BAT...