mybatis入门实例(xml文件配置)
官网:mybatis – MyBatis 3 | 简介
先做实例如下:
一:数据库建表(自己有的话可以不用创建)
CREATE TABLE USER(
id INT(20) NOT NULL PRIMARY KEY,
NAME VARCHAR(30) DEFAULT NULL,
pwd VARCHAR(30) DEFAULT NULL
)ENGINE=INNODB DEFAULT CHARSET=UTF8;
INSERT INTO USER(id,NAME,pwd)VALUES
(1,'张子谦','123456'),
(2,'张子涵','123456'),
(3,'张飞','12345678')
二:导入依赖需要三个依赖:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
三:编写核心配置文件mybatis.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?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
//每一个Mapper.xml文件都需要在mybatis核心配置文件中注册
<mappers>
<mapper resource="dao/UserMapper.xml"/>
</mappers>
</configuration>
自己的数据库名记得要更改。
四:编写mybatis工具类(获取slsessionFactory对象以及获取配置文件的资源)
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 java.io.IOException;
import java.io.InputStream;
public class Mybatis {
private static SqlSessionFactory sqlSessionFactory;
static {
try {//使用mybatis获取SQLSessionFactory对象
//获取配置文件的资源
String resource = "mybatis.xml";
//通过流和Resources这个类加载资源
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}catch(IOException e){
e.printStackTrace();
}
}
//既然有了sqlsessionfactory,顾名思义,我们就可以从中获取sqlsession的实例了,sqlsession完全包含了面向数据库执行SQL,命令所需要的所有方法
public static SqlSession getsqlsession(){
return sqlSessionFactory.openSession();
}
}
五:编写实体类
package com.zhang.pojo;
public class User {
private int id;
private String name;
private String pwd;
public User() {
}
public User(int id, String name, String pwd) {
this.id = id;
this.name = name;
this.pwd = pwd;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", pwd='" + pwd + '\'' +
'}';
}
}
六:dao接口类,(这里写这个类是为了操作数据库的)
package com.zhang.dao;
import com.zhang.pojo.User;
import java.util.List;
public interface UserDao {
//获取全部用户
List<User> getUserlist();
//查询一个用户
User getuserid(int id);
//插入一个用户
int adduser(User user);
//修改用户
int updateuser(User user);
//删除一个用户
int deluser(int id);
}
}
七:接口类的Mapper.xml文件(原本应该是接口的实现类,用Mapper配置文件来代替)
<?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=绑定一个对应的dao/Mapper接口
<mapper namespace="com.zhang.dao.UserDao">
//id相当于上面接口里面的方法名,返回类型要写全限定名
//resultType:SQL语句执行后的返回值,parametertype:参数类型,
<select id="getUserlist" resultType="com.zhang.pojo.User">
select * from mybatis.user
</select>
<select id="getuserid" parameterType="int" resultType="com.zhang.pojo.User">
select * from mybatis.user where id=#{id}
</select>
<insert id="adduser" parameterType="com.zhang.pojo.User">
insert into mybatis.user(id,name,pwd) values(#{id},#{name},#{pwd})
</insert>
<update id="updateuser" parameterType="com.zhang.pojo.User">
update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id}
</update>
<delete id="deluser" parameterType="int">
delete from mybatis.user where id=#{id};
</delete>
</mapper>
八:测试
public class UserDaoTest {
@Test
public void test(){
//第一步,获取sqlsession对象
SqlSession sqlSession= MybatilsUtils.getsqlsession();
//执行SQL
UserDao userDao=sqlSession.getMapper(UserDao.class);
List<User> userlist = userDao.getUserlist();
for(User user :userlist){
System.out.println(user);
}
//关闭sql
sqlSession.close();
}
@Test
public void getuserid(){
SqlSession sqlSession=MybatilsUtils.getsqlsession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
User user=mapper.getuserid(1);
System.out.println(user);
sqlSession.close();
}
//插入数据,增删改需要提交时事务
@Test
public void adduser(){
SqlSession sqlSession=MybatilsUtils.getsqlsession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
int res=mapper.adduser(new User(5,"张云","12457"));
if(res>0){
System.out.println("插入成功");
}
//提交事务
sqlSession.commit();
sqlSession.close();
}
//修改数据,增删改需要提交时事务
@Test
public void updateuser(){
SqlSession sqlSession=MybatilsUtils.getsqlsession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
int res=mapper.updateuser(new User(5,"张呵呵","12457"));
//提交事务
sqlSession.commit();
sqlSession.close();
}
//删除用户
@Test
public void deluser(){
SqlSession sqlSession=MybatilsUtils.getsqlsession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
mapper.deluser(5);
sqlSession.commit();
sqlSession.close();
}
}
注意:增删改需要提交事务!
如果配置文件无法生效,在pom文件中加入这一段话即可。放在依赖后面。是关于资源过滤的。
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
小结:除了数据库建表之外,一共大概七步。
一:pom文件,导入依赖
二:mybatis-config.xml配置文件,数据库信息
三:工具类:MybatisUtils
四:实体类 user
五:接口UserDao
六:Usermapper.xml
七:测试
可能出现的错误:
标签匹配错误
resource绑定的mapper,需要使用路径,就是“ / ”,
程序配置文件必须符合规范
nullpointerException:没有注册到资源
输出的xml文件中存在中文乱码问题
maven资源没有导出错误,加一段build代码即可,上面有
聊聊mybatis:
一:它是一款优秀的持久层框架,避免了几乎所有的JDBC代码和手动设置参数以及获取及获取结果集。可以使用简单的xml文件或者注解大方式配置和映射原生类型。
二:三种映射的区别:
resource
适用类路径下,直接加载mybatis对应的映射文件,用/
进行分割,对于文件名称和文件位置没有强制限制条件,比较灵活,不容易出错
class:
仅适用于类路径下,接口文件与映射文件在同一路径下
,且接口名与映射文件名相同
,并且映射文件命名为接口全类名的情况,使用.
分割,有智能提示,限制条件较多,容易出错
package:
适用于类路径下,接口文件与映射文件在同一路径下
,且接口名与映射文件名相同
,并且映射文件命名为接口全类名的情况,即简化了class
parameterType:指定输入参数类型,mybatis获取参数值拼接在sql中。
resultType:指定输出结果类型,mybatis将sql查询结果的一行记录数据映射为resultType指定类型的对象。如果有多条数据,则分别进行映射,并把对象放到容器List中
parameterType写在前面 resultType写在后面
三:如果需要连接数据库的配置文件在核心文件中配置即可。
db.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
username=root
password=root
------
<configuration>
<!-- 引入外部配置文件-->
<properties resource="db.properties">
</properties>
<!--可以给实体类起别名-->
<typeAliases>
<typeAlias type="com.zhang.pojo.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>
<mapper resource="com/zhang/dao/UserMapper.xml"/>
</mappers>
</configuration>
四:万能Map
假如数据库中的表或者字段过多,我们使用Map
int addUser2(map<String,Object>map);
<insert id="adduser2" parameterType="map">
insert into mybatis.user (id,pwd)values(#{id},#{pwd}
</insert>
测试:
map.put("id",24)
map.put("pwd",3435)
mapper.adduser2(map)
关于模糊查询:
五:解决属性名和和字段不一致的问题:使用结果集映射
<resultMap id="UserMap" type="User">
<!-- 前者是数据库中的字段,property是实体类中的属性-->
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="pwd" property="password"/>
</resultMap>
<select id="getuserid" resultMap="UserMap">
select * from mybatis.user where id=#{id}
</select>
知识点先到这里,后续的再补充。
mybatis入门实例(xml文件配置)相关推荐
- spring +springmvc+mybatis组合springmvc.xml文件配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- spring +springmvc+mybatis组合web.xml文件配置
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...
- mybatis入门之XML配置 idea版(含目录结构与sql语句)
mybatis入门之XML配置 maven目录结构 1.创建一个maven项目 2. 配置pom文件 3.创建数据库及数据库表 4.java类和接口 4.1 User.java实体类 4.2.User ...
- java spring bean配置文件_Spring基于xml文件配置Bean过程详解
这篇文章主要介绍了spring基于xml文件配置Bean过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 通过全类名来配置: class:be ...
- mybatis学习指南--xml文件方式篇
mybatis学习指南---xml文件篇 以下内容是由我总结mybatis官方文档和实践中的一些经验,总共分为四篇:xml文件配置篇,java方式配置篇,缓存篇,其他配置篇,第一次这样正式的写一篇文章 ...
- AndroidManifest.xml文件配置教程及相关指令详解
AndroidManifest.xml 是每个android程序中必须的文件,它位于整个项目的根目录.我们每天都在使用这个文件,往里面配置程序运行所必要的组件,权限,以及一些相关信息.但是对于这个文件 ...
- SpringSecurity使用 配置文件 和wen.xml 文件配置
目录 1.web.xml 文件配置 2.spring-security 普通 为使用自己创建的认证类 1.web.xml 文件配置 !-- 配置SpringSecurity的拦截器 -->&l ...
- eclipse mysql Xml配置_mysql8.0在eclipse中通过xml文件配置数据库连接池
mysql8.0在eclipse中通过xml文件配置数据库连接池 1.关于Mysql8.0 2.数据库连接池(DBCP) 3.准备工作 4.配置context.xml 5.配置web.xml 6.调用 ...
- Logback.xml 文件 配置
2019独角兽企业重金招聘Python工程师标准>>> Logback.xml 文件 配置 <?xml version="1.0" encoding= ...
- 从前后端分离到前后端整合的“退步”(二)pom.xml文件配置
系列文章目录 从前后端分离到前后端整合的"退步"(一)项目结构 从前后端分离到前后端整合的"退步"(二)pom.xml文件配置 Spring Boot + Vu ...
最新文章
- 四位专家谈:数字医学中的因果关系
- Java 知识全面总结:并发编程+JVM+设计模式+常用框架+....
- Mac下一台电脑管理多个SSH KEY(转)
- 成功解决调用密钥报错4001 加密方式错误
- Linux-目录结构说明
- 直击「神策 2021 数据驱动大会」五大论坛,精彩不断
- html GPS坐标实现,JavaScript 实现GPS坐标点距离计算(两个经/纬度间的距离计算)...
- Latex 修改公式的的大小
- Nancy之基于Nancy.Owin的小Demo
- 小鹏汽车第10000辆P7下线
- hadoop获取文件系统接口
- 软件工程2第一次作业
- 我开发共享软件的三次经历(上):打造一款很多人用的软件
- iOS 性能优化 -- APP启动时间
- python项目源码和注解_python源代码和注释 - 随笔分类 - 秦朗的天空 - 博客园
- Convolution Arithmetic
- MySQL:数据完整性
- dell服务器510系统,dellr510服务器上安系统.docx
- java爬取论坛信息_Java爬取校内论坛新帖
- Ac质量问题相关答疑