Mybatis基础入门学习
Mybatis基础入门学习
mybatis架构分析

搭建测试mybatis架构
(1)下载并导入mybatis3.2.7.jar(架构),mysql-connector-java-5.1.7-bin.jar(数据库驱动),junit-4.9.jar(单元测试)
(2)测试mybatis项目搭建

(3)Jdbc资源文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3307/mybatis?characterEncoding=utf-8
jdbc.username=root
jdbc.password=admins
(4)Mybatis核心配置文件
<?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="jdbc.properties"/> <!-- 别名:方便映射文件调用 -->
<typeAliases>
<!-- 这个有弊端:有多少pojo就要配置多少个 -->
<!--<typeAlias type="com.pojo.User" alias="user"/>-->
<!-- 所以用包的方式:扫描该包及其子包的所有pojo,并取别名为(如:user或User) -->
<package name="com.pojo"/>
</typeAliases> <!-- 数据库环境,与Spring整合后,environments标签将废除-->
<environments default="development">
<environment id="development">
<!-- 使用JDBC事务管理 -->
<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="admins"/>--> <property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments> <!-- 映射器的位置 -->
<mappers>
<!--<mapper resource="com/mapper/UserMapper.xml"/>-->
<!-- 3个属性只能取一个,当为class时,xml文件和接口文件必须文件名一样且在同一个包下 -->
<!--<mapper class="com.mapper.UserMapper"/>-->
<!-- url:该属性指定mapper在盘符下的绝对路径,不建议使用 --> <!-- 上面的弊端还是会太多配置,导包的原则和class一样 -->
<package name="com.mapper"/>
</mappers>
</configuration>
(5)日志文件
#日志文件
log4j.rootLogger=DEBUG,stdout
log4j.logger.org.mybatis=DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n
(6)创建一个User类
package com.pojo; import java.io.Serializable;
import java.util.Date; /**
* Serializable:序列化接口
*/
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String username;// 用户姓名
private String sex;// 性别
private Date birthday;// 生日
private String address;// 地址 public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", sex=" + sex
+ ", birthday=" + birthday + ", address=" + address + "]";
}
}
(7)User类的映射器
<?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">
<!-- 命名空间:用于区分;如test.findUserById -->
<mapper namespace="com.mapper.UserMapper">
<!-- 通过ID查询一个用户 -->
<select id="findUserById" parameterType="Integer" resultType="User">
<!-- #{}:表示占位符 -->
select * from user where id=#{v}
</select> <!-- 根据用户名模糊查询用户 -->
<select id="findUserByName" parameterType="String" resultType="com.pojo.User">
<!-- ${}:表示字符串拼接 -->
-- select * from user where username like '%${value}%'
<!-- 防sql注入 -->
select * from user where username like "%"#{value}"%"
</select> <!-- 添加用户 -->
<insert id="addUser" parameterType="com.pojo.User">
<!-- 获取最新的ID主键 -->
<selectKey keyProperty="id" resultType="Integer" order="AFTER">
select LAST_INSERT_ID()
</selectKey>
insert into user (username,birthday,address,sex)
values (#{username},#{birthday},#{address},#{sex})
</insert> <!-- 更新用户 -->
<update id="updateUserById" parameterType="com.pojo.User">
update user
set username=#{username},birthday=#{birthday},address=#{address},sex=#{sex}
where id=#{id}
</update> <!-- 删除用户 -->
<delete id="delUserById" parameterType="Integer">
delete from user where id=#{id}
</delete>
</mapper>
(8)与映射器绑定的接口
package com.mapper; import com.pojo.User; /**
* @author: XDZY
* @date: 2018/8/30 10:02
* @description: 实现用户增删改查的接口(映射器)
* 遵循四个原则
* 1)接口方法名与xml文件标签id一样
* 2)方法返回值类型与xml文件一样
* 3)方法的参数与xml文件一样
* 4)xml文件命名空间与该接口绑定
*/
public interface UserMapper {
public User findUserById(Integer id);
}
(9)测试mybatis实现增删改查
package com.junit; import com.pojo.User;
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 org.junit.Test; import java.io.InputStream;
import java.util.Date;
import java.util.List; /**
* @author: XDZY
* @date: 2018/8/29 23:18
* @description: 单元测试mybatis的增删改查
*/
public class UnitTest {
//根据用户ID查询用户
@Test
public void testMybatis() throws Exception{
//加载核心配置文件
String resource="sqlMapConfig.xml";
InputStream in= Resources.getResourceAsStream(resource);
//创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
//创建sqlSession
SqlSession sqlSession=sqlSessionFactory.openSession();
//执行sql语句
User user=sqlSession.selectOne("com.mapper.UserMapper.findUserById",10);
System.out.println(user);
} //根据用户名模糊查询用户
@Test
public void testFindUserByName() throws Exception{
//加载核心配置文件
String resource="sqlMapConfig.xml";
InputStream in= Resources.getResourceAsStream(resource);
//创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
//创建sqlSession
SqlSession sqlSession=sqlSessionFactory.openSession();
//执行sql语句
List<User> users=sqlSession.selectList("com.mapper.UserMapper.findUserByName","五");
for (User user:users){
System.out.println(user);
}
} //添加用户
@Test
public void testAddUser() throws Exception{
//加载核心配置文件
String resource="sqlMapConfig.xml";
InputStream in= Resources.getResourceAsStream(resource);
//创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
//创建sqlSession
SqlSession sqlSession=sqlSessionFactory.openSession();
//执行sql语句
User user=new User();
user.setUsername("judy");
user.setSex("男");
user.setBirthday(new Date());
user.setAddress("珠海");
int i=sqlSession.insert("com.mapper.UserMapper.addUser",user);
//提交事务
sqlSession.commit();
System.out.println(user.getId());
} //更新用户
@Test
public void testUpdateUserById() throws Exception{
//加载核心配置文件
String resource="sqlMapConfig.xml";
InputStream in= Resources.getResourceAsStream(resource);
//创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
//创建sqlSession
SqlSession sqlSession=sqlSessionFactory.openSession();
//执行sql语句
User user=new User();
user.setId(28);
user.setUsername("judy");
user.setSex("女");
user.setBirthday(new Date());
user.setAddress("珠海");
int i=sqlSession.update("com.mapper.UserMapper.updateUserById",user);
//提交事务
sqlSession.commit();
} //删除用户
@Test
public void testDelUserById() throws Exception{
//加载核心配置文件
String resource="sqlMapConfig.xml";
InputStream in= Resources.getResourceAsStream(resource);
//创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
//创建sqlSession
SqlSession sqlSession=sqlSessionFactory.openSession();
//执行sql语句
sqlSession.delete("com.mapper.UserMapper.delUserById",28);
//提交事务
sqlSession.commit();
}
}
Mybatis基础入门学习的更多相关文章
- MyBatis基础入门《十二》删除数据 - @Param参数
MyBatis基础入门<十二>删除数据 - @Param参数 描述: 删除数据,这里使用了@Param这个注解,其实在代码中,不使用这个注解也可以的.只是为了学习这个@Param注解,为此 ...
- MyBatis基础入门《五》核心配置文件
MyBatis基础入门<五>核心配置文件 描述: 在前面的章节中,简单的学习使用了一下mybatis,对于配置文件没有过多详细说明. 这里先描述项目中的一个核心配置文件:mybatis-c ...
- MyBatis基础入门《二》Select查询
MyBatis基础入门<二>Select查询 使用MySQL数据库,创建表: SET NAMES utf8mb4; ; -- ---------------------------- -- ...
- 函数:我的地盘听我的 - 零基础入门学习Python019
函数:我的地盘听我的 让编程改变世界 Change the world by program 函数与过程 在小甲鱼另一个实践性超强的编程视频教学<零基础入门学习Delphi>中,我们谈到了 ...
- MyBatis基础入门《二十》动态SQL(foreach)
MyBatis基础入门<二十>动态SQL(foreach) 1. 迭代一个集合,通常用于in条件 2. 属性 > item > index > collection : ...
- MyBatis基础入门《十九》动态SQL(set,trim)
MyBatis基础入门<十九>动态SQL(set,trim) 描述: 1. 问题 : 更新用户表数据时,若某个参数为null时,会导致更新错误 2. 分析: 正确结果: 若某个参数为nul ...
- MyBatis基础入门《十八》动态SQL(if-where)
MyBatis基础入门<十八>动态SQL(if-where) 描述: 代码是在<MyBatis基础入门<十七>动态SQL>基础上进行改造的,不再贴所有代码,仅贴改动 ...
- MyBatis基础入门《十七》动态SQL
MyBatis基础入门<十七>动态SQL 描述: >> 完成多条件查询等逻辑实现 >> 用于实现动态SQL的元素主要有: > if > trim > ...
- MyBatis基础入门《十六》缓存
MyBatis基础入门<十六>缓存 >> 一级缓存 >> 二级缓存 >> MyBatis的全局cache配置 >> 在Mapper XML文 ...
随机推荐
- JavaScript运算符优先级——"++,--,&&,||“
上篇文章比较了"?,="三者的优先级:"?">"=">"," 今天继续学习"++,--,& ...
- nyoj 1216——整理图书 CF 229D—— Towers——————【dp+贪心】
整理图书 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 小明是图书鹳狸猿,他有很多很多的书堆在了一起摆在了架子上,每摞书是横着放的,而且每摞书是订好的 是一个整体, ...
- 祝高二学弟学妹AK NOIp2018!!!!!!
- CentOS7 安装oracle 客户端
参考 http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html 下载 oracle-instantclient11. ...
- web子项目的路径问题
http://baidu.com/userms/ userms是一个子应用程序,项目中使用的路径 /content/css/.. 从http://baidu.com/ 开始 ~/content/ ...
- 部署Cube报错,用户登录失败;280000
在创建SSAS项目过程中,创建数据源.数据源视图.多维数据集.纬度等一切都没有问题.但是在“进程”这一步的时候,发现总是报错,提示如下. OLE DB 错误: OLE DB 或 ODBC 错误 : 用 ...
- 在 CentOS 上安装 vsftp 服务
在 CentOS 上安装 vsftp 服务 1.查看当前 CentOS 服务器是否已安装了 vsftpd 服务: rpm -q vsftpd 如果打印如下类似的信息则表明已安装 vsftpd 服务: ...
- php socket简单使用
php的socket编程算是比较难以理解的东西吧,不过,我们只要理解socket几个函数之间的关系,以及它们所扮演的角色,那么理解起来应该不是很难了,在笔者看来,socket编程,其实就是建立一个网络 ...
- 企业工商营业执照副本模板PSD源文件素材下载
企业工商营业执照副本PSD模板下载地址: http://www.qijieworld.com/thread-1911181-1-1.html 模板为psd格式内容可编辑修改,需使用 Photoshop ...
- The fifth day
All men cannot be first . 今日单词: first(形容词):第一的:基本的:最早的:(副词):第一:首先 翻译:不可能人人都是第一名. <Only Love>-- ...