版权声明:有一种生活不去经历不知其中艰辛,有一种艰辛不去体会,不会知道其中快乐,有一种快乐,没有拥有不知其中纯粹 https://blog.csdn.net/wwwzydcom/article/details/82989041
pom.xml设置依赖
<!-- mybatis jar 包依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<!-- 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
<!-- log4j日志打印 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
mybatis的全局配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!-- mybatis 框架头文件声明,类似spring环境,均需要加入头文件 -->
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--添加数据库连接的相关配置-->
<configuration>
<properties resource="jdbc.properties"></properties>
<typeAliases>
<package name="com.sxt.po"></package>
</typeAliases>
<environments default="development">
<environment id="development">
<!--加入事务控制-->
<transactionManager type="jdbc"></transactionManager>
<!--配置数据库的连接信息-->
<dataSource type="pooled">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<package name="com.sxt.mapper"/>
</mappers>
</configuration>
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
jdbc.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/mybatis01
username=root
password=123456
配置UserMapper的配置文件和同名的接口文件
<?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.sxt.mapper.UserMapper">
<sql id="base">
id,userName,userPwd,realName,nation,cardId
</sql>
<!--单个查询-->
<select id="queryUserById" parameterType="int" resultType="user">
SELECT <include refid="base" /> FROM user where id=#{id}
</select>
<!--通过名字查找-->
<select id="queryUserByName" parameterType="string" resultType="user">
SELECT <include refid="base" /> FROM user WHERE userName=#{userName}
</select>
<!--通过名字和id查找-->
<select id="queryUserByMap" parameterType="map" resultType="user">
SELECT <include refid="base" /> FROM user WHERE userName=#{userName} AND id=#{id}
</select>
<!--通过用户查找-->
<select id="queryUserByUser" parameterType="user" resultType="user">
SELECT <include refid="base" /> FROM user WHERE userName=#{userName} AND id=#{id}
</select>
<!--查找用户总数-->
<select id="queryUserTotal" resultType="int">
SELECT count(*) from user
</select>
<!--查找用户名-->
<select id="queryUserNameById" parameterType="int" resultType="string">
SELECT userName FROM user WHERE id=#{id}
</select>
<!--通过map查找用户map,以字段名为key,表字段的值为value-->
<select id="queryUserMapById" parameterType="int" resultType="map">
SELECT * FROM user WHERE id=#{id}
</select>
<!--模糊查询,查询数据库中同一类的-->
<select id="queryUserByParams" parameterType="string" resultType="user">
SELECT <include refid="base" /> FROM user WHERE userName LIKE concat('%',#{userName},'%')
</select>
<!--在crud中,除了查询外其他的类型都无需指定返回的类型-->
<!--添加操作-->
<insert id="addUser" parameterType="user">
INSERT INTO user (id, userName, userPwd, realName, nation, cardId)
VALUES (#{userName},#{userPwd},#{realName},#{nation},#{cardId})
</insert>
</mapper>
定义接口
package com.sxt.mapper;
import com.sxt.po.User;
import java.util.List;
import java.util.Map;
public interface UserMapper {
//查询语句
public User queryUserById(Integer id);
//通过名字查询
public User queryUserByName(String username);
//通过名字和id查找
public User queryUserByMap(Map map);
//通过用户查找
public User queryUserByUser(User user);
//查询总数
public Integer queryUsertTotal();
//查找用户名
public String queryUserNameById(Integer id);
//查找用户map,以字段名为key,表字段的值为value
public Map queryUserMapById(Integer id);
//模糊查询,查询数据库中同一类的
public List<User> queryUserByParams(String username);
//插入操作
public Integer addUser(User user);
}
以及接口的实现类
package com.sxt.mapper.impl;
import com.sxt.mapper.UserMapper;
import com.sxt.po.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import java.util.List;
import java.util.Map;
public class UserMapperImpl implements UserMapper{
private SqlSessionFactory sqlSessionFactory;
public UserMapperImpl(SqlSessionFactory sqlSessionFactory) {
this.sqlSessionFactory = sqlSessionFactory;
}
@Override
//简单查询
public User queryUserById(Integer id) {
SqlSession sqlSession = null;
User user = null;
try {
sqlSession = sqlSessionFactory.openSession();
user=sqlSession.selectOne("com.sxt.mapper.UserMapper.queryUserById",id);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession!=null)
sqlSession.close();
}
return user;
}
@Override
//通过名字查询
public User queryUserByName(String username) {
SqlSession sqlSession = null;
User user = null;
try {
sqlSession = sqlSessionFactory.openSession();
user = sqlSession.selectOne("com.sxt.mapper.UserMapper.queryUserByName",username);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession !=null){
sqlSession.close();
}
}
return user;
}
@Override
//通过名字和id查找
public User queryUserByMap(Map map) {
SqlSession sqlSession = null;
User user = null;
try {
sqlSession = sqlSessionFactory.openSession();
user = sqlSession.selectOne("com.sxt.mapper.UserMapper.queryUserByMap",map);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession !=null){
sqlSession.close();
}
}
return user;
}
@Override
//通过用户查找
public User queryUserByUser(User user2) {
SqlSession sqlSession = null;
User user = null;
try {
sqlSession = sqlSessionFactory.openSession();
user = sqlSession.selectOne("com.sxt.mapper.UserMapper.queryUserByUser",user2);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession !=null){
sqlSession.close();
}
}
return user;
}
@Override
//查询总数
public Integer queryUsertTotal() {
SqlSession sqlSession = null;
Integer total = null;
try {
sqlSession = sqlSessionFactory.openSession();
total = sqlSession.selectOne("com.sxt.mapper.UserMapper.queryUserTotal");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession !=null){
sqlSession.close();
}
}
return total;
}
@Override
public String queryUserNameById(Integer id) {
SqlSession sqlSession = null;
String username = null;
try {
sqlSession = sqlSessionFactory.openSession();
username = sqlSession.selectOne("com.sxt.mapper.UserMapper.queryUserNameById",id);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession !=null){
sqlSession.close();
}
}
return username;
}
@Override
public Map queryUserMapById(Integer id) {
SqlSession sqlSession = null;
Map map = null;
try {
sqlSession = sqlSessionFactory.openSession();
map = sqlSession.selectOne("com.sxt.mapper.UserMapper.queryUserMapById",id);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession !=null){
sqlSession.close();
}
}
return map;
}
@Override
//模糊查询,查询数据库中同一类的
public List<User> queryUserByParams(String username) {
SqlSession sqlSession = null;
List<User> userList = null;
try {
sqlSession = sqlSessionFactory.openSession();
userList = sqlSession.selectList("com.sxt.mapper.UserMapper.queryUserByParams",username);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession !=null){
sqlSession.close();
}
}
return userList;
}
@Override
public Integer addUser(User user) {
return null;
}
}
测试实现类
package com.sxt.mapper.impl;
import com.sxt.mapper.UserMapper;
import com.sxt.po.User;
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.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class UserMapperImplTest {
private UserMapperImpl userMapper;
@Before
public void before() throws IOException {
InputStream is = Resources.getResourceAsStream("mybaties.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
userMapper = new UserMapperImpl(sqlSessionFactory);
//通过反射动态生成,不用写实现类
//SqlSession session = sqlSessionFactory.openSession();
//userMapper=session.getMapper(UserMapper.class)
}
@Test
//测试通过id查询
public void queryUserById(){
User user = userMapper.queryUserById(1);
System.out.println(user);
}
@Test
//测试通过name查询
public void queryUserByName(){
User user = userMapper.queryUserByName("1");
System.out.println(user);
}
//通过名字和id查询
@Test
public void queryUserByMap(){
Map map = new HashMap();
map.put("id",1);
map.put("userName","1");
User user = userMapper.queryUserByMap(map);
System.out.println(user);
}
//通过用户名查找
@Test
public void queryUserByUser(){
User user1 = new User();
user1.setId(1);
user1.setUserName("1");
User user = userMapper.queryUserByUser(user1);
System.out.println(user);
}
//查询总数
@Test
public void queryUsertTotal()throws Exception{
Integer total = userMapper.queryUsertTotal();
System.out.println("total:"+total);
}
// java.lang.IllegalArgumentException 出现错误,方法的参数不匹配 实现类中自己多写了一个字母
//通过用户id查询用户名
@Test
public void queryUserNameById(){
String username = userMapper.queryUserNameById(1);
System.out.println("username:"+username);
}
//-通过map查找用户map,以字段名为key,表字段的值为value
@Test
public void queryUserMapById(){
Map map = userMapper.queryUserMapById(1);
System.out.println("username:"+map.get("userName"));
System.out.println("id:"+map.get("id"));
System.out.println("nation:"+map.get("nation"));
}
//模糊查询,查询数据库中同一类的
@Test
public void queryUserByParams(){
List<User> list= userMapper.queryUserByParams("1");
System.out.println("size"+list.size());
for (User user:list){
System.out.println(user);
}
}
@Test
public void addUser(){
}
}