1,mybatis

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

2,mybatis的简单实例

mysql 建表

CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(45) DEFAULT NULL,
`sex` varchar(45) DEFAULT NULL,
`birthday` date DEFAULT NULL,
`address` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
SELECT * FROM testdb.user;

maven 依赖

<dependencies>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
</dependencies>

User 表对应的类:

import java.util.Date;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class User {
private int id;
private String username;
private String sex;
private Date birthday;
private String address_city;
}

mybatis的配置文件mybatis-xml,目标位置src/main/resources 下

<?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>
<!--别名 在XXXmapper.xml 的resultType 或者 parameterType 就可以写User了 -->
<typeAliases>
<typeAlias type="com.ys.entity.User" alias="User" />
</typeAliases> <!-- 数据库环境配置 -->
<environments default="development">
<environment id="development">
<!-- jdbc管理 -->
<transactionManager type="JDBC" />
<!-- 用什么连接池 -->
<dataSource type="POOLED">
<!-- jdbc驱动 -->
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<!-- 数据库名字url -->
<property name="url" value="jdbc:mysql://127.0.0.1:3306/testdb" />
<!-- 数据库用户 -->
<property name="username" value="root" />
<!-- 数据库用户密码 -->
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<!-- 把User.xml注册到mybatis的配置文件中,User.xml下面配置 -->
<mappers>
<mapper resource="com/ys/mappersxml/UserMapper.xml"></mapper>
</mappers>
</configuration>

mybatis.xml 的标签的作用:

    <!--别名  在XXXmapper.xml 的resultType 或者 parameterType 就可以写User了  -->
<typeAliases>
<typeAlias type="com.ys.entity.User" alias="User" />
</typeAliases>

将每个mapper.xml 注册到mybatis 中

    <mappers>
<mapper resource="com/ys/mappersxml/UserMapper.xml"></mapper>
</mappers>

