Java的MyBatis框架项目搭建与hellow world示例

网友投稿 194 2023-07-15


Java的MyBatis框架项目搭建与hellow world示例

新建项目(我使用的是maven项目)mybatis-study-01

一、加入mybatis与mysql-connector依赖包到pom文件

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

mybatis

mybatis-study-01

0.0.1-SNAPSHOT

jar

mybatis-01

<url>http://maven.apache.org

UTF-8

junit

junit

4.10

test

org.mybatis

mybatis

3.2.3

mysql

mysql-connector-java

5.1.27

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

mybatis

mybatis-study-01

0.0.1-SNAPSHOT

jar

mybatis-01

<url>http://maven.apache.org

UTF-8

junit

junit

4.10

test

org.mybatis

mybatis

3.2.3

mysql

mysql-connector-java

5.1.27

二、创建数据库mybatis-test

新建一张user表用于测试。建表sql如下:

CREATE TABLE `user` (

`id` int(11) NOT NULL auto_increment,

`password` varchar(255) default NULL,

`user_name` varchar(50) default NULL,

`user_age` int(11) default NULL,

`user_address` varchar(200) default NULL,

PRIMARY KEY (`id`),

UNIQUE KEY `userName` (`user_name`)

) EN

插入一条数据

INSERT INTO `user` VALUES ('1', '123131', 'summer', '100', 'shanghai,pudong');

三、在项目中编写pojo对象。

package com.zf.mybatis.pojo;

public class User {

private int id;

private String password ;

private String userName;

private String userAge;

private String userAddress;

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 getUserAge() {

return userAge;

}

public void setUserAge(String userAge) {

this.userAge = userAge;

}

public String getUserAddress() {

return userAddress;

}

public void setUserAddress(String userAddress) {

this.userAddress = userAddress;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

}

四、编写pojo对应的映射文件User.xml

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

id , password , user_name as userName , user_age as userAge , user_address as userAddress

select

from `user` where id = #{id}

insert into `user`

(password , user_name , user_age , user_address)

values(#{password} , #{userName} , #{userAge} , #{userAddress} )

update `user`

set password = #{password} , user_name = #{userName}, user_age = #{userAge}, user_address = #{userAddress}

where id = #{id}

delete from `user` where id = #{id}

注意:上面的namespace的值为com.zf.mybatis.pojo.UserMapper,可以自定义 ,UserMapper不是一个类,不需要存在的。

另外,mybatis会将从数据库查询出来的记录根据列名与pojo中的字段进行匹配, 所以上面的user_name,user_age ,user_address这几个字段都取了别名,跟pojo中的字段相对应。 如果不起别名, 查询出来的对象,这几个字段是没有值的。

五、编写mybatis的配置文件mybatis-config.xml

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

在该配置文件中配置了数据库的链接方式,以及注册所有的映射文件,还可以设置mybatis的一些参数。

现在就可以编写测试类了。来测试一下。

package com.zf.mybatis;

import java.io.IOException;

import java.io.Reader;

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 com.zf.mybatis.pojo.User;

public class TestMyBatis {

private SqlSessionFactory sqlSessionFactory;

private Reader reader;

@Before

public void init(){

try {

reader = Resources.getResourceAsReader("mybatis-config.xml");

sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);

} catch (IOException e) {

e.printStackTrace();

}

}

@Test

public void testQueryUser(){

SqlSession session = sqlSessionFactory.openSession();

try {

User user = (User) session.selectOne("com.zf.mybatis.pojo.UserMapper.selectByID" ,1);

System.out.println(user.getUserAddress());

System.out.println(user.getUserName());

} finally {

session.close();

}

}

@Test

public void testInsertUser(){

SqlSession session = sqlSessionFactory.openSession();

try {

User user = new User() ;

user.setUserName("abcde");

user.setUserAge(15) ;

user.setUserAddress("hangzhou/zhejiang");

user.setPassword("123456");

//返回值是记录条数

int resultCount = session.insert("com.zf.mybatis.pojo.UserMapper.add", user );

session.commit() ;

System.out.printf("userID:%d,总记录条数:%d" , user.getId() , resultCount); //获取插入对象的id

} finally {

session.close();

}

}

@Test

public void testUpdateUser(){

SqlSession session = sqlSessionFactory.openSession();

try {

User user = new User() ;

user.setId(5) ;

user.setUserName("updateName");

user.setUserAge(101) ;

user.setUserAddress("shenzhen/guangdong");

user.setPassword("000000");

//返回值是修改条数

int updateCount = session.update("com.zf.mybatis.pojo.UserMapper.update", user );

session.commit() ;

System.out.printf("修改条数:%d" ,updateCount);

} finally {

session.close();

}

}

@Test

public void testDelete(){

SqlSession session = sqlSessionFactory.openSession();

try {

//返回值是删除条数

int deleteCount = session.update("com.zf.mybatis.pojo.UserMapper.deleteById", 4 );

session.commit() ;

System.out.printf("删除条数:%d" ,deleteCount );

} finally {

session.close();

}

}

}

运行testQueryUser结果如下:

shanghai,pudong

summer

到此,一个mybatis的helloworld类型的小程序就出来了。

PS:MyBaits配置文件报错解决

Mybaits的配置文件校验很诡异,节点的位置还有要求

如下,会报错:

The content of element type "configuration" must match "(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,plugins?,environments?,mappers?)".

"http://mybatis.org/dtd/mybatis-3-config.dtd">

把typeAliases放到最上面就好了说:

"http://mybatis.org/dtd/mybatis-3-config.dtd">


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java环境中MyBatis与Spring或Spring MVC框架的集成方法
下一篇:深入理解node exports和module.exports区别
相关文章

 发表评论

暂时没有评论,来抢沙发吧~