0
点赞
收藏
分享

微信扫一扫

MyBatis简单实用


一、理解什么是MyBatis?

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

  1)MyBATIS 目前提供了三种语言实现的版本,包括:Java、.NET以及Ruby。(我主要学习java,就讲java的使用)
  2)它提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。
  3)mybatis与hibernate的对比?

   mybatis提供一种“半自动化”的ORM实现。
   这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM实现而言,“全自动”ORM实现了POJO和数据库表之间的映射,以及 SQL 的自动生成和执行。

    而mybatis的着力点,则在于POJO与SQL之间的映射关系。


MyBatis的简单实用

第一步:导入相关jar包  下载地址   ​​https://github.com/mybatis/mybatis-3/releases​​

第二步:选择相应的的jar包

MyBatis简单实用_MyBatis简单实用

第三步:配置数据库和扫描包 config  配置链接数据库

<?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>
<!--1.配置环境 ,默认的环境id为mysql-->
<environments default="mysql">
<!--2.配置id为mysql的数据库环境 -->
<environment id="mysql">
<!-- 3。使用JDBC的事务管理 -->
<transactionManager type="JDBC">
</transactionManager>
<!--4.数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/testdatabase" />
<property name="username" value="root" />
<property name="password" value="123" />

</dataSource>
</environment>
</environments>

<!--5.配置Mapper的位置 -->
<mappers>
<!-- 告知映射文件方式1,一个一个的配置-->
<mapper resource="com/util/Manager.xml" />
<!-- 告知映射文件方式2,自动扫描包内的Mapper接口与配置文件 -->
<!--<package name="com/cy/mybatis/mapper"/>-->
</mappers>


</configuration>

第四步:配置日志

MyBatis简单实用_MyBatis简单实用_02

# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.itheima=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

创建方法接口User.java和定义操作t_user表的sql映射文件UserMapper.xml  一个bean对象对于一个sql映射文件

MyBatis简单实用_sql_03

User.java   代码

package com.dao;

public class User {
Integer uid;
String uusername;
String upassword;

public User() {
super();
}
public User(Integer uid, String uusername, String upassword) {
super();
this.uid = uid;
this.uusername = uusername;
this.upassword = upassword;
}
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUusername() {
return uusername;
}
public void setUusername(String uusername) {
this.uusername = uusername;
}
public String getUpassword() {
return upassword;
}
public void setUpassword(String upassword) {
this.upassword = upassword;
}
@Override
public String toString() {
return "User [uid=" + uid + ", uusername=" + uusername + ", upassword="
+ upassword + "]";
}

}

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">
<!-- namespace表示命名空间 如果sqlSession对象要找到 selelct的话通过 命名空间。select_user_info-->
<mapper namespace="com.utile.manager">
<!--根据客户编号获取客户信息 提供给增删改查操作 的路径-->
<!-- parameterType="Integer" 传递参数 -->
<!-- resultType="com.dao.User" 返回对象 -->
<!-- #{}就是占位符 -->
<select id="select_user_info" parameterType="Integer"
resultType="com.dao.User">
select * from t_user where uid = #{id}
</select>
<insert id="insert_user_info" parameterType="com.dao.User">
insert into t_user(uid,uusername,upassword)
values(#{uid},#{uusername},#{upassword})
</insert>

<delete id="delete_user_id" parameterType="Integer">
delete from t_user where uid = #{id}
</delete>

<update id="update_user_info" parameterType="com.dao.User">
update t_user set
uusername=#{uusername},upassword=#{upassword}
where uid=#{uid}

</update>
</mapper>



测试类:

package com.test;

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.dao.User;
public class Test {

static String resource = "MyBatis.xml";//配置信息
public static void main(String[] args) throws IOException {
User user=new User(4,"liwangajing","123");
// inset_info(user);
//deleteId(123);
update_obj(user);
}
//根据Id查找数据
public static void select_user(int id){
InputStream inputStream;
try {
inputStream = Resources.getResourceAsStream(resource);

// 2、根据配置文件构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
// 3、通过SqlSessionFactory创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 4、SqlSession执行映射文件中定义的SQL,并返回映射结果
User user = sqlSession.selectOne("com.utile.manager.select_user_info", 1);
// 打印输出结果
System.out.println(user.toString());
// 5、关闭SqlSession
sqlSession.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
//插入数据
public static void inset_info(User user){
try {
InputStream input = Resources.getResourceAsStream(resource);
SqlSessionFactory session = new SqlSessionFactoryBuilder().build(input);
SqlSession sqlSession=session.openSession();
sqlSession.insert("com.utile.manager.insert_user_info", user);

sqlSession.commit();
sqlSession.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
//根据Id删除数据
public static void deleteId(int id){
try {
InputStream input = Resources.getResourceAsStream(resource);
SqlSessionFactory session = new SqlSessionFactoryBuilder().build(input);
SqlSession sqlSession=session.openSession();
sqlSession.delete("com.utile.manager.delete_user_id", id);
sqlSession.commit();
sqlSession.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//根据对象更新数据
public static void update_obj(User user){
try {
InputStream input=Resources.getResourceAsStream(resource);
SqlSessionFactory session = new SqlSessionFactoryBuilder().build(input);
SqlSession sqlSession=session.openSession();
sqlSession.update("com.utile.manager.update_user_info", user);
sqlSession.commit();
sqlSession.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


举报

相关推荐

0 条评论