接下来就是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.ys.mappers.UserMapper"> <!-- 根据 id 查询 user 表中的数据 id:唯一标识符,此文件中的id值不能重复 resultType:返回值类型,一条数据库记录也就对应实体类的一个对象
parameterType:参数类型,也就是查询条件的类型 -->
<select id="selectUserById" resultType="User" parameterType="int">
<!-- 这里和普通的sql 查询语句差不多,对于只有一个参数,后面的 #{id}表示占位符,里面不一定要写id,写啥都可以,但是不要空着,如果有多个参数则必须写pojo类里面的属性 -->
select * from user where id = #{id}
</select> <insert id="insertUser" parameterType="com.ys.entity.User">
insert into
user(id,username,sex,birthday,address)
value(#{id},#{username},#{sex},#{birthday},#{address})
</insert> <select id="selectAllUser" resultType="com.ys.entity.User">
select * from user
</select> <select id="selectUserNameLike" parameterType="java.lang.String"
resultType="com.ys.entity.User">
select * from user where username like '%${value}%'
</select> <select id="selectByName" parameterType="java.lang.String"
resultType="com.ys.entity.User">
select * from user where username = #{username}
</select> <delete id="deleteUserById" parameterType="int">
delete from user where
id=#{id}
</delete> <update id="updateUserById" parameterType="java.util.Map">
update user set
username=#{username} where id=#{id}
</update> <!-- resultMap --> <resultMap id="userResultMap" type="User">
<id property="id" column="id" />
<result property="username" column="username" />
<result property="address_city" column="address" />
</resultMap> <select id="selectUserByIdMap" resultMap="userResultMap" parameterType="int">
<!-- 数据库address 对应address_city -->
select id,username,address from user where id =#{id}
</select> </mapper>

UserMapper 接口,定义了需要的查询方法:UserMapper.xml 里面的方法名称要和 UserMapper.java 里面一样:

package com.ys.mappers;

import java.util.List;
import java.util.Map; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import com.ys.entity.User; public interface UserMapper { void insertUser(User user); User selectUserById(int id); List<User> selectAllUser(); //模糊查询的
List<User> selectUserNameLike(String username); List<User> selectByName(String username); void deleteUserById(int id); // 多参数 传递方式1
// public void updateUserById(@Param("id")int id,@Param("username")String
// username); // 多参数 传递方式2
void updateUserById(Map<String, Object> map); // 使用注解 字符串替换 不用写根据id查 根据username查 根据address 查
@Select("select * from user where ${column} = #{value}")
List<User> findByColumn(@Param("column") String column, @Param("value") String value); // resultMap 结果映射 只想输出部分的属性
User selectUserByIdMap(int id); }

测试:

ublic class App {
public static void main(String[] args) {
String resource = "mybatis.xml";
// 加载 mybatis 全局配置文件
InputStream inputStream = CRUDTest.class.getClassLoader().getResourceAsStream(resource);
// 构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 根据 sqlSessionFactory 产生 session
SqlSession session = sessionFactory.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.selectUserById(1);
System.out.println(user.getUsername()); // 插入
// User u = new User();
// u.setUsername("Jimmy");
// u.setSex("female");
// u.setAddress_city("Pekin");
// mapper.insertUser(u); // 查询所有
List<User> users = mapper.selectAllUser();
for (User user2 : users) {
System.out.println("selectAll: " + user2.getUsername());
} // 模糊查询
List<User> userLikes = mapper.selectUserNameLike("L");
for (User user2 : userLikes) {
System.out.println("selectUserNameLike: " + user2.getUsername());
} // 根据姓名查询
List<User> selectByName = mapper.selectByName("Jim");
for (User user2 : selectByName) {
System.out.println("selectByName: " + user2.getUsername());
} //根据id 删除
//mapper.deleteUserById(3); //更新 多个不同类型的传参 map
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("id", 1);
map.put("username", "Linda");
mapper.updateUserById(map); //字符串替换
List<User> findByColumn = mapper.findByColumn("username","Linda");
for (User user2 : findByColumn) {
System.out.println("findByColumn: " + user2.getUsername());
//数据库的字段是address javaBean是属性是address 所以直接查询不能映射,需要resultMap
System.out.println("findByColumn: "+user2.getAddress_city());
} //resultMap 结果映射
User selectUserByIdMap = mapper.selectUserByIdMap(1);
System.out.println("resultMapSelect "+selectUserByIdMap.getAddress_city()); session.close();
} }

mybatis简单项目的更多相关文章

  1. mybatis 简单项目步骤

    mybatis.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configura ...

  2. springboot + mybatis 的项目,实现简单的CRUD

    以前都是用Springboot+jdbcTemplate实现CRUD 但是趋势是用mybatis,今天稍微修改,创建springboot + mybatis 的项目,实现简单的CRUD  上图是项目的 ...

  3. IntelliJ IDEA 创建 Maven简单项目

    创建简单Maven项目 使用IDEA提供的Maven工具,根据artifact创建简单Maven项目.根据下图操作,创建Maven项目. 使用IDEA提供的Maven工具创建的Maven简单项目目录结 ...

  4. spring springmvc mybatis maven 项目整合示例-导航页面

    spring原理 实践解析-简单的helloworld spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包 spring原理案例-基本项目 ...

  5. spring Boot + MyBatis + Maven 项目,日志开启打印 sql

    在 spring Boot + MyBatis + Maven 项目中,日志开启打印 sql 的最简单方法,就是在文件 application.properties 中新增: logging.leve ...

  6. Spring Boot Mybatis简单使用

    Spring Boot Mybatis简单使用 步骤说明 build.gradle:依赖添加 application.properties:配置添加 代码编写 测试 build.gradle:依赖添加 ...

  7. 最详细的SSM(Spring+Spring MVC+MyBatis)项目搭建

    速览 使用Spring+Spring MVC+MyBatis搭建项目 开发工具IDEA(Ecplise步骤类似,代码完全一样) 项目类型Maven工程 数据库MySQL8.0 数据库连接池:Druid ...

  8. 浅析MyBatis(二):手写一个自己的MyBatis简单框架

    在上一篇文章中,我们由一个快速案例剖析了 MyBatis 的整体架构与整体运行流程,在本篇文章中笔者会根据 MyBatis 的运行流程手写一个自定义 MyBatis 简单框架,在实践中加深对 MyBa ...

  9. eclipse建立springMVC 简单项目

    http://jinnianshilongnian.iteye.com/blog/1594806 如何通过eclipse建立springMVC的简单项目,现在简单介绍一下. 工具/原料   eclip ...

随机推荐

  1. Day 1 模拟

    1. P1088 火星人 利用STL中的next_permutation();函数求一种排列的下一种排列,循环m次即为答案.(STL大法好~~C++是世界上最好的语言~~逃 #include < ...

  2. 浅谈.NET Framework 与CLR

            承载公共语言运行时 (CLR) 的所有应用程序均需启动(或称“激活”)CLR 以运行托管代码.             通常,.NET Framework 应用程序在生成它的 CLR ...

  3. HttpClientFactory的套路,你知多少?

    背景 ASP.NET Core 在 2.1 之后推出了具有弹性 HTTP 请求能力的 HttpClient 工厂类 HttpClientFactory. 替换的初衷还是简单摆一下: ① using(v ...

  4. 移动端轮播图实现方法(dGun.js)

    本文章介绍在移动端无缝隙轮播图实现的原理,这个轮子比较简单,但可以方便刚刚入门的同学参考.最终效果是在移动端无缝隙无限滑动,可以自定义轮播的速度.支持手势左右滑动.最后会放上源码. HTML部分 &l ...

  5. elasticsearch-head 安装

    一.安装phantomjs(由于入坑多写一步,此步骤可省掉) 1.下载phantomjs 安装npm的时候会依赖phantomjs 所以我们先安装phantomjs phantomjs 下载地址:ht ...

  6. yolo3各部分代码详解(超详细)

    0.摘要 最近一段时间在学习yolo3,看了很多博客,理解了一些理论知识,但是学起来还是有些吃力,之后看了源码,才有了更进一步的理解.在这里,我不在赘述网络方面的代码,网络方面的代码比较容易理解,下面 ...

  7. 编译putty 源码去掉 Are you sure you want to close this session? 提示

    0, 为什么要编译 putty ?在关闭窗口的时候,会弹出一个 Are you sure you want to close this session?要把这个去掉.当然也可以用 OD 之类的来修改. ...

  8. ggplot2(5) 工具箱

    5.1 简介 ggplot2的图层化架构鼓励我们以一种结构化的方式来设计和构建图形.本章旨在概述可用的几何对象和统计变换,在文中逐个详述.每一节都解决一个特定的作图问题. 5.2 图层叠加的总体策略 ...

  9. Flask 偏函数、g对象、flask-session、数据库连接池、信号、自制命令、flask-admin

    目录 一.偏函数 二.g对象 g对象和session的区别 三.flask-session 四.数据库连接池 pymsql链接数据库 数据库连接池版 utils/sql.py 五.信号 六.命令fla ...

  10. 关于ATL生成COM注册失败解决方法

    最近搞C++封装研究了下COM 做最后整理打包的时候发现各种问题引发的注册失败,so整理下备忘. 1.因引用其它动态连接库与你注册的dll不在同一目录下引起的异常.(解决方法将依赖dll放置与注册dl ...