`
changhongbao
  • 浏览: 117451 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

1.Mybatis介绍和简单使用

 
阅读更多

1.Mybatis介绍


MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录.

2.mybatis快速入门


编写第一个基于mybaits的测试例子:
2.1. 添加jar包

【mybatis】
 mybatis-3.1.1.jar
【MYSQL驱动包】
 mysql-connector-java-5.1.7-bin.jar

 

2.2. 建库+表

create database mybatis;
use mybatis;
CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT);
INSERT INTO users(NAME, age) VALUES('Tom', 12);
INSERT INTO users(NAME, age) VALUES('Jack', 11);

 

2.3.添加Mybatis的配置文件conf.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>
	<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://localhost:3306/mybatis" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
</configuration>

 

2.4. 定义表所对应的实体类

public class User {
	private int id;
	private String name;
	private int age;
    //get,set方法
}

 

2.5.定义操作users表的sql映射文件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.atguigu.mybatis_test.test1.userMapper"> 
	<select id="getUser" parameterType="int" 
		resultType="com.atguigu.mybatis_test.test1.User">
		select * from users where id=#{id}
	</select>
</mapper>

 

2.6. 在conf.xml文件中注册userMapper.xml文件 

 

<mappers>
	<mapper resource="com/atguigu/mybatis_test/test1/userMapper.xml"/>
</mappers>

 
2.7. 编写测试代码:执行定义的select语句 

 

public class Test {
	public static void main(String[] args) throws IOException {
		String resource = "conf.xml"; 
		//加载mybatis的配置文件(它也加载关联的映射文件)
		Reader reader = Resources.getResourceAsReader(resource); 
		//构建sqlSession的工厂
		SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
		//创建能执行映射文件中sql的sqlSession
		SqlSession session = sessionFactory.openSession();
		//映射sql的标识字符串
		String statement = "com.atguigu.mybatis.bean.userMapper"+".selectUser";
		//执行查询返回一个唯一user对象的sql
		User user = session.selectOne(statement, 1);
		System.out.println(user);
	}
}

 

3. 操作users表的CRUD

3.1. XML的实现
1). 定义sql映射xml文件:

<insert id="insertUser" parameterType="com.atguigu.ibatis.bean.User">
	insert into users(name, age) values(#{name}, #{age});
</insert>

<delete id="deleteUser" parameterType="int">
	delete from users where id=#{id}
</delete>
		
<update id="updateUser" parameterType="com.atguigu.ibatis.bean.User">
	update users set name=#{name},age=#{age} where id=#{id}
</update>
		
<select id="selectUser" parameterType="int" resultType="com.atguigu.ibatis.bean.User">
	select * from users where id=#{id}
</select>
		
<select id="selectAllUsers" resultType="com.atguigu.ibatis.bean.User">
	select * from users
</select>

2). 在config.xml中注册这个映射文件  

 

<mapper resource=" com/atguigu/ibatis/bean/userMapper.xml"/>

 3). 在dao中调用:

public User getUserById(int id) {
	SqlSession session = sessionFactory.openSession();
	User user = session.selectOne(URI+".selectUser", id);
	return user;
}

 3.2. 注解的实现

 1). 定义sql映射的接口

public interface UserMapper {
	@Insert("insert into users(name, age) values(#{name}, #{age})")
	public int insertUser(User user);

	@Delete("delete from users where id=#{id}")
	public int deleteUserById(int id);
			
	@Update("update users set name=#{name},age=#{age} where id=#{id}")
	public int updateUser(User user);

	@Select("select * from users where id=#{id}")
	public User getUserById(int id);

	@Select("select * from users")
	public List<User> getAllUser();
}

 2). 在config中注册这个映射接口

<mapper class="com.atguigu.ibatis.crud.ano.UserMapper"/>

       3) . 在dao类中调用

public User getUserById(int id) {
	SqlSession session = sessionFactory.openSession();
	UserMapper mapper = session.getMapper(UserMapper.class);
	User user = mapper.getUserById(id);
	return user;
}

 4. 几个可以优化的地方

4.1. 连接数据库的配置单独放在一个properties文件中

## db.properties

<properties resource="db.properties"/>

<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />

 

4.2. 为实体类定义别名,简化sql映射xml文件中的引用

<typeAliases>
	<typeAlias type="com.atguigu.ibatis.bean.User" alias="_User"/>
</typeAliases>

  4.3. 可以在src下加入log4j的配置文件,打印日志信息

1. 添加jar:

         log4j-1.2.16.jar

 

2.1. log4j.properties(方式一)

 

         log4j.properties

         log4j.rootLogger=DEBUG, Console

         #Console

         log4j.appender.Console=org.apache.log4j.ConsoleAppender

         log4j.appender.Console.layout=org.apache.log4j.PatternLayout

         log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

         log4j.logger.java.sql.ResultSet=INFO

         log4j.logger.org.apache=INFO

         log4j.logger.java.sql.Connection=DEBUG

         log4j.logger.java.sql.Statement=DEBUG

         log4j.logger.java.sql.PreparedStatement=DEBUG

 

2.2. log4j.xml(方式二)

 

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

         <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">

                   <layout class="org.apache.log4j.PatternLayout">

                            <param name="ConversionPattern"

                                     value="%-5p %d{MM-dd HH:mm:ss,SSS} %m  (%F:%L) \n" />

                   </layout>

         </appender>

         <logger name="java.sql">

                   <level value="debug" />

         </logger>

         <logger name="org.apache.ibatis">

                   <level value="debug" />

         </logger>

         <root>

                   <level value="debug" />

                   <appender-ref ref="STDOUT" />

         </root>

</log4j:configuration>

 

 5. 解决字段名与实体类属性名不相同的冲突

5.1. 准备表和数据:

CREATE TABLE orders(
	order_id INT PRIMARY KEY AUTO_INCREMENT,
	order_no VARCHAR(20), 
	order_price FLOAT
);
INSERT INTO orders(order_no, order_price) VALUES('aaaa', 23);
INSERT INTO orders(order_no, order_price) VALUES('bbbb', 33);
INSERT INTO orders(order_no, order_price) VALUES('cccc', 22);

 

5.2. 定义实体类:

public class Order {
	private int id;
	private String orderNo;
	private float price;
}

 

5.3. 实现getOrderById(id)的查询:

方式一: 通过在sql语句中定义别名

<select id="selectOrder" parameterType="int" resultType="_Order">

         select order_id id, order_no orderNo,order_price price from orders where order_id=#{id}

</select>

                  

方式二: 通过<resultMap>

<select id="selectOrderResultMap" parameterType="int" resultMap="orderResultMap">

         select * from orders where order_id=#{id}

</select>

 

<resultMaptype="_Order" id="orderResultMap">

         <id property="id" column="order_id"/>

         <result property="orderNo" column="order_no"/>

         <result property="price" column="order_price"/>

</resultMap>

 

分享到:
评论

相关推荐

    springmybatis

    MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个...

    SSM 梳理 面试题整理

    9. 简单介绍一下 Spring bean 的生命周期(11步) 10. Spring 能帮我们做什么 11. 描述一下 Spring 的事务 12. 什么是 Spring IOC 容器,IOC 的优点是什么? 13. 什么是 Spring 的依赖注入 ,注入方式有哪些? 14...

    后端开发+java+Mybatis+知识点+架构图

    本资源是java后端开发持久层框架(Mybatis),里面包含了知识网络图和知识文本图,相对来讲是比较适合新手小白,本资源通俗易懂,下面给大家简单介绍一下本资源的主要内容,可以更快速的帮助到大家 主要包含: 1.ORM思想; 2....

    mybatis动态sqlmybatis动态sqlmybatis动态sql

    下面我将简单介绍一下MyBatis动态SQL的使用方法和常用的功能。 1. if标签:if标签是动态SQL中最常用的功能之一。它允许我们根据条件判断是否拼接SQL语句的一部分。使用if标签时,可以使用Java代码对条件进行判断,...

    mybatis学习笔记

    1.2 MyBatis介绍 3 1.3 Mybatis架构 3 1.4 mybatis下载 4 1.5 创建mysql数据库 5 1.6 Mybatis入门程序 5 1.6.1 需求 5 1.6.2 第一步:创建java工程 6 1.6.3 第二步:加入jar包 6 1.6.4 第三步:log4j.properties 6 ...

    基于SpringBoot开发的旅游网站(源码+数据库)

    ## 一、项目介绍 基于Spring Boo的旅游信息管理系统 项目分前后台 前台 地址:http://localhost/index 账号:user 密码:123456 后台 地址:http://localhost/login 账号:root 密码:123456 功能模块:旅游...

    JavaBean+MyBatis注解,根据表结构自动生成

    1、工具本身是非常简单的,每个人都能做就是使用模板替换生成相应文件 2、工具主要针对SpringMvc+Mybatis注解+Mysql生成对象,dao、sqlDao、interface、实现接口 3、根据表生成Excel 4、生成成功后倒入到自己对应的...

    基于Spring, Spring MVC, Mybatis 的简易学生信息管理系统+源代码+文档说明

    基于Spring, Spring MVC, Mybatis 的简易学生信息管理系统,功能相对完善,自带搭建说明和数据库文档,十分适合ssm框架初学者学习。 1.管理员主要功能有学生管理,课程管理,奖惩管理,综合素质登记,成绩管理。 2....

    Java Mybatis框架入门基础教程

    一、Mybatis介绍 MyBatis是一款一流的支持自定义SQL、存储过程和高级映射的持久化框架。MyBatis几乎消除了所有的JDBC代码,也基本不需要手工去 设置参数和获取检索结果。MyBatis能够使用简单的XML格式或者注解进行来...

    mybatis-helper:简单好用的mybatis扩展包,有助于减少XML配置文件,没有对mybatis源代码做任何修改或覆盖

    mybatis-helper简单介绍 1.基本用法 例如需要在controller中提供一个分页查询的API接口,代码可以这么写: @RequestMapping ( " /list " ) @ResponseBody public Object list( int pageNo, int pageSize, String ...

    基于springboot+mybatis+mysql+vue学生选课管理系统(高分毕业设计)

    基于springboot+mybatis+mysql+vue学生选课管理系统(高分毕业设计)项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 该系统功能完善、界面美观、...

    HelloSSM:简单的Spring + SpringMVC + Mybatis + vuejs + webpack的整合项目的

    使用webpack打包实现前端资源的部署具体介绍页面请点击文章可能已经过去很久了,和目前的代码有些有点出入,主要是前端代码的变化。主要功能实现Spring,SpringMVC,Mybatis三个框架的整合使用ehcache缓存vue.js的...

    springboot+mybatis+mysql+jsp实现用户登陆、增删改查(高分课程设计)

    系统已获导师指导并通过的95分的高分期末大作业项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 系统介绍 系统主要功能:用户登陆、实现简单的增删查改 环境配置: Jdk1.8 + Mysql +...

    springboot+mybatis+mysql+jsp实现用户登陆、增删改查

    系统介绍 系统主要功能:用户登陆、实现简单的增删查改 环境配置: Jdk1.8 + Mysql + IDEA。 项目技术: Springboot + mybatis + Maven + jsp等等组成,B/S模式 + Maven管理等等。 环境需要 1.运行环境:最好是...

    带大家读源码——mybatis generator第一期

    这节课分为如下几段:【00:00-05:00】:介绍源码阅读的方法【05:00-08:00】:简介mybatis-generator的使用 【08:00-27:30】:mybatis-generator包一览 【27:30-结束】:解析配置源码解读 【总结】所在的位置:1....

    myblog-mybatis:个人博客系统(SpringBoot + Mybatis)

    myblog-mybaits 个人博客系统(SpringBoot + Mybatis) ...因为是个人博客,所以没有做用户权限管理,只是简单的区别分开了一下普通用户和管理员用户,这里就根据普通用户和管理员用户来调用功能需求,实际上从

    基于springboot+mybatis+mysq+vue小区物业管理系统(高分毕业设计)

    基于springboot+mybatis+mysq+vue小区物业管理系统(高分毕业设计)项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 该系统功能完善、界面美观、...

    基于SSM框架简单的后台权限管理系统,整合spring + springmvc + shiro + mybatis 源代码+文档

    基于SSM框架简单的后台管理系统,整合spring + springmvc + shiro + mybatis + esayui。包含许多基础模块(用户管理、角色管理、菜单管理、角色权限管理、用户角色管理、日志管理、数据库监控)。 &lt;项目介绍&gt; 该资源...

    基于springboot的在线聊天系统源码+项目说明.zip

    1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,...

    基于springboot+mybatis-plus+mysql+vue实现物流信息管理系统(高分课程设计)

    基于springboot+mybatis-plus+mysql+vue实现物流信息管理系统(高分课程设计)项目已获导师指导并通过的95分的高分期末大作业项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 该系统功能...

Global site tag (gtag.js) - Google Analytics