mybatis的操作数据库基础
1、domain类
package com.xiaostudy.mybatis.domain; /**
* @desc domain类
* @author xiaostudy
*
*/
public class User {
private int id;
private String username;
private String password; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} @Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
} }
2、dao接口
package com.xiaostudy.mybatis.dao; import java.io.IOException;
import java.util.List; import com.xiaostudy.mybatis.domain.User; /**
* @desc dao接口
* @author xiaostudy
*
*/
public interface UserDao { /**
* @desc 根据用户ID查询用户信息
* @param id 参数
* @return User 返回类型
* @throws Exception 异常
*/
public User findUserById(int id) throws Exception; /**
* @desc 根据用户名称查询用户信息
* @param username 参数
* @return User 返回类型
* @throws Exception 异常
*/
public User findUserByUsername(String username) throws Exception; /**
* @desc 根据用户名称模糊查询list集合
* @param username 参数
* @return List<User> 返回类型
* @throws IOException 异常
*/
public List<User> findUserByUsernames(String username) throws IOException; /**
* @desc 查询所有用户
* @return List<User> 返回类型
* @throws IOException 异常
*/
public List<User> findAllUser() throws IOException; /**
* @desc 添加用户
* @param user 参数
* @return int 返回类型
* @throws IOException 异常
*/
public int insertUser(User user) throws IOException; /**
* @desc 根据用户id修改用户名称
* @param user 参数
* @return int 返回类型
* @throws IOException 异常
*/
public int updateUserUsername(User user) throws IOException; /**
* @desc 根据用户id修改用户名称和密码
* @param user 参数
* @return int 返回类型
* @throws IOException 异常
*/
public int updateUserUsernamePassword(User user) throws IOException; }
3、dao接口实现类
package com.xiaostudy.mybatis.dao; import java.io.IOException;
import java.io.InputStream;
import java.util.List; 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.xiaostudy.mybatis.domain.User; /**
* @desc dao接口实现类
* @author xiaostudy
*
*/
public class UserDaoImpl implements UserDao { private static SqlSessionFactory sqlSessionFactory; static {
//配置文件路径
String resource = "config/SqlMapConfig.xml";
try {
//读取配置文件
InputStream inputStream = Resources.getResourceAsStream(resource);
// 初始化SqlSessionFactory
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
} @Override
public User findUserById(int id) throws Exception { // 创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession(); // 调用SqlSession的增删改查方法
// 第一个参数:表示statement的唯一标示
User user = sqlSession.selectOne("test.findUserById", id); // 关闭资源
sqlSession.close(); return user;
} @Override
public User findUserByUsername(String username) throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); User user = sqlSession.selectOne("test.findUserByUsername", username); sqlSession.close(); return user;
} @Override
public List<User> findUserByUsernames(String username) throws IOException { SqlSession sqlSession = sqlSessionFactory.openSession(); List<User> users = sqlSession.selectList("test.findUserByUsernames", "%" + username + "%"); sqlSession.close(); return users;
} @Override
public List<User> findAllUser() throws IOException { SqlSession sqlSession = sqlSessionFactory.openSession(); List<User> users = sqlSession.selectList("test.findAllUser"); sqlSession.close(); return users;
} @Override
public int insertUser(User user) throws IOException { SqlSession sqlSession = sqlSessionFactory.openSession(); int i = sqlSession.insert("test.insertUser", user); //添加或修改数据的都要提交事务
sqlSession.commit();
sqlSession.close(); return i;
} @Override
public int updateUserUsername(User user) throws IOException { SqlSession sqlSession = sqlSessionFactory.openSession(); int i = sqlSession.update("test.updateUserUsername", user); sqlSession.commit();
sqlSession.close(); return i;
} @Override
public int updateUserUsernamePassword(User user) throws IOException { SqlSession sqlSession = sqlSessionFactory.openSession(); int i = sqlSession.update("test.updateUserUsernamePassword", user); sqlSession.commit();
sqlSession.close(); return i;
} }
4、配置文件

