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&amp;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的操作数据库基础的更多相关文章

  1. JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一

    系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...

  2. 使用mybatis plus 操作数据库

    mybatis plus 是基于mybatis 的一个增强包,比 mybatis 更加容易使用. 特点: 1.分页支持 2.支持自定义查询. 3.简单的情况下,不需要写map.xml 文件 4.支持租 ...

  3. 前端笔记之服务器&Ajax(中)MySQL基础操作&PHP操作数据库&Ajax

    一.数据库基础 1.1什么是数据库? 什么是数据库? 答:就是一个很大的一个文件,只不过这个文件可以通过一些‘命令’操作数据: 增.删.改.查数据: 数据库等于持久数据和数据操作的一个统称. 数据库是 ...

  4. MySQL数据库----基础操作

    一.知识储备 数据库服务器:一台计算机(对内存要求比较高) 数据库管理系统:如mysql,是一个软件 数据库:oldboy_stu,相当于文件夹 表:student,scholl,class_list ...

  5. Mybatis注解方法操作数据库

    Java中使用Mybatis操作数据库主要有两种方法:注解和xml配置,注解相对比较简单和方便,两种方式的效果一致.本文以注解的方式说明用Mybatis访问数据库的方法 一.创建数据表(MySql) ...

  6. Mysql数据库基础操作

    Mysql数据库基础操作 在mysql数据库中开启使用tab键补全功能 1)修改主配置文件/etc/mysql/my.cnf(mysql和mariadb目录有些不同) vim /etc/mysql/m ...

  7. C# IV: 数据库基础操作2

    需上一篇C# III:数据库基础操作 另外一个经常碰到的数据库操作是,单次执行多个SQL语句,譬如,一次性插入多条数据. 方法一,拼凑长SQL语句 拼凑长SQL语句实际上是String的操作.如下示例 ...

  8. JavaWeb_(Spring框架)整合Mybatis加入事务操作数据库

    整合Mybatis a)导包: i.Spring:基本包.aop.aspects.jdbc.tx.test: ii.Mybatis:mybatis-3.4.6 iii.整合包:mybatis-spri ...

  9. MySQL关系型数据库基础操作

    MySQL基础 一.MySQL常用数据类型 1.常用数值类型(INT,DOUBLE,FLOAT) ① int 或者 integer 类型: 大小(字节):4字节: 范围: (有符号: -2147483 ...

随机推荐

  1. Spark 源码分析 -- task实际执行过程

    Spark源码分析 – SparkContext 中的例子, 只分析到sc.runJob 那么最终是怎么执行的? 通过DAGScheduler切分成Stage, 封装成taskset, 提交给Task ...

  2. sublime text 3 配置方法

    一.安装sublime text 3 1>.执行sublime text 3的安装包(.exe)文件安装成功后,进入sublime的安装目录(例如:D:\Program Files\Sublim ...

  3. 剑指Offer——连续子数组的最大和

    题目描述: HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向 ...

  4. 将vi or vim中的内容复制到terminal中

    1. 查看 vim 是否支持 clipboard 功能 $ vim --version | grep clipboard 2. 如果有 +clipboard 则跳过这一步; 如果显示的是 -clipb ...

  5. 20.Bulk Write Operations-官方文档摘录

    1.有序操作列表将会串行执行,但如果在一个写操作过程出现异常错误,则不会处理剩余的任何写操作 2.无序操作列表将会并发执行,如果在一个写操作过程出现异常错误,则不影响,继续执行(并发无序) 3.对比无 ...

  6. 类的super

    我们经常在类的继承当中使用super(), 来调用父类中的方法.例如下面: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 class A:     def func(self):   ...

  7. 感知器python

    感知器学习的目标是求得一个能够将训练集正实例点和负实例点·完全正确分开的分离超平面.即找到这超平面的参数w,b. 超平面定义 w*x+b=0 其中w是参数,x是数据.公式很好理解以二维平面为例,w有两 ...

  8. mysql5.7新特性探究

    一.MySql5.7增加的特性 1.MySql服务方面新特性 1) 初始化方式改变 MySql5.7之前版本初始化方式: scripts/mysql_install_db MySql5.7版本初始化方 ...

  9. kubenetes 应用更新

    一.Deployment类型: 1.更新: 1).命令方式更新镜像: kubectl set image deployment nginx-deployment nginx=nginx:1.9.1 k ...

  10. Mybatis中的#与$的区别

    一.对比场景 场景:数据库分表时,需要将分表的表序号传入的sql中. SpringBoot中使用注解如下: @Insert("insert into collect_#{tblNum}(id ...