Mybatis基于接口代理的方式来开发Dao(一)
来源:互联网 发布:普通话测试模拟软件 编辑:程序博客网 时间:2024/05/19 12:26
Mybatis的简单介绍:Mybatis是一个操作数据库的框架。最开始叫做ibatis,从apache基金会脱离,加入googleCode正式更名为MyBatis。最终现在mybatis的代码托管在github
首先我们创建一个Maven的项目mybatis02,其中配置文件pom.xml如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.yida.mybatis</groupId> <artifactId>mybatis02</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version></dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.7</version></dependency> <dependency> <groupId>org.bgee.log4jdbc-log4j2</groupId> <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId> <version>1.16</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.13</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.5</version> </dependency> <!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> </dependencies> <build> <plugins> <!-- maven的编译插件,用于指定我们jdk的版本 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins></build></project>
这里使用了日志,其中日志的配置文件log4j.properties如下:
# Global logging configurationlog4j.rootLogger=DEBUG, stdout# Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
定义一个user实体类用于对应数据库的user 表,
package com.yida.mybatis.pojo;import java.util.Date;public class User { private int id; private String username; private Date birthday; private String sex; private String address; 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 Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public User() { super(); // TODO Auto-generated constructor stub } public User(int id, String username, Date birthday, String sex, String address) { super(); this.id = id; this.username = username; this.birthday = birthday; this.sex = sex; this.address = address; }}
然后定义一个接 口UserMapper.java的文件,如下:
package com.yida.mybatis.demo01;import java.util.List;import com.yida.mybatis.pojo.User;public interface UserMapper { //根据id来查询User User getUserMapperById(int id); //根据地址来进行模糊查询 List<User> getUserMapperByAddress(String address); //更新User void updateUserMapper(User user); //插入User void insertUerMapper(User user); //根据id删除User void deleteUserMapper(int id);}
在UserMapper.java的同级目录下创建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.yida.mybatis.demo01.UserMapper"> <select id="getUserMapperById" parameterType="int" resultType="com.yida.mybatis.pojo.User" > select * from user where id = #{id} </select> <select id="getUserMapperByAddress" parameterType="string" resultType="com.yida.mybatis.pojo.User" > select * from user where address like '%${value}%' </select> <update id="updateUserMapper" parameterType="com.yida.mybatis.pojo.User"> update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id = #{id} </update> <insert id="insertUerMapper" parameterType="com.yida.mybatis.pojo.User"> insert into user (username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address}); </insert> <delete id="deleteUserMapper" parameterType="int"> delete from user where id = #{id} </delete></mapper>
创建mybatis的核心配置文件SqlMapperConfig.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><!-- 配置数据库链接的信息 --><!-- <properties resource="db.properties"> --><properties> <property name="jdbc.driver" value="com.mysql.jdbc.Driver" /> <property name="jdbc.url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" /> <property name="jdbc.username" value="root" /> <property name="jdbc.password" value="root" /></properties> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <mappers> <!-- <mapper class="com.yida.mybatis.demo01.UserMapper"/> --> <package name="com.yida.mybatis.demo01"/> </mappers></configuration>
创建测试类进行增删改查:UserMapperTest.java如下 :
package com.yida.mybatis.demo01;import java.util.Date;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 org.junit.After;import org.junit.Before;import org.junit.Test;import com.yida.mybatis.pojo.User;public class UserMapperTest { /** * 实现对User表的增删改查 * @throws Exception */ SqlSession sqlSession = null; @Before public void initMethod() throws Exception{ System.out.println(888); SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); //根据SqlSessionFactoryBuilder来获取SqlSessionFactory SqlSessionFactory build = builder.build(Resources.getResourceAsStream("SqlMapperConfig.xml")); //通过SqlSessionFactory来获取我们的SqlSession sqlSession = build.openSession(false); } /** * 根据id查找User */ @Test public void getUserMapperById(){ System.out.println(666); UserMapper mapper = sqlSession.getMapper(UserMapper.class); User user = mapper.getUserMapperById(16); System.out.println(user.getAddress()); } /** * 根据地址进行模糊搜索 */ @Test public void getUserMapperByAddress(){ UserMapper mapper = sqlSession.getMapper(UserMapper.class); List<User> list = mapper.getUserMapperByAddress("河南"); for (User user : list) { System.out.println(user.getAddress()); } } /** * 更新User */ @Test public void updateUserMapper(){ UserMapper mapper = sqlSession.getMapper(UserMapper.class); User user = new User(); user.setId(32); user.setUsername("大大66666666"); user.setBirthday(new Date()); user.setSex("0"); user.setAddress("武汉888888"); mapper.updateUserMapper(user); sqlSession.commit(); } /** * 插入操作 */ @Test public void insertUerMapper(){ UserMapper mapper = sqlSession.getMapper(UserMapper.class); User user = new User(); user.setUsername("大大66666666"); user.setBirthday(new Date()); user.setSex("0"); user.setAddress("武汉888888"); mapper.insertUerMapper(user); sqlSession.commit(); } /** * 根据 id删除User */ @Test public void deleteUserMapper(){ UserMapper mapper = sqlSession.getMapper(UserMapper.class); mapper.deleteUserMapper(41); sqlSession.commit(); } @After public void finalMethod(){ sqlSession.close(); }}
ok,完成!下一篇待我整理一下,讲讲动态sql及多表查询等
阅读全文
0 0
- Mybatis基于接口代理的方式来开发Dao(一)
- Mybatis基于接口代理的方式来开发Dao(二)
- mybatis--开发Dao--原始dao方式和Mapper代理方式
- Mybatis框架学习(二)—DAO开发方式和Mapper代理的开发方式
- Mybatis使用Mapper代理的方式生成DAO接口的实现类对象
- 【MyBatis-04】mybatis开发dao的方式
- MyBatis学习记录(3):Mapper动态代理方式开发DAO
- MyBatis开发dao的两种方式
- mybatis开发原始dao的方式
- 关于Mybatis的Dao动态代理多种传参方式
- mybatis 原始dao开发和mapper代理开发的比较
- mybatis 用接口的方式实例化dao的缺点
- 【SSM-MyBatis框架】MyBatis开发DAO的方式
- 【Mybatis从0到1-006】mybatis开发DAO之基于mapper代理
- MyBatis原始Dao开发方式
- Mybatis开发dao的方法--Mapper代理篇
- Mybatis Mapper动态代理方法 即 只写Dao接口 不谢Dao的实现类
- Mybatis Mapper动态代理方法 即 只写Dao接口 不写Dao的实现类
- Antd Tabs如何修改TabPane样式
- day30 Linux中安装JDK, MySQL, tomcat, 部署nginx集群, 以及window中部署tomcat+nginx集群
- JDBC学习之路-时间类型
- java注解
- 晨间日记模板
- Mybatis基于接口代理的方式来开发Dao(一)
- 菱形的编译
- Java 对象序列化
- 1018: [SHOI2008]堵塞的交通traffic
- 【LeetCode】183、Customers Who Never Order
- Oracle数据库基本语句练习
- [莫比乌斯反演] BZOJ1101: [POI2007]Zap
- Axure RP 8管理团队项目中遇到的问题
- HDU 1242-Rescue