db.properties
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf8
db.username=root
db.password=123456
SqlMapConfig.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> <!-- 加载java的配置文件 -->
<properties resource="config/db.properties"/> <!-- 配置mybatis的环境信息,与spring整合,该信息由spring来管理 -->
<environments default="development">
<environment id="development">
<!-- 配置JDBC事务控制,由mybatis进行管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源,采用mybatis连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${db.driver}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</dataSource>
</environment>
</environments> <!-- 加载映射文件 -->
<mappers>
<mapper resource="config/User.xml" />
</mappers> </configuration>
User.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:命名空间,对statement的信息进行分类管理 -->
<!-- 注意:在mapper代理时,它具有特殊及重要的作用 -->
<mapper namespace="test">
<!-- 根据用户ID查询用户信息 -->
<!-- select:表示一个MappedStatement对象 -->
<!-- id:statement的唯一标示 -->
<!-- #{}:表示一个占位符? -->
<!-- #{id}:里面的id表示输入参数的参数名称,如果该参数是简单类型,那么#{}里面的参数名称可以任意 -->
<!-- parameterType:输入参数的java类型 -->
<!-- resultType:输出结果的所映射的java类型(单条结果所对应的java类型) -->
<select id="findUserById" parameterType="int" resultType="com.xiaostudy.mybatis.domain.User">
SELECT * FROM USER WHERE id = #{id}
</select> <!-- 根据用户名称查询指定用户 -->
<select id="findUserByUsername" parameterType="java.lang.String" resultType="com.xiaostudy.mybatis.domain.User">
SELECT * FROM USER WHERE username = #{username}
</select> <!-- 根据用户名称模糊查询list集合 -->
<select id="findUserByUsernames" parameterType="java.lang.String" resultType="com.xiaostudy.mybatis.domain.User">
SELECT * FROM USER WHERE username LIKE #{username}
</select> <!-- 根据所有用户 -->
<select id="findAllUser" resultType="com.xiaostudy.mybatis.domain.User">
SELECT * FROM USER
</select> <!-- 添加用户 -->
<insert id="insertUser" parameterType="com.xiaostudy.mybatis.domain.User">
<selectKey keyProperty="id" resultType="int" order="AFTER">
select last_insert_id()
</selectKey>
insert into user (username, password) values (#{username}, #{password})
</insert> <!-- 修改用户名称 -->
<update id="updateUserUsername" parameterType="com.xiaostudy.mybatis.domain.User">
update user set username=#{username} where id=#{id}
</update> <!-- 修改用户名称和密码 -->
<update id="updateUserUsernamePassword" parameterType="com.xiaostudy.mybatis.domain.User">
update user set username=#{username}, password=#{password} where id=#{id}
</update> </mapper>
log4j.properties
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# 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
5、mysql

mapper代理
mapper代理接口
package com.xiaostudy.mybatis.mapper; import java.io.IOException;
import java.util.List; import com.xiaostudy.mybatis.domain.User; /**
* @desc dao接口
* @author xiaostudy
*
*/
public interface MapperDao { /**
* @desc 根据用户ID查询用户信息
* @param id 参数
* @return User 返回类型
* @throws Exception 异常
*/
public User findUserById(int id) throws Exception; /**
* @desc 根据用户名称查询用户信息
* @param username 参数
* @return User 返回类型
* @throws Exception 异常
*/
public User findUserByUsername(String username) throws Exception; /**
* @desc 根据用户名称模糊查询list集合
* @param username 参数
* @return List<User> 返回类型
* @throws IOException 异常
*/
public List<User> findUserByUsernames(String username) throws IOException; /**
* @desc 查询所有用户
* @return List<User> 返回类型
* @throws IOException 异常
*/
public List<User> findAllUser() throws IOException; /**
* @desc 添加用户
* @param user 参数
* @return int 返回类型
* @throws IOException 异常
*/
public int insertUser(User user) throws IOException; /**
* @desc 根据用户id修改用户名称
* @param user 参数
* @return int 返回类型
* @throws IOException 异常
*/
public int updateUserUsername(User user) throws IOException; /**
* @desc 根据用户id修改用户名称和密码
* @param user 参数
* @return int 返回类型
* @throws IOException 异常
*/
public int updateUserUsernamePassword(User user) throws IOException; }
MapperDao.java
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:命名空间,对statement的信息进行分类管理 -->
<!-- 注意:在mapper代理时,它具有特殊及重要的作用 -->
<mapper namespace="com.xiaostudy.mybatis.mapper.MapperDao">
<!-- 根据用户ID查询用户信息 -->
<!-- select:表示一个MappedStatement对象 -->
<!-- id:statement的唯一标示 -->
<!-- #{}:表示一个占位符? -->
<!-- #{id}:里面的id表示输入参数的参数名称,如果该参数是简单类型,那么#{}里面的参数名称可以任意 -->
<!-- parameterType:输入参数的java类型 -->
<!-- resultType:输出结果的所映射的java类型(单条结果所对应的java类型) -->
<select id="findUserById" parameterType="int" resultType="com.xiaostudy.mybatis.domain.User">
SELECT * FROM USER WHERE id = #{id}
</select> <!-- 根据用户名称查询指定用户 -->
<select id="findUserByUsername" parameterType="java.lang.String" resultType="com.xiaostudy.mybatis.domain.User">
SELECT * FROM USER WHERE username = #{username}
</select> <!-- 根据用户名称模糊查询list集合 -->
<select id="findUserByUsernames" parameterType="java.lang.String" resultType="com.xiaostudy.mybatis.domain.User">
SELECT * FROM USER WHERE username LIKE #{username}
</select> <!-- 根据所有用户 -->
<select id="findAllUser" resultType="com.xiaostudy.mybatis.domain.User">
SELECT * FROM USER
</select> <!-- 添加用户 -->
<insert id="insertUser" parameterType="com.xiaostudy.mybatis.domain.User">
<selectKey keyProperty="id" resultType="int" order="AFTER">
select last_insert_id()
</selectKey>
insert into user (username, password) values (#{username}, #{password})
</insert> <!-- 修改用户名称 -->
<update id="updateUserUsername" parameterType="com.xiaostudy.mybatis.domain.User">
update user set username=#{username} where id=#{id}
</update> <!-- 修改用户名称和密码 -->
<update id="updateUserUsernamePassword" parameterType="com.xiaostudy.mybatis.domain.User">
update user set username=#{username}, password=#{password} where id=#{id}
</update> </mapper>
MapperDao.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> <!-- 加载java的配置文件 -->
<properties resource="config/db.properties"/> <!-- 配置mybatis的环境信息,与spring整合,该信息由spring来管理 -->
<environments default="development">
<environment id="development">
<!-- 配置JDBC事务控制,由mybatis进行管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源,采用mybatis连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${db.driver}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</dataSource>
</environment>
</environments> <!-- 加载映射文件 -->
<mappers>
<mapper resource="config/User.xml" />
<mapper resource="com/xiaostudy/mybatis/mapper/MapperDao.xml" />
</mappers> </configuration>
SqlMapConfig.xml
测试类
package com.xiaostudy.mybatis.mapper; import java.io.IOException;
import java.io.InputStream;
import java.util.List; 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.xiaostudy.mybatis.domain.User; public class MybatisTest { public static void main(String[] args) throws IOException {
String resource = "config/SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource); // 创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession(); MapperDao mapperDao = sqlSession.getMapper(MapperDao.class);
List<User> users = mapperDao.findAllUser(); for(User user : users) {
System.out.println(user);
} sqlSession.close();
} }
MybatisTest.java
其中较没代理的区别是




mybatis的操作数据库基础的更多相关文章
- JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一
系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...
- 使用mybatis plus 操作数据库
mybatis plus 是基于mybatis 的一个增强包,比 mybatis 更加容易使用. 特点: 1.分页支持 2.支持自定义查询. 3.简单的情况下,不需要写map.xml 文件 4.支持租 ...
- 前端笔记之服务器&Ajax(中)MySQL基础操作&PHP操作数据库&Ajax
一.数据库基础 1.1什么是数据库? 什么是数据库? 答:就是一个很大的一个文件,只不过这个文件可以通过一些‘命令’操作数据: 增.删.改.查数据: 数据库等于持久数据和数据操作的一个统称. 数据库是 ...
- MySQL数据库----基础操作
一.知识储备 数据库服务器:一台计算机(对内存要求比较高) 数据库管理系统:如mysql,是一个软件 数据库:oldboy_stu,相当于文件夹 表:student,scholl,class_list ...
- Mybatis注解方法操作数据库
Java中使用Mybatis操作数据库主要有两种方法:注解和xml配置,注解相对比较简单和方便,两种方式的效果一致.本文以注解的方式说明用Mybatis访问数据库的方法 一.创建数据表(MySql) ...
- Mysql数据库基础操作
Mysql数据库基础操作 在mysql数据库中开启使用tab键补全功能 1)修改主配置文件/etc/mysql/my.cnf(mysql和mariadb目录有些不同) vim /etc/mysql/m ...
- C# IV: 数据库基础操作2
需上一篇C# III:数据库基础操作 另外一个经常碰到的数据库操作是,单次执行多个SQL语句,譬如,一次性插入多条数据. 方法一,拼凑长SQL语句 拼凑长SQL语句实际上是String的操作.如下示例 ...
- JavaWeb_(Spring框架)整合Mybatis加入事务操作数据库
整合Mybatis a)导包: i.Spring:基本包.aop.aspects.jdbc.tx.test: ii.Mybatis:mybatis-3.4.6 iii.整合包:mybatis-spri ...
- MySQL关系型数据库基础操作
MySQL基础 一.MySQL常用数据类型 1.常用数值类型(INT,DOUBLE,FLOAT) ① int 或者 integer 类型: 大小(字节):4字节: 范围: (有符号: -2147483 ...
随机推荐
- jsp ----- form表单
jsp页面form表单中的action的值,最前面不加“/”
- Flask使用日志记录到文件示例
https://www.polarxiong.com/archives/Flask%E4%BD%BF%E7%94%A8%E6%97%A5%E5%BF%97%E8%AE%B0%E5%BD%95%E5%8 ...
- Python 3.5 中的异步HTTP请求写法
Python 3.5 增加了对async def and await的支持,同样的异步代码看起来干净了很多,也更易读. import aiohttp import asyncio async def ...
- kafka-stream数据清洗
1.数据清洗业务类LogProcessor package com.css.kafka.kafka_stream; import org.apache.kafka.streams.processor. ...
- 调试maven源代码
下载源代码,导入idea 运行MavenCli ,设置vm参数 -Dclassworlds.conf=/Users/fsq/Downloads/apache-maven-3.6.2.0/bin/m2. ...
- one hot coding -机器学习
机器学习 数据预处理之独热编码(One-Hot Encoding) 问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. 例如,考虑一下的三个特征: ["male" ...
- 从iOS的图片圆角想到渲染
圆角是一种很常见的视图效果,相比于直角,它更加柔和优美,易于接受.设置圆角会带来一定的性能损耗,如何提高性能是一个需要重点讨论的话题. 大家常见的圆角代码x.layer.cornerRadius = ...
- iOS学习之HelloWorld工程
本文应读者要求,主要简介使用Xcode创建一个“HelloWorld”工程. 1.打开Xcode,点击新建工程 选择工程类型 2.填写工程信息 3.代码简介 // // main.m // hello ...
- 存储库之——MongoDB
阅读目录 一 简介 二 MongoDB基础知识 三 安装 四 基本数据类型 五 CRUD操作 六 可视化工具 七 pymongo 一 简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库1. ...
- Python(异常处理)
一 错误和异常 程序中难免出现错误,而错误分成两种 1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) 2.逻辑错误(逻辑错误) 什么是异常 异常就是程序运行时发 ...