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 ...
随机推荐
- PHP 创建中文目录的情况
因为一个作业需要创建一些中文的目录,其实主要还是考虑一下编码问题. 首先确认下系统环境是什么编码,如果是gbk或者GB2312那就需要转下码,还有些特殊字符,就需要有个特殊的写法. iconv('UT ...
- CGI/FastCGI/mod_php工作原理
先了解一下普通cgi的工作流程:web server收到用户请求,并把请求提交给cgi程序,cgi程序根据请求提交的参数作相应处理,然后输出标准的html语句返回给web server,web ser ...
- 原!linux 监控 jar定时任务 挂了重启 脚本
#!/bin/bash time=$(date "+%Y-%m-%d %H:%M:%S") echo "monitor start at: ${time}" P ...
- Win查询注册表获取CPU与内存参数
#include "stdafx.h" void dump_machine_info( HANDLE fh ) { CHAR Str[MAX_PATH*3]; CHAR MHzSt ...
- EditText把回车键变成搜索
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/mingyue_1128/article/details/31376159 在xml文件里的EditT ...
- spring MVC学习(一)---前端控制器
1.spring MVC中的前段控制器就是DsipatcherServlet,它在spring MVC框架中的结构图如下: 2.DispatcherServlet其实就是一个Servlet,它继承了H ...
- MySQL整理(二)
一.MySQL操作表的约束 MySQL提供了一系列机制来检查数据库表中的数据是否满足规定条件,以此来保证数据库表中数据的准确性和一致性,这种机制就是约束. (1)设置非空约束(NOT NULL),唯一 ...
- 模块讲解----sys
sys:跟python解释器相关的信息 #命令行参数list,第一个元素时程序本身路径 print(sys.argv) 注意:执行脚本时,可以传参数. #退出程序,正常退出时exit(0) sys.e ...
- Django-RestFrameWork之分页 视图 路由 渲染器
目录 一.分页 二.视图 三.路由 四.渲染器 一.分页 试问如果当数据量特别大的时候,你是怎么解决分页的? 方式a.记录当前访问页数的数据id 方式b.最多显示120页等 方式c.只显示上一页,下一 ...
- java的TimeUtils或者DateUtils的编写心得
一.几种常见的日期和时间类介绍 介绍时间工具类不可避免必须要去触碰几个常见的日期和时间类,所以就简单介绍一下. 1.jdk1.8之前的日期时间类 a.Date类 我们可以通过new的方式生成一个Dat